1. 程式人生 > >機器學習之路: python 線性回歸LinearRegression, 隨機參數回歸SGDRegressor 預測波士頓房價

機器學習之路: python 線性回歸LinearRegression, 隨機參數回歸SGDRegressor 預測波士頓房價

誤差 差異 ces color square 均方誤差 rep score 處理

python3學習使用api

線性回歸,和 隨機參數回歸

git: https://github.com/linyi0604/MachineLearning

 1 from sklearn.datasets import load_boston
 2 from sklearn.cross_validation import train_test_split
 3 from sklearn.preprocessing import StandardScaler
 4 from sklearn.linear_model import LinearRegression, SGDRegressor
 5
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error 6 import numpy as np 7 8 # 1 準備數據 9 # 讀取波士頓地區房價信息 10 boston = load_boston() 11 # 查看數據描述 12 # print(boston.DESCR) # 共506條波士頓地區房價信息,每條13項數值特征描述和目標房價 13 # 查看數據的差異情況 14 # print("最大房價:", np.max(boston.target)) # 50 15 # print("最小房價:",np.min(boston.target)) # 5
16 # print("平均房價:", np.mean(boston.target)) # 22.532806324110677 17 18 x = boston.data 19 y = boston.target 20 21 # 2 分割訓練數據和測試數據 22 # 隨機采樣25%作為測試 75%作為訓練 23 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=33) 24 25 26 # 3 訓練數據和測試數據進行標準化處理 27 ss_x = StandardScaler()
28 x_train = ss_x.fit_transform(x_train) 29 x_test = ss_x.transform(x_test) 30 31 ss_y = StandardScaler() 32 y_train = ss_y.fit_transform(y_train.reshape(-1, 1)) 33 y_test = ss_y.transform(y_test.reshape(-1, 1)) 34 35 # 4 使用兩種線性回歸模型進行訓練和預測 36 # 初始化LinearRegression線性回歸模型 37 lr = LinearRegression() 38 # 訓練 39 lr.fit(x_train, y_train) 40 # 預測 保存預測結果 41 lr_y_predict = lr.predict(x_test) 42 43 # 初始化SGDRRegressor隨機梯度回歸模型 44 sgdr = SGDRegressor() 45 # 訓練 46 sgdr.fit(x_train, y_train) 47 # 預測 保存預測結果 48 sgdr_y_predict = sgdr.predict(x_test) 49 50 # 5 模型評估 51 # 對Linear模型評估 52 lr_score = lr.score(x_test, y_test) 53 print("Linear的默認評估值為:", lr_score) 54 lr_R_squared = r2_score(y_test, lr_y_predict) 55 print("Linear的R_squared值為:", lr_R_squared) 56 lr_mse = mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)) 57 print("Linear的均方誤差為:", lr_mse) 58 lr_mae = mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)) 59 print("Linear的平均絕對誤差為:", lr_mae) 60 61 # 對SGD模型評估 62 sgdr_score = sgdr.score(x_test, y_test) 63 print("SGD的默認評估值為:", sgdr_score) 64 sgdr_R_squared = r2_score(y_test, sgdr_y_predict) 65 print("SGD的R_squared值為:", sgdr_R_squared) 66 sgdr_mse = mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(sgdr_y_predict)) 67 print("SGD的均方誤差為:", sgdr_mse) 68 sgdr_mae = mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(sgdr_y_predict)) 69 print("SGD的平均絕對誤差為:", sgdr_mae) 70 71 ‘‘‘ 72 Linear的默認評估值為: 0.6763403830998702 73 Linear的R_squared值為: 0.6763403830998701 74 Linear的均方誤差為: 25.09698569206773 75 Linear的平均絕對誤差為: 3.5261239963985433 76 77 SGD的默認評估值為: 0.659795654161198 78 SGD的R_squared值為: 0.659795654161198 79 SGD的均方誤差為: 26.379885392159494 80 SGD的平均絕對誤差為: 3.5094445431026413 81 ‘‘‘

機器學習之路: python 線性回歸LinearRegression, 隨機參數回歸SGDRegressor 預測波士頓房價