初始化page
This commit is contained in:
@@ -32,7 +32,8 @@
|
||||
|
||||
使用神经网络进行回归预测
|
||||
|
||||
1. 使用共11个理化指标作为模型输入,经过大量调试(不同的网络结构,不同的深度,宽度,激活函数,初始化策略,优化函数)确定出最好的网络结构和策略。说明为什么你选择了该模型结构和策略。(你对比了哪些其他的结构?你觉得为什么该模型的效果比较好?如何防止你的选择基准只是一个巧合?)用图表总结你的搜索结果,列出每个模型(或者经过挑选的有代表性的模型)的RMSE,R2和模型训练时间。
|
||||
1.
|
||||
使用共11个理化指标作为模型输入,经过大量调试(不同的网络结构,不同的深度,宽度,激活函数,初始化策略,优化函数)确定出最好的网络结构和策略。说明为什么你选择了该模型结构和策略。(你对比了哪些其他的结构?你觉得为什么该模型的效果比较好?如何防止你的选择基准只是一个巧合?)用图表总结你的搜索结果,列出每个模型(或者经过挑选的有代表性的模型)的RMSE,R2和模型训练时间。
|
||||
|
||||
2. 进一步精调模型,提升模型效果并减少过拟合(例如:dropout,early stopping,bagging,交叉验证,L2/L1正则化等等)。用图表总结你使用的精调方法的带来的效果提升。
|
||||
|
||||
@@ -44,5 +45,29 @@
|
||||
|
||||
1. 选择目标1,目标2 里面选得的最优秀的模型,对比他们在不同训练数据下的表现并总结,作图。
|
||||
|
||||
作业提交有效时间是今天到12月29日(三周后)之前的任意时间。
|
||||
提交作业请将代码和报告打包,以“学号-姓名-UQ”命名提交至链接 [http://www.xzc.cn/YvcM5sqqVm]
|
||||
作业提交有效时间是今天到12月29日(三周后)之前的任意时间。 提交作业请将代码和报告打包,以“学号-姓名-UQ”命名提交至链接 [http://www.xzc.cn/YvcM5sqqVm]
|
||||
|
||||
|
||||
```shell
|
||||
# 运行
|
||||
cd numerical_analysis/8
|
||||
python main.py
|
||||
```
|
||||
|
||||
```
|
||||
随机森林
|
||||
R2: 0.475379
|
||||
accuracy: 0.687500
|
||||
线性回归
|
||||
R2: 0.297383
|
||||
accuracy: 0.587500
|
||||
支持向量机
|
||||
R2: 0.250542
|
||||
accuracy: 0.681250
|
||||
随机梯度下降
|
||||
R2: -0.124188
|
||||
accuracy: 0.475000
|
||||
多层感知器
|
||||
R2: 0.288015
|
||||
accuracy: 0.637500
|
||||
```
|
||||
@@ -22,33 +22,42 @@ class WinePredict:
|
||||
self.X_train = sc.fit_transform(self.X_train)
|
||||
self.X_test = sc.fit_transform(self.X_test)
|
||||
|
||||
# 线性回归
|
||||
def lr(self):
|
||||
"""
|
||||
线性回归
|
||||
"""
|
||||
lr = LinearRegression()
|
||||
lr.fit(self.X_train, self.y_train)
|
||||
return lr.predict(self.X_test)
|
||||
|
||||
# 随机森林
|
||||
def rfc(self):
|
||||
rfc = RandomForestClassifier(n_estimators=200)
|
||||
"""
|
||||
随机森林
|
||||
"""
|
||||
rfc = RandomForestClassifier(n_estimators=200, random_state=20)
|
||||
rfc.fit(self.X_train, self.y_train)
|
||||
return rfc.predict(self.X_test)
|
||||
|
||||
# 随机梯度下降
|
||||
# 0.2 极其不稳定
|
||||
def sgd(self):
|
||||
"""
|
||||
随机梯度下降
|
||||
"""
|
||||
sgd = SGDClassifier(penalty=None)
|
||||
sgd.fit(self.X_train, self.y_train)
|
||||
return sgd.predict(self.X_test)
|
||||
|
||||
# 支持向量机
|
||||
# 0.23 -> 0.25
|
||||
def svc(self):
|
||||
"""
|
||||
支持向量机
|
||||
"""
|
||||
svc = SVC(C=1.4, gamma=0.8, kernel='rbf')
|
||||
svc.fit(self.X_train, self.y_train)
|
||||
return svc.predict(self.X_test)
|
||||
|
||||
def mlp(self):
|
||||
"""
|
||||
多层感知器
|
||||
"""
|
||||
mlp = MLPClassifier([10, 6], learning_rate_init=0.001, activation='relu', solver='adam', alpha=0.0001,
|
||||
max_iter=30000)
|
||||
# 神经网络
|
||||
@@ -57,9 +66,10 @@ class WinePredict:
|
||||
|
||||
# 参数调优
|
||||
def grid_search(self, model, param):
|
||||
grid_svc = GridSearchCV(model, param_grid=param, scoring='accuracy', cv=10)
|
||||
grid_svc.fit(self.X_train, self.y_train)
|
||||
return grid_svc.best_params_
|
||||
print('search %s', param)
|
||||
grid = GridSearchCV(model, param_grid=param, scoring='accuracy', cv=10)
|
||||
grid.fit(self.X_train, self.y_train)
|
||||
print("%s: %f" % (grid.best_params_, grid.best_score_))
|
||||
|
||||
def gs_svc(self):
|
||||
param = {
|
||||
@@ -67,17 +77,23 @@ class WinePredict:
|
||||
'kernel': ['linear', 'rbf'],
|
||||
'gamma': [0.1, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4]
|
||||
}
|
||||
print(self.grid_search(SVC, param))
|
||||
self.grid_search(SVC(), param)
|
||||
# {'C': 1.4, 'gamma': 0.8, 'kernel': 'rbf'}
|
||||
|
||||
def gs_rfc(self):
|
||||
self.grid_search(RandomForestClassifier(), {
|
||||
'n_estimators': [200],
|
||||
'random_state': [_ for _ in range(0, 200, 10)]
|
||||
})
|
||||
|
||||
def report(self, fc):
|
||||
r = fc()
|
||||
if r.dtype == 'float64' or r.dtype == 'float32':
|
||||
r = r.round()
|
||||
# print(classification_report(self.y_test, r))
|
||||
print(fc.__name__)
|
||||
print(" R2: %f" % r2_score(self.y_test, r))
|
||||
print(" accuracy: %f" % accuracy_score(self.y_test, r))
|
||||
print(fc.__doc__.strip())
|
||||
print(" R2: %f" % r2_score(self.y_test, r))
|
||||
print(" accuracy: %f" % accuracy_score(self.y_test, r))
|
||||
|
||||
def showXY(self):
|
||||
# fig = plt.figure(figsize=(10, 6))
|
||||
@@ -91,5 +107,7 @@ class WinePredict:
|
||||
|
||||
if __name__ == '__main__':
|
||||
wp = WinePredict()
|
||||
wp.report(wp.lr)
|
||||
wp.gs_rfc()
|
||||
for i in [wp.rfc, wp.lr, wp.svc, wp.sgd, wp.mlp][:1]:
|
||||
wp.report(i)
|
||||
# wp.showXY()
|
||||
|
||||
Reference in New Issue
Block a user