Python 执行代码时得到错误的答案

Python 执行代码时得到错误的答案,python,machine-learning,linear-regression,unsupervised-learning,Python,Machine Learning,Linear Regression,Unsupervised Learning,当我执行代码时,我得到的av_Ein为0,但答案(av_Ein)接近于0.01。 请帮我找出错误。 **给定问题** 在这些问题中,我们将探讨分类的线性回归是如何工作的。与作业#1中的感知器学习算法一样,您将创建自己的目标函数f和数据集D。取D=2,这样您就可以可视化问题,并假设X=[−1,1] × [−1,1],每个x的拾取概率相同∈ X.在每次运行中,选择平面中的一条随机线作为目标函数f(通过在平面中选取两个随机、均匀分布的点来实现)[−1,1]×[−1,1]并取通过它们的线),其中线的一侧

当我执行代码时,我得到的av_Ein为0,但答案(av_Ein)接近于0.01。 请帮我找出错误。 **给定问题**

在这些问题中,我们将探讨分类的线性回归是如何工作的。与作业#1中的感知器学习算法一样,您将创建自己的目标函数f和数据集D。取D=2,这样您就可以可视化问题,并假设X=[−1,1] × [−1,1],每个x的拾取概率相同∈ X.在每次运行中,选择平面中的一条随机线作为目标函数f(通过在平面中选取两个随机、均匀分布的点来实现)[−1,1]×[−1,1]并取通过它们的线),其中线的一侧映射到+1,另一侧映射到−1.选择数据集的输入xn作为随机点(均匀地在X中),并计算每个xn上的目标函数,以获得相应的输出yn

取N=100。使用线性回归确定g并评估Ein,即样本点中分类错误的分数。重复实验1000次,取平均值(保留g,因为它们将在问题6中再次使用)。以下哪个值最接近平均Ein?(最接近的选项是使表达式|成为您的答案−给定选项|最接近0。在此处和整个过程中使用最接近的定义

我的代码

import numpy as np
import pandas as pd
import math
from numpy.linalg import inv
import matplotlib.pyplot as plt
from sklearn import datasets, linear_model

av_Ein =0
for P in range(0,1000):
    #Target Line calculation
    line = {}#Target Line
    x1,y1 = np.random.uniform(-1,1,2)
    x2,y2 = np.random.uniform(-1,1,2)
    m = (y2-y1)/(x2-x1)
    line['x'] = m
    line['y'] = -1
    line['c'] = y1-m*x1
    X = np.random.uniform(-1,1,(100,2))
    X = np.c_[np.ones(100),X]
    #------
    #Target calculation

    Y =[]#Target
    for i in range(0,100):
        Y.append(line['c']*1+line['x']*X[i][1]+line['y']*X[i][2])

    #------
    #For calculating the weight function W = pseudoinverse(X) x Y

    X_tran = X.transpose()
    temp_1 = np.matmul(X_tran,X)
    temp_inv = inv(temp_1)
    temp_1 = np.matmul(temp_inv,X_tran)
    W = np.matmul(temp_1,Y)

    #end of calculation

    #E_in(insample error) claculation for this final hypothesis

    E_in=0#(No of times the final hypothesis not matching with target /len(Target))

    #No of misclassified insample points

    for k in range(0,100):
        if np.sign(X[k][0]*W[0]+X[k][1]*W[1]+X[k][2]*W[2]) != np.sign(Y[k]):
            E_in = E_in+1
        #E_in = E_in+math.pow((lm.predict([X[k]])-Y[k]),2)

    #---

    E_in = E_in/100#E_in calculation
    av_Ein = av_Ein+E_in

av_Ein = av_Ein/1000 #(AVg of all the insmple error)
print(av_Ein)

你开始时把
E_in
作为一个整数,但当你到达
E_in=E_in/100
时,我想你期望它是一个
float
@quamrana E_in是输入样本中的错误,这只是输入样本中错误分类的概率。在做线性回归后,我们正在发现它是如何与输入保持一致的样本根据我的代码输出,每个点都被正确分类。