对于正规方程,这是一个很好的结果,如果不是,我怎么知道它对数据集有好处?

时间:2016-06-11 19:41:06

标签: python machine-learning normalization linear-regression

我试图学习ML的正规方程,但我不确定这个结果是否正确。参数太高而且我找不到这个参数的假设,这就是我的意思:

数据集:

.|key('group', position())

当我运行代码时,我需要参数(theta)

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

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

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

我的代码:

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

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

1 个答案:

答案 0 :(得分:0)

  

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

您的数据未标准化/缩放,您的值很大(~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 实际上是x的线性组合,并检查是否得到0错误。