Python 调整MLPREGESSOR超参数
我一直试图调整MLP模型的超参数以解决回归问题,但我总是收到收敛警告 这是我的密码Python 调整MLPREGESSOR超参数,python,machine-learning,scikit-learn,neural-network,mlp,Python,Machine Learning,Scikit Learn,Neural Network,Mlp,我一直试图调整MLP模型的超参数以解决回归问题,但我总是收到收敛警告 这是我的密码 def mlp_model(X, Y): estimator=MLPRegressor() param_grid = {'hidden_layer_sizes': [(50,50,50), (50,100,50), (100,1)], 'activation': ['relu','tanh','logistic'], 'alpha': [0.0001, 0.05],
def mlp_model(X, Y):
estimator=MLPRegressor()
param_grid = {'hidden_layer_sizes': [(50,50,50), (50,100,50), (100,1)],
'activation': ['relu','tanh','logistic'],
'alpha': [0.0001, 0.05],
'learning_rate': ['constant','adaptive'],
'solver': ['adam']}
gsc = GridSearchCV(
estimator,
param_grid,
cv=5, scoring='neg_mean_squared_error', verbose=0, n_jobs=-1)
grid_result = gsc.fit(X, Y)
best_params = grid_result.best_params_
best_mlp = MLPRegressor(hidden_layer_sizes = best_params["hidden_layer_sizes"],
activation =best_params["activation"],
solver=best_params["solver"],
max_iter= 5000, n_iter_no_change = 200
)
scoring = {
'abs_error': 'neg_mean_absolute_error',
'squared_error': 'neg_mean_squared_error',
'r2':'r2'}
scores = cross_validate(best_mlp, X, Y, cv=10, scoring=scoring, return_train_score=True, return_estimator = True)
return scores
我得到的警告是
ConvergenceWarning: Stochastic Optimizer: Maximum iterations (5000) reached and the optimization hasn't converged yet.% self.max_iter, ConvergenceWarning)
我的数据集中有87个特征和1384行,所有这些都是数字,并且使用MinMaxScaler进行了缩放。
如果您能指导我调整超参数,我将不胜感激。好吧,您可以尝试三个选项,一个很明显,您可以将
max\u iter
从5000增加到一个更高的数字,因为您的模型在5000个纪元内不会收敛,其次,尝试使用batch\u size
,因为您有1384个训练示例,您可以使用16、32或64的批大小,这有助于在5000次迭代中收敛您的模型,最后,您可以始终将learning\u rate\u init
增加到稍高的值,因为学习率似乎很低,因为即使经过5000次迭代,您的模型也没有收敛希望这有帮助好吧,你可以尝试三个选项,其中一个很明显,你可以将最大iter
从5000增加到一个更高的数字,因为你的模型在5000个时期内不会收敛,第二个,尝试使用批量大小
,由于您有1384个训练示例,因此可以使用16、32或64的批大小,这有助于在5000次迭代中收敛您的模型,最后,您可以始终将learning\u rate\u init
增加到稍高的值,因为学习率似乎很低,因为即使经过5000次迭代,您的模型也没有收敛希望这有帮助