|
@@ -27,11 +27,11 @@ def fit(Xtrain, Ytrain):
|
27
|
27
|
|
28
|
28
|
gx = Ytrain
|
29
|
29
|
|
30
|
|
- for i in range(200):
|
|
30
|
+ for i in range(55):
|
31
|
31
|
# 求残差
|
32
|
32
|
gx = gx - fx0
|
33
|
33
|
print("第", i, '轮 残差', gx[:10])
|
34
|
|
- clf = tree.DecisionTreeRegressor(criterion="mse", max_features=1, max_depth=2)
|
|
34
|
+ clf = tree.DecisionTreeRegressor(criterion="mse", max_features=5, max_depth=10)
|
35
|
35
|
clf.fit(Xtrain, gx)
|
36
|
36
|
trees.append(clf)
|
37
|
37
|
|
|
@@ -48,9 +48,9 @@ def fit(Xtrain, Ytrain):
|
48
|
48
|
|
49
|
49
|
sum = 0
|
50
|
50
|
for i in range(Ytrain.shape[0]):
|
51
|
|
- sum = sum + (gx[i] - Ytrain[i])*(gx[i] - Ytrain[i])
|
|
51
|
+ sum = sum + (gx[i] - Ytrain[i])**2
|
52
|
52
|
|
53
|
|
- print("train mse", sum)
|
|
53
|
+ print("train mse", sum/Ytrain.shape[0])
|
54
|
54
|
return trees, fx[0][0]
|
55
|
55
|
|
56
|
56
|
|
|
@@ -64,10 +64,15 @@ def score(Xtest, Ytest, trees, fx0):
|
64
|
64
|
|
65
|
65
|
sum = 0
|
66
|
66
|
for i in range(Ytest.shape[0]):
|
67
|
|
- sum = sum + (gx[i] - Ytest[i]) * (gx[i] - Ytest[i])
|
|
67
|
+ sum = sum + (gx[i] - Ytest[i])**2
|
68
|
68
|
|
69
|
|
- print("test mse", sum)
|
|
69
|
+ print("test mse", sum/Ytest.shape[0])
|
70
|
70
|
|
|
71
|
+ gx = trees[0].predict(Xtest)
|
|
72
|
+ sum = 0
|
|
73
|
+ for i in range(Ytest.shape[0]):
|
|
74
|
+ sum = sum + (gx[i] - Ytest[i]) ** 2
|
|
75
|
+ print("test mse0", sum / Ytest.shape[0])
|
71
|
76
|
|
72
|
77
|
if __name__ == '__main__':
|
73
|
78
|
Xtrain, Xtest, Ytrain, Ytest = read_data()
|