gpt4 book ai didi

python - scikit-learn中MLPRegressor的超参数优化

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:42 33 4
gpt4 key购买 nike

我是使用 python 进行机器学习的新手,非常感谢对以下问题的任何帮助。

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

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 列(对于每个隐藏的神经元编号)。

提前致谢

最佳答案

试试这个

score_dict = {}
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)


nhn_scores = []
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)
score_dict[nhn] = nhn_scores

然后使用 from_dictscore_dict 转换为这样的数据框

import pandas as pd
score_df = pd.DataFrame.from_dict(score_dict)

关于python - scikit-learn中MLPRegressor的超参数优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51230654/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com