1. 程式人生 > >skleran 學習路徑一 線性迴歸模型預測

skleran 學習路徑一 線性迴歸模型預測

使用sklearn 裡面的datasets 內建資料集波士頓的房價 來測試這個模型
首先匯入

from sklearn import datasets
loaded_data = datasets.load_boston()#波士頓房價預測
data_x = loaded_data.data
data_y = loaded_data.target

然後使用打出來的資料觀察資料型別,確定資料的的測試集訓練集

# print(loaded_data)
# print(data_x)
# print(data_y)
# print(data_x.shape)
# print(data_y.shape)

#可以看出有13個特徵值  506個樣本一個標籤預測值

匯入sklearn裡面的linearRegression模型,並且劃分測試集訓練集,建立模型

在這裡from sklearn import model_selection 
x_train,x_test,y_train,y_test=model_selection.train_test_split(data_x,data_y,test_size=0.25)
from sklearn.linear_model import LinearRegression
linreg=LinearRegression()
linregTr=linreg.fit(x_train,y_train)
test_pred=linreg.predict(x_test)插入程式碼片

輸出線性迴歸的截距和係數矩陣

print(linregTr.coef_)
print(linregTr.intercept_)

對模型進行效能分析

在這裡from sklearn import metrics 
mse_score=metrics.mean_squared_error(y_test,test_pred)
print('均方差',mse_score)
score_pred=linregTr.score(x_test,y_test)
print('準確率',score_pred)

from sklearn.model_selection import cross_val_predict 
predicted=cross_val_predict(linregTr,data_x,data_y,cv=10)
print('交叉驗證後的mse_error',metrics.mean_squared_error(data_y,predicted))插入程式碼片

畫圖直觀感受一下模型預測

在這裡import matplotlib.pyplot as plt 
fig,axe=plt.subplots()
axe.scatter(y_test,test_pred,color='y',marker='o')
axe.scatter(data_y,predicted,color='b')
axe.scatter(data_y,data_y,color='g',marker='*')
plt.show()插入程式碼片

完整程式碼如下

在這裡插入from sklearn import datasets
loaded_data = datasets.load_boston()#波士頓房價預測
data_x = loaded_data.data
data_y = loaded_data.target
# print(loaded_data)
# print(data_x)
# print(data_y)
# print(data_x.shape)
# print(data_y.shape)

#可以看出有13個特徵值  506個樣本一個標籤預測值
from sklearn import model_selection 
x_train,x_test,y_train,y_test=model_selection.train_test_split(data_x,data_y,test_size=0.25)
from sklearn.linear_model import LinearRegression
linreg=LinearRegression()
linregTr=linreg.fit(x_train,y_train)
test_pred=linreg.predict(x_test)
print(linregTr.coef_)
print(linregTr.intercept_)

from sklearn import metrics 
mse_score=metrics.mean_squared_error(y_test,test_pred)
print('均方差',mse_score)
score_pred=linregTr.score(x_test,y_test)
print('準確率',score_pred)

from sklearn.model_selection import cross_val_predict 
predicted=cross_val_predict(linregTr,data_x,data_y,cv=10)
print('交叉驗證後的mse_error',metrics.mean_squared_error(data_y,predicted))

import matplotlib.pyplot as plt 
fig,axe=plt.subplots()
axe.scatter(y_test,test_pred,color='y',marker='o')
axe.scatter(data_y,predicted,color='b')
axe.scatter(data_y,data_y,color='g',marker='*')
plt.show()程式碼片

在這裡插入圖片描述
能明顯看出線性迴歸模型對於偏差資料表現異常明顯,所以資料在訓練之前的處理就顯得異常重要,換句話說也就是容易過擬合,此時採用其他的模型更加好一點,但是選擇小資料判斷時,線性迴歸模型絕對是首選