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