簡體   English   中英

python線性回歸實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM