線性迴歸:波士頓房價預測

擊上方
「藍色字」
可關注咱們!


今日分享:模型評估 波士頓房價預測 web


一:流程數組

  1. 波士頓地區房價數據獲取,數據來自於sklearn自帶數據集;微信

  2. 波士頓地區房價數據分割;性能

  3. 訓練與測試數據標準化處理;學習

  4. 使用最簡單的線性迴歸模型LinearRegression和梯度降低估計SGDRegressor對房價進行預測測試


二:數據集介紹大數據


因爲以前已介紹過如何查看自帶數據集的各項信息,這裏再也不贅述,可參考K-近鄰:鳶尾花(iris數據集)分類優化


三:迴歸性能評價 -- 均方偏差spa


(均方偏差(Mean Squared Error)MSE) .net

括號中 前者爲預測值,後者爲平均值真實值


sklearn迴歸評估API


均方偏差迴歸評估API
mean_squared_error

mean_squared_error(y_true, y_pred)
均方偏差迴歸損失
y_true:真實值
y_pred:預測值
return:浮點數結果

注:真實值,預測值爲標準化以前的值


四:代碼演示


from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
import numpy as np


def mylinear():
   '''線性迴歸預測房子價格'''
   
   #獲取數據
   lb = load_boston()
#     print(lb.data.shape)
   
   #分割數據集到訓練集和測試集
   x_train,x_test,y_train,y_test = train_test_split(lb.data,lb.target,test_size=0.25)
   
   #線性迴歸
   #特徵值和目標值都必須進行標準化處理
   #實例標準化
   std_x = StandardScaler()
   
   x_train = std_x.fit_transform(x_train)
   x_test = std_x.transform(x_test)
   
   
   #目標值標準化
   std_y = StandardScaler()
   
   #須要將一維數組形式的
   y_train = std_y.fit_transform(y_train.reshape(-1,1))
   y_test = std_y.transform(y_test.reshape(-1,1))
   
   '''正規方程房價迴歸'''
   #實例化
   lr = LinearRegression()
   
   lr.fit(x_train,y_train)
   
   print('\n正規方程預測係數:')
   print(lr.coef_)
   
   y_lr_predict = std_y.inverse_transform(lr.predict(x_test))
#     print('\n正規方程預測房價結果: ')
#     print(y_lr_predict)
   
   print("\n正規方程的均方偏差:\n", mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict))

   '''梯度降低房價預測'''
   sgd = SGDRegressor()
   
   sgd.fit(x_train, y_train)
   
   print('\n梯度降低預測係數')
   print(sgd.coef_)
   
   y_sgd_predict = std_y.inverse_transform(sgd.predict(x_test))
#     print('\n梯度降低預測房價結果: ')
#     print(y_sgd_predict)
   
   print("\n梯度降低的均方偏差:\n", mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict))
   
   
if __name__ == '__main__':
   mylinear()


輸出結果

正規方程預測係數:
[[-0.08360681  0.15373615  0.02480098  0.08251741 -0.23486123  0.30338074
 -0.03765651 -0.37289693  0.30167118 -0.25215956 -0.23483065  0.08729726
 -0.35453057
]]

正規方程的均方偏差:
21.01679559906273

梯度降低預測係數
[-0.05126309  0.09458204 -0.04955082  0.0962106  -0.1049907   0.35959731
-0.03206284 -0.22670858  0.0850546  -0.05543759 -0.20566718  0.08932997
-0.32506289
]

梯度降低的均方偏差:
20.86565216258738


由輸出結果對比二者的均方偏差,該次運行結果SGD效果較好


須要注意的是


  1. 在數據量小的時候,每每正規方程的效果是比較好的,本次波士頓數據集有500+個樣本,這數量很小,小編在運行的時候正規方程效果佔上風的次數明顯多於梯度降低;各位不妨找更大數據量的數據集來驗證SGD的優越性。

  2. 線性迴歸是最爲簡單、易用的迴歸模型,但這一特色在某種程度上也限制了其適用範圍,儘管如此,在不知道特徵之間關係的前提下,咱們仍然使用線性迴歸做爲大多數業務的首要選擇。

  3. 小規模數據:LinearRegression(不能解決擬合問題,後續會介紹優化的迴歸模型)以及其它;

  4. 大規模數據:SGDRegressor




Python基礎知識集錦

爬蟲專題文章整理篇!!!

Python數據分析乾貨整理篇

Matplotlib數據可視化專題集錦貼



公衆號     QQ羣

掃QQ羣二維碼進交流學習羣

或在後臺回覆:加羣

本文分享自微信公衆號 - 數據指南(BigDataDT)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索