【Python】Sklearn线性回归模型预测波士顿房价并绘图
生活随笔
收集整理的這篇文章主要介紹了
【Python】Sklearn线性回归模型预测波士顿房价并绘图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
波士頓房價
這是 sklearn.datasets 里的一種 Toy Dataset ,包含503個美國波士頓房價的觀測值,是內置的小數據集,也是研究回歸算法的優秀數據集。
Python編程實現
import matplotlib.pyplot as plt import matplotlib.font_manager as fm import numpy as np import pandas as pd from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn import metrics from sklearn.metrics import r2_score# 從讀取的房價數據存儲在boston變量中 boston = load_boston()# 打印boston包含的內容 print(boston.keys())# 打印data的變量名 print(boston.feature_names)# 將data轉換為DataFrame格式以方便顯示 bos = pd.DataFrame(boston.data) # data的第6列數據為RM print(bos[5].head())# 將data轉換為DataFrame格式以方便顯示 bos_target = pd.DataFrame(boston.target) print(bos_target.head())# 選取data中的RM變量 x = bos.iloc[:, 5:6] # 設定target為y y = bos_target # 定義自定義字體,文件名是系統中文字體 myfont = fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc') plt.scatter(x, y) # x軸標簽設定文字為中文msyh格式 plt.xlabel(u'住宅平均房間數', fontproperties=myfont) # y軸標簽設定文字為中文msyh格式 plt.ylabel(u'房地產價格', fontproperties=myfont) # 標題 plt.title(u'RM與MEDV的關系', fontproperties=myfont) plt.show()# 把x、y轉化為數組形式,便于計算 x = np.array(x.values) y = np.array(y.values) # 以25%的數據構建測試樣本,剩余作為訓練樣本 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25) print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)# 設定回歸算法 lr = LinearRegression() # 使用訓練數據進行參數求解 lr.fit(x_train, y_train) # LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) print('求解系數為:', lr.intercept_) print('求解系數為:', lr.coef_)# 對測試集的預測 y_hat = lr.predict(x_test) # 打印前10個預測值 y_hat[0:9] # y_test與y_hat的可視化 # 設置圖片尺寸 plt.figure(figsize=(10, 6)) # 創建t變量 t = np.arange(len(x_test)) # 繪制y_test曲線 plt.plot(t, y_test, 'r', linewidth=2, label='y_test') # 繪制y_hat曲線 plt.plot(t, y_hat, 'g', linewidth=2, label='y_train') # 設置圖例 plt.legend() plt.show()# 擬合優度R2的輸出方法1 print("r2:", lr.score(x_test, y_test))# 擬合優度R2的輸出方法2 print("r2_score:", r2_score(x_test, y_hat))# 用Scikit_learn計算MAE print("MAE:", metrics.mean_absolute_error(y_test, y_hat))# 用Scikit_learn計算MSE print("MSE:", metrics.mean_squared_error(y_test, y_hat))# 用Scikit_learn計算RMSE print("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat)))繪圖
輸出
dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename']) ['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO''B' 'LSTAT'] 0 6.575 1 6.421 2 7.185 3 6.998 4 7.147 Name: 5, dtype: float640 0 24.0 1 21.6 2 34.7 3 33.4 4 36.2 (379, 1) (127, 1) (379, 1) (127, 1) 求解系數為: [-35.59828349] 求解系數為: [[9.23195448]] r2: 0.3944946886803493 r2_score: -660.1580577546584 MAE: 4.733243417768924 MSE: 48.43066789457248 RMSE: 6.959214603284805總結
以上是生活随笔為你收集整理的【Python】Sklearn线性回归模型预测波士顿房价并绘图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机网络】Socket
- 下一篇: 【JSP】JSP与JavaBean的关系