機器學習之linear_model(普通最小二乘法)

y=wi*xi+b
基於最小二乘法的線性迴歸:尋找參數w和b,使得w和b對x_test_data的預測值y_pred_data與真實的迴歸目標y_test_data之間的均方誤差最小。

公式推導:
在這裏插入圖片描述
基於最小二乘法構造linear_model有5個步驟:
1、導包。

from sklearn import linear_model
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error

sklearn中有專門的線性模型包linear_model,numpy用於生成數據,matplotlib用於畫圖,另外導入MSE,R_Square和MAE三個評價指標。
2、構造數據集。可以自動生成數據,也可以尋找現有數據,以下數據是作業中的數據,樣本數據只有一個特徵。
3、訓練模型。
4、輸出係數w和截距b並對測試集進行預測。
5、作圖。

完整代碼:

from sklearn import linear_model
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error

x_train_data=np.array([383.,323.,328.,207.,226.,25.,179.,60.,208.,606.]).reshape(-1,1)  #變成一個向量
y_train_data=np.array([640.,633.,619.,393.,428.,27.,193.,66.,226.,1591.])

x_test_data=np.array([385.,145.,258.,254.,100.,47.,58.,79.,415.,144.,156.,149.,20.,25.]).reshape(-1,1)
y_test_data=np.array([840.,195.9,588.3,499.4,77.,-100.8,-96.,-88,950.8,199.3,230.5,233.,-160.,-118.])

#訓練模型
lr=linear_model.LinearRegression()
lr.fit(x_train_data,y_train_data)
y_pred=lr.predict(x_test_data)

#輸出係數和截距
print('w:',lr.coef_,'b:',lr.intercept_)
#輸出評價指標
print('MSE:',mean_squared_error(y_test_data,y_pred))
print('MAE:',mean_absolute_error(y_test_data,y_pred))
print('R Squared:',r2_score(y_test_data,y_pred))

#顯示
plt.scatter(x_test_data, y_test_data,  color='black')
plt.plot(x_test_data, y_pred, color='blue', linewidth=3)
plt.show()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章