【问题标题】:Is this a good result for normal equations,if not how do I know it's good for data set?这对正规方程来说是一个好的结果吗,如果不是,我怎么知道它对数据集有好处?
【发布时间】:2016-10-12 13:54:39
【问题描述】:

我正在尝试学习机器学习的正规方程,但我不确定这个结果是否正确。参数太高了,我找不到这个参数的假设,这就是我的意思:

数据集:

2104,5,1,45,460
1416,3,2,40,232
1534,3,2,30,315
852,2,1,36,178

当我运行代码时,我正在获取参数 (theta)

[4.74289062e+02  1.65405273e-01  -4.68750000e+00  -1.16445312e+02
 -2.13281250e+00]

但是这些数字太高了。这是正常的吗?此外,在我的代码的最后一行,我尝试仅为我的第一个数据集元素 (2104,5,1,45,460) 打印假设,但它给了我这样的错误:

print (q[0]*x[0][0])+(q[1]*x[0][1])+(q[2]*x[0][2])+(q[3]*x[0][3])+(q[4]*x[0][4])
  IndexError: index out of bounds

我的代码:

data = np.loadtxt('bib', delimiter=',');
x=data[:,0:4];
y=data[:,4];
a=np.ones(shape=(y.size,x[0].size+1));
a[:,1:5]=x;
A=np.linalg.inv(a.transpose().dot(a));
B=np.dot(a.transpose(),y);
q=A.dot(a.transpose()).dot(y);
##print (q[0]*x[0][0])+(q[1]*x[0][1])+(q[2]*x[0][2])+(q[3]*x[0][3])+(q[4]*x[0][4])

我对这些结果并不满意。我怎样才能确保这些结果是真实的,我应该如何用这些参数找到我的假设?

【问题讨论】:

    标签: python machine-learning normalization linear-regression


    【解决方案1】:

    但是这些数字太高了。这正常吗?

    您的数据未标准化/缩放,您的值很大 (~1e2),因此回归系数相同。

    我试图为我的第一个数据集元素 (2104,5,1,45,460) 打印假设,但它给了我这样的错误:

    错误是合理的 - 您的数据有 4 个维度,并且您尝试索引 5 个值。当您使用 1 列“a”作为偏差项时,您的假设形式如下:

    h(x) = <q, [1 x]> = q0 + q1*x0 + q2*x1 + q3*x2 + q4*x3
    

    因此在代码中(使用您的符号和约定):

    def h(x):
       a = np.ones(x.shape[0], x.shape[1] + 1)
       a[:, 1:5] = x
       return a.dot(q)
    

    我怎样才能确保这些结果是真实的

    您可以将它们与许多现有实现进行比较。您还可以创建一个虚拟测试集,其中 y is 实际上是 x 的线性组合,并检查您是否得到 0 错误。

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多