機器學習中線性迴歸python程式設計注意事項
阿新 • • 發佈:2021-01-15
先把公式列在這裡方便表述:
我們設x0永遠為1 ,用來表示 y = kx+b 中的 b
因此,後面的式子就可以表述為:
data.insert(0, 'Ones', 1)
cols = data.shape[1]
# 取前cols-1列為輸入向量
X = data.iloc[:,0:cols-1]
# 取最後一列為目標向量
y = data.iloc[:,cols-1:cols]
X = np.array(X.values)
y = np.array(y.values)
因為python已經不推薦matrix了,所以我們就用array
注意我們在算梯度的時候:
theta - np.multiply((alpha / m) ,np.dot(np.dot(X,theta.T).reshape(1,-1) - y.T, X))
其中np.dot表示的是矩陣相乘,需要隨時注意相乘以後的行和列,因為np.dot(X,theta.T)計算完後產生的是n行1列的資料,(假設相乘以後是全0)則表示為了:
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0.]
而shape是(n,)
但用於下面的計算的矩陣必須得是(n,1),所以需要reshape一下。