python - 使用 sklearn 调整神经网络中的参数
问题描述
背景
我正在尝试在一df
列和另一列之间建立关系。因此,如果我们假设列分别命名x
,y
我需要的是一个关系f(x)=y
。我尝试像这样使用线性回归:
model = Pipeline([('poly', PolynomialFeatures(degree=deg)),
('linear', LinearRegression(fit_intercept=False))])
deg
并用循环迭代for
,我发现最好的值是deg=9
(即使deg=3
结果很接近)哪里
MSE: 7.282878279669111 MAE: 1.704843791514593
问题
现在我正在尝试创建一个神经网络(这里我正在使用MLPRegressor
),但不确定要选择哪些参数。我尝试手动更改参数,有时会得到很好的结果,mse~7.1
有时会得到糟糕的结果,例如mse~20
. relu
从 切换到后我得到了更好的结果logistic
,并在每层中的层数和节点数上玩了一下。
我的问题是如何有效地自动搜索最佳超参数,包括层架构(层数和每层中的节点数)和多项式特征的程度。到目前为止,我拥有的代码是:
scaler = MinMaxScaler()
X_train_norm = scaler.fit_transform(X_train.values.reshape(-1, 1))
X_test_norm = scaler.fit_transform(X_test.values.reshape(-1, 1))
model = Pipeline([('poly', PolynomialFeatures(degree=deg)),
('mlpr', MLPRegressor(hidden_layer_sizes=(deg, 6, 8, 1),
activation='relu',
solver='adam', max_iter=10000))])
我确实发现对于随机森林,您可以使用
rf_random = RandomizedSearchCV(estimator=rf,
param_distributions=random_grid,
n_iter=100, cv=3, verbose=2,
random_state=42, n_jobs=-1)
但是在神经网络的情况下,我无法实现像这样的搜索。
解决方案
推荐阅读
- javascript - 如何使用 FirebaseMessaging 的 sendToDevice 方法的响应来查找给定令牌数组中的哪个索引是错误的?
- javascript - 是否可以在会话存储中保存 div 并检索/附加它?
- javascript - 如何将回调函数转换为 Promise?
- ruby-on-rails - 从 Ruby 中的字符串中获取一个单词
- php - php随机文件名问题
- flutter - 变量被神秘地改变
- excel - Excel 根据当前颜色更改选定单元格的颜色
- javascript - 如何循环并删除数组为空的对象
- javascript - 减少铯地图容器的高度
- c# - RichTextBox_logs.AppendText(Environment.NewLine); 返回两条新线?