Sklearn MLP分类器超参数优化(RandomizedSearchCV)

时间:2018-08-26 19:02:40

标签: python machine-learning scikit-learn hyperparameters

我设置了以下参数:

parameter_space = {
    'hidden_layer_sizes': [(sp_randint(100,600),sp_randint(100,600),), (sp_randint(100,600),)],
    'activation': ['tanh', 'relu', 'logistic'],
    'solver': ['sgd', 'adam', 'lbfgs'],
    'alpha': stats.uniform(0.0001, 0.9),
    'learning_rate': ['constant','adaptive']}

除hidden_​​layer_sizes以外的所有参数均按预期工作。但是,拟合此RandomizedSearchCV模型并显示其冗长的文本表明,它将hidden_​​layer_sizes视为:

hidden_layer_sizes=(<scipy.stats._distn_infrastructure.rv_frozen object 并继续抛出:TypeError: '<=' not supported between instances of 'rv_frozen' and 'int'

获得了该结果,而不是预期的具有隐藏层神经元的100或600之间的1或2层MLP。有什么想法/其他相关提示吗?

1 个答案:

答案 0 :(得分:3)

sp_randint返回rv_discrete类/ randint对象的实例,为了生成随机数,正确的语法应为sp_randint.rvs(low, high, size)。 为了使其正常工作,您需要如下定义parameter_space

parameter_space = { 'hidden_layer_sizes': [(sp_randint.rvs(100,600,1),sp_randint.rvs(100,600,1),), (sp_randint.rvs(100,600,1),)], 'activation': ['tanh', 'relu', 'logistic'], 'solver': ['sgd', 'adam', 'lbfgs'], 'alpha': uniform(0.0001, 0.9), 'learning_rate': ['constant','adaptive']}