首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scikit learn中MLPRegressor的超参数优化

scikit learn中MLPRegressor的超参数优化
EN

Stack Overflow用户
提问于 2018-07-08 17:35:27
回答 0查看 4K关注 0票数 4

我是使用python进行机器学习的新手,如果能帮助我解决以下问题,我将不胜感激。

我正在尝试为不同的隐藏神经元编号(6个值)列表运行MLPRegressor,并且对于每个选定的神经元编号,我希望训练数据被混洗三次,即每个神经元编号三分。下面的代码运行良好,返回18个分数(6*3)。然而,我觉得这不是解决问题的有效方法,因为它运行了将近一个小时。我尝试过使用GridSearchCV(),但我不知道如何控制训练数据的混洗(每个隐藏的神经元编号3次)。有人能建议一个更好(更快)的方法来解决这个问题吗?

代码语言:javascript
复制
from sklearn.neural_network import MLPRegressor
from sklearn.model_selection import cross_val_score
from sklearn.utils import shuffle

n=3 # how many times to shuffle the training data
nhn_range=[8,10,12,14,16,18] # number of hidden neurons

nhn_scores = []
for nhn in nhn_range:
    mlp = MLPRegressor(hidden_layer_sizes=(nhn,), activation='tanh', 
                       solver='adam', shuffle=False, random_state=42, 
                       max_iter=20000, momentum=0.7, early_stopping=True, 
                       validation_fraction=0.15)
    for _ in range(n):
        df_train = shuffle(df_train)
        score = np.sqrt(-cross_val_score(mlp, df_train[feature_cols], 
                        df_train[response_cols], 
                        cv=5, scoring='neg_mean_squared_error')).mean()
        nhn_scores.append(score)

该代码返回一个分数列表。如何才能得到一个3行(每次洗牌)和6列(每个隐藏神经元编号)的简单数据帧。

提前感谢

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51230654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档