2
我一直在试图做我自己的一个简单的线性回归算法的实现,但我有一些梯度下降的麻烦。python线性回归实现
这里是我如何编码它:
def gradientDescentVector(data, alpha, iterations):
a = 0.0
b = 0.0
X = data[:,0]
y = data[:,1]
m = data.shape[0]
it = np.ones(shape=(m,2))
for i in range(iterations):
predictions = X.dot(a).flatten() + b
errors_b = (predictions - y)
errors_a = (predictions - y) * X
a = a - alpha * (1.0/m) * errors_a.sum()
b = b - alpha * (1.0/m) * errors_b.sum()
return a, b
现在,我知道这不会有更多的变数很好地扩展,但我只是用简单的版本首先尝试,并从那里跟进。
我下面从机器在coursera学习课程的梯度下降算法:
但经过〜90次迭代我得到无限值(在特定的数据集),并且没有现在已经能够把我的头包裹起来了。
我已经尝试迭代每个值之前,我了解numpy的广播,并获得相同的结果。
如果任何人都可以对这里可能存在的问题有所了解,那就太好了。
我已经试过0.001,它不工作,但我再次尝试以更低的学习率,0.0000001,它开始正常工作,谢谢你! 我没有使用任何类型的错误函数,也许我会试着看看它后。 – msk