|
@@ -31,7 +31,7 @@ def fit(Xtrain, Ytrain):
|
31
|
31
|
# 求残差
|
32
|
32
|
gx = gx - fx0
|
33
|
33
|
print("第", i, '轮 残差', gx[:10])
|
34
|
|
- clf = tree.DecisionTreeRegressor(criterion="mse", max_features=5, max_depth=10)
|
|
34
|
+ clf = tree.DecisionTreeRegressor(criterion="mse", max_features=5, max_depth=10, random_state=10)
|
35
|
35
|
clf.fit(Xtrain, gx)
|
36
|
36
|
trees.append(clf)
|
37
|
37
|
|
|
@@ -74,7 +74,22 @@ def score(Xtest, Ytest, trees, fx0):
|
74
|
74
|
sum = sum + (gx[i] - Ytest[i]) ** 2
|
75
|
75
|
print("test mse0", sum / Ytest.shape[0])
|
76
|
76
|
|
|
77
|
+
|
77
|
78
|
if __name__ == '__main__':
|
78
|
79
|
Xtrain, Xtest, Ytrain, Ytest = read_data()
|
79
|
80
|
trees, fx0 = fit(Xtrain, Ytrain)
|
80
|
|
- score(Xtest, Ytest, trees, fx0)
|
|
81
|
+ score(Xtest, Ytest, trees, fx0)
|
|
82
|
+
|
|
83
|
+ gbm2 = GradientBoostingRegressor(n_estimators=55, max_depth=10, learning_rate=0.7,
|
|
84
|
+ max_features='sqrt', random_state=10)
|
|
85
|
+ gbm2.fit(Xtrain, Ytrain) # 分数越高越好
|
|
86
|
+ print("gbdt1", gbm2.score(Xtest, Ytest))
|
|
87
|
+
|
|
88
|
+ gx = gbm2.predict(Xtest)
|
|
89
|
+ sum = 0
|
|
90
|
+ for i in range(Ytest.shape[0]):
|
|
91
|
+ sum = sum + (gx[i] - Ytest[i]) ** 2
|
|
92
|
+ print(gx[:10])
|
|
93
|
+ print(Ytest[:10])
|
|
94
|
+ print("gbdt mse", sum / Ytest.shape[0])
|
|
95
|
+
|