機器學習之路: python 回歸樹 DecisionTreeRegressor 預測波士頓房價


 

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.tree import DecisionTreeRegressor
 5 from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
 6 import numpy as np
 7 
 8 '''
 9 回歸樹:
10     嚴格上說 回歸樹不能算是回歸
11     葉子節點是一團訓練數據的均值 不是連續 具體的預測值
12     
13     解決特征非線性的問題
14     不要求特征標准化和統一量化
15     
16     容易過於復雜喪失泛化能力
17     穩定性較差,細微改變會導致樹結構發生重大變化
18     
19 '''
20 
21 # 1 准備數據
22 # 讀取波士頓地區房價信息
23 boston = load_boston()
24 # 查看數據描述
25 # print(boston.DESCR)   # 共506條波士頓地區房價信息,每條13項數值特征描述和目標房價
26 # 查看數據的差異情況
27 # print("最大房價:", np.max(boston.target))   # 50
28 # print("最小房價:",np.min(boston.target))    # 5
29 # print("平均房價:", np.mean(boston.target))   # 22.532806324110677
30 
31 x = boston.data
32 y = boston.target
33 
34 # 2 分割訓練數據和測試數據
35 # 隨機采樣25%作為測試 75%作為訓練
36 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=33)
37 
38 
39 # 3 訓練數據和測試數據進行標准化處理
40 ss_x = StandardScaler()
41 x_train = ss_x.fit_transform(x_train)
42 x_test = ss_x.transform(x_test)
43 
44 ss_y = StandardScaler()
45 y_train = ss_y.fit_transform(y_train.reshape(-1, 1))
46 y_test = ss_y.transform(y_test.reshape(-1, 1))
47 
48 # 4 使用回歸樹進行訓練和預測
49 # 初始化k近鄰回歸模型 使用平均回歸進行預測
50 dtr = DecisionTreeRegressor()
51 # 訓練
52 dtr.fit(x_train, y_train)
53 # 預測 保存預測結果
54 dtr_y_predict = dtr.predict(x_test)
55 
56 # 5 模型評估
57 print("回歸樹的默認評估值為:", dtr.score(x_test, y_test))
58 print("平回歸樹的R_squared值為:", r2_score(y_test, dtr_y_predict))
59 print("回歸樹的均方誤差為:", mean_squared_error(ss_y.inverse_transform(y_test),
60                                            ss_y.inverse_transform(dtr_y_predict)))
61 print("回歸樹的平均絕對誤差為:", mean_absolute_error(ss_y.inverse_transform(y_test),
62                                                ss_y.inverse_transform(dtr_y_predict)))
63 
64 '''
65 回歸樹的默認評估值為: 0.7066505912533438
66 平回歸樹的R_squared值為: 0.7066505912533438
67 回歸樹的均方誤差為: 22.746692913385836
68 回歸樹的平均絕對誤差為: 3.08740157480315
69 '''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM