|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
import numpy as np
import matplotlib.pyplot as plt
# 生成数据def gen_data(x1, x2):
y = np.sin(x1) * 1/2 + np.cos(x2) * 1/2 + 0.1 * x1
return y
def load_data():
x1_train = np.linspace(0, 50, 500)
x2_train = np.linspace(-10, 10, 500)
data_train = np.array([[x1, x2, gen_data(x1, x2) + np.random.random(1) - 0.5] for x1, x2 in zip(x1_train, x2_train)])
x1_test = np.linspace(0, 50, 100) + np.random.random(100) * 0.5
x2_test = np.linspace(-10, 10, 100) + 0.02 * np.random.random(100)
data_test = np.array([[x1, x2, gen_data(x1, x2)] for x1, x2 in zip(x1_test, x2_test)])
return data_train, data_test
train, test = load_data()
# train的前两列是x,后一列是y,这里的y有随机噪声x_train, y_train = train[:, :2], train[:, 2]
x_test, y_test = test[:, :2], test[:, 2] # 同上,但这里的y没有噪声
# 回归部分def try_different_method(model, method):
model.fit(x_train, y_train)
score = model.score(x_test, y_test)
result = model.predict(x_test)
plt.figure()
plt.plot(np.arange(len(result)), y_test, "go-", label="True value")
plt.plot(np.arange(len(result)), result, "ro-", label="Predict value")
plt.title(f"method:{method}---score:{score}")
plt.legend(loc="best")
plt.show()
# 方法选择# 1.决策树回归from sklearn import tree
model_decision_tree_regression = tree.DecisionTreeRegressor()
# 2.线性回归from sklearn.linear_model import LinearRegression
model_linear_regression = LinearRegression()
# 3.SVM回归from sklearn import svm
model_svm = svm.SVR()
# 4.kNN回归from sklearn import neighbors
model_k_neighbor = neighbors.KNeighborsRegressor()
# 5.随机森林回归from sklearn import ensemble
model_random_forest_regressor = ensemble.RandomForestRegressor(n_estimators=20) # 使用20个决策树
# 6.Adaboost回归from sklearn import ensemble
model_adaboost_regressor = ensemble.AdaBoostRegressor(n_estimators=50) # 这里使用50个决策树
# 7.GBRT回归from sklearn import ensemble
model_gradient_boosting_regressor = ensemble.GradientBoostingRegressor(n_estimators=100) # 这里使用100个决策树
# 8.Bagging回归from sklearn import ensemble
model_bagging_regressor = ensemble.BaggingRegressor()
# 9.ExtraTree极端随机数回归from sklearn.tree import ExtraTreeRegressor
model_extra_tree_regressor = ExtraTreeRegressor()
|