?
python3 學習機器學習api
使用兩種k近鄰回歸模型 分別是 平均k近鄰回歸 和 距離加權k近鄰回歸 進行預測
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.neighbors import KNeighborsRegressor 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 兩種k近鄰回歸行學習和預測 36 # 初始化k近鄰回歸模型 使用平均回歸進行預測 37 uni_knr = KNeighborsRegressor(weights="uniform") 38 # 訓練 39 uni_knr.fit(x_train, y_train) 40 # 預測 保存預測結果 41 uni_knr_y_predict = uni_knr.predict(x_test) 42 43 # 多初始化k近鄰回歸模型 使用距離加權回歸 44 dis_knr = KNeighborsRegressor(weights="distance") 45 # 訓練 46 dis_knr.fit(x_train, y_train) 47 # 預測 保存預測結果 48 dis_knr_y_predict = dis_knr.predict(x_test) 49 50 # 5 模型評估 51 # 平均k近鄰回歸 模型評估 52 print("平均k近鄰回歸的默認評估值為:", uni_knr.score(x_test, y_test)) 53 print("平均k近鄰回歸的R_squared值為:", r2_score(y_test, uni_knr_y_predict)) 54 print("平均k近鄰回歸的均方誤差為:", mean_squared_error(ss_y.inverse_transform(y_test), 55 ss_y.inverse_transform(uni_knr_y_predict))) 56 print("平均k近鄰回歸 的平均絕對誤差為:", mean_absolute_error(ss_y.inverse_transform(y_test), 57 ss_y.inverse_transform(uni_knr_y_predict))) 58 # 距離加權k近鄰回歸 模型評估 59 print("距離加權k近鄰回歸的默認評估值為:", dis_knr.score(x_test, y_test)) 60 print("距離加權k近鄰回歸的R_squared值為:", r2_score(y_test, dis_knr_y_predict)) 61 print("距離加權k近鄰回歸的均方誤差為:", mean_squared_error(ss_y.inverse_transform(y_test), 62 ss_y.inverse_transform(dis_knr_y_predict))) 63 print("距離加權k近鄰回歸的平均絕對誤差為:", mean_absolute_error(ss_y.inverse_transform(y_test), 64 ss_y.inverse_transform(dis_knr_y_predict))) 65 66 ''' 67 平均k近鄰回歸的默認評估值為: 0.6903454564606561 68 平均k近鄰回歸的R_squared值為: 0.6903454564606561 69 平均k近鄰回歸的均方誤差為: 24.01101417322835 70 平均k近鄰回歸 的平均絕對誤差為: 2.9680314960629928 71 距離加權k近鄰回歸的默認評估值為: 0.7197589970156353 72 距離加權k近鄰回歸的R_squared值為: 0.7197589970156353 73 距離加權k近鄰回歸的均方誤差為: 21.730250160926044 74 距離加權k近鄰回歸的平均絕對誤差為: 2.8050568785108005 75 '''
?