基本流程
- 加載數據
- 切分數據集
- 訓練
- 預測
- 評估
值得注意的是,在對數據預處理的時候,沒有歸一化這一步驟,這是因為這個算法在實現過程中有沒有歸一化對結果沒有影響
導包
將需要用到的庫都導進來
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
加載數據
所用數據是sklearn自帶數據庫中波士頓房價的數據
boston = datasets.load_boston()
X = boston.data
y = boston.target
因為數據可能會有一些問題,所以對數據進行預處理:
X = X[y < 50.0]
y = y[y < 50.0]
切分數據
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=66)
訓練
lin = LinearRegression()
lin.fit(X_train, y_train)
對于線性模型,是有系數的,X矩陣中每個x都有一個系數,將其存儲在實例中的coef_屬性中;
每個模型函數還存在一個截距,存儲在實例的intercept_屬性中
lin.coef_
lin.intercept_
評估
因為只是想看結果的準確程度,并不想得到預測結果,所以可以直接調用對象實例的score()方法查看評估結果
lin.score(X_test, y_test)
而且經過測試可知,無論是否歸一化數據,最后得到的結果是不變的
-
數學原理:
score方法得到的值就是R^2的值
最后得到R平方值的范圍一般是0到1之間,值越大表示算法的效果越好