[英]python linear regression implementation
我一直在嘗試自己實現一個簡單的線性回歸算法,但是我在梯度下降方面遇到了一些麻煩。
這是我編碼的方式:
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 的廣播之前,我已經嘗試遍歷每個值並獲得相同的結果。
如果有人能闡明這里可能存在的問題,那就太好了。
很明顯,參數偏離了最佳參數。 一個可能的原因可能是您使用的學習率值(“alpha”)太大。 嘗試降低學習率。 這是一個經驗法則。 總是從一個小的值開始,比如 0.001。 然后嘗試通過將學習率提高三倍來提高學習率。 如果它給出較少的 MSE 錯誤(或您使用的任何錯誤函數),那么它很好。 如果不是,請嘗試取一個介於 0.001 和 0.003 之間的值。 接下來,如果后者成立,則遞歸嘗試,直到達到令人滿意的 MSE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.