Python scikit学习中MLPREGESSOR的超参数优化
我是使用python进行机器学习的新手,希望您能帮助我解决以下问题 我正在尝试对不同隐藏神经元编号(6个值)的列表运行MLPrePressor,对于每个选定的神经元编号,我希望训练数据被洗牌三次,即每个神经元编号三个分数。下面的代码工作正常,返回18分(6*3)。然而,我觉得这不是解决问题的有效方法,因为它运行了将近一个小时。我尝试过使用GridSearchCV(),但我不知道如何控制训练数据的洗牌(每个隐藏的神经元数洗牌3次)。有人能提出更好(更快)的解决方法吗Python scikit学习中MLPREGESSOR的超参数优化,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我是使用python进行机器学习的新手,希望您能帮助我解决以下问题 我正在尝试对不同隐藏神经元编号(6个值)的列表运行MLPrePressor,对于每个选定的神经元编号,我希望训练数据被洗牌三次,即每个神经元编号三个分数。下面的代码工作正常,返回18分(6*3)。然而,我觉得这不是解决问题的有效方法,因为它运行了将近一个小时。我尝试过使用GridSearchCV(),但我不知道如何控制训练数据的洗牌(每个隐藏的神经元数洗牌3次)。有人能提出更好(更快)的解决方法吗 from sklearn.ne
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
然后使用
谢谢你的回答。它解决了获取分数数据帧的问题。但是,您是否可以建议对代码本身进行任何改进以加快处理时间,例如使用GridSearchCV作为问题的解释?欢迎!如果我的答案解决了你的问题,请你投票并将其标记为正确答案:-)另外,我需要检查优化部分。你能提供数据让我在我的系统上复制吗?
import pandas as pd
score_df = pd.DataFrame.from_dict(score_dict)