1. 程式人生 > 其它 >機器學習中線性迴歸python程式設計注意事項

機器學習中線性迴歸python程式設計注意事項

技術標籤:python機器學習

先把公式列在這裡方便表述:

我們設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. 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一下。