MLP Regressor拟合报错ValueError:shuffle参数值异常的解决方法
解决MLP Regressor拟合时的shuffle参数报错问题
我为MLP Regressor找到了最佳超参数网格,通过以下代码设置参数:
model=model0.set_params(**best_grid)
执行拟合代码时:
mod1=model.fit(X_pp, y)
出现报错:
ValueError: shuffle must be either True or False, got True.
best_grid内容如下:
{'activation': 'relu', 'alpha': 0.1, 'batch_size': 'auto', 'beta_1': 0.9, 'beta_2': 0.9, 'early_stopping': True, 'epsilon': 1e-07, 'hidden_layer_sizes': [62, 31, 48], 'learning_rate': 'constant', 'learning_rate_init': 0.01, 'max_fun': 15000, 'max_iter': 10000, 'momentum': 0.6, 'n_iter_no_change': 10.0, 'nesterovs_momentum': True, 'power_t': 0.5, 'random_state': None, 'shuffle': True, 'solver': 'sgd', 'tol': 0.1, 'validation_fraction': 0.1, 'verbose': False, 'warm_start': False}
解决方案
修复
n_iter_no_change参数类型:你的best_grid中n_iter_no_change是浮点数10.0,但scikit-learn要求该参数为整数。将其修改为整数10:best_grid['n_iter_no_change'] = 10这类参数类型不匹配会触发内部校验逻辑异常,进而导致看似无关的
shuffle参数报错,这是最常见的原因。确认
shuffle参数类型:如果上述修改后仍报错,检查shuffle的值是否确实是布尔类型。若网格搜索过程中它被意外转为字符串(比如'True'),则强制转换为布尔值:best_grid['shuffle'] = bool(best_grid['shuffle'])
修改完成后重新执行参数设置和拟合代码即可。
内容的提问来源于stack exchange,提问作者Ghilder Ghilder
相关产品推荐
相关产品推荐

