使用 GridsearchCV 为管道中的最佳模型提取 MLPRegressor 属性 (n_iter_)?

Posted

技术标签:

【中文标题】使用 GridsearchCV 为管道中的最佳模型提取 MLPRegressor 属性 (n_iter_)?【英文标题】:Extract an MLPRegressor attributes (n_iter_ ) for the best model in a pipeline with GridsearchCV? 【发布时间】:2019-12-17 01:34:18 【问题描述】:

我用管道创建了GridsearchCV,我想提取管道组件 (MLPRegressor) 的一个属性 (n_iter_) 以获得最佳模型。

我正在使用 Python 3.0。

管道的创建

pipeline_steps = [('scaler', StandardScaler()), ('MLPR', MLPRegressor(solver='lbfgs', early_stopping=True, validation_fraction=0.1, max_iter=10000))]

MLPR_parameters = 'MLPR__hidden_layer_sizes':[(50,), (100,), (50,50)], 'MLPR__alpha':[0.001, 10, 1000]

MLPR_pipeline = Pipeline(pipeline_steps)

gridCV_MLPR = GridSearchCV(MLPR_pipeline, MLPR_parameters, cv=kfold)
gridCV_MLPR.fit(X_train, y_train)

当我想用gridCV_GBR.best_params_ 提取最佳模型时,我只有 GridsearchCV 的结果:

'MLPR__alpha': 0.001, 'MLPR__hidden_layer_sizes': (50,)

但我想知道gridCV_MLPR的最佳模型使用的MLPRegressor的迭代次数。

如何通过带有 GridsearhCV 的管道使用为MLPRegressor() 设计的n_iter_ 属性?

【问题讨论】:

gridCV_MLPR.best_estimator_.n_iter_ 呢? 使用这段代码,我有 'Pipeline' 对象没有属性 'n_iter_'。这很正常,因为 .n_iter_ 是 MLPregressor() 的一个属性。它包含在管道中(最好的管道,由 GridsearchCV 定义)。 【参考方案1】:

感谢您的帮助,

我找到了解决方案:

gridCV_MLPR.best_estimator_.named_steps['MLPR'].n_iter_

由于gridCV_MLPR.best_estimator_是一个管道,我们需要用.named_steps['MLPR']选择MLPRegressor参数。

非常感谢您非常非常快速的回答...

【讨论】:

干得好(+1); 2天后,别忘了accept your own answer。

以上是关于使用 GridsearchCV 为管道中的最佳模型提取 MLPRegressor 属性 (n_iter_)?的主要内容,如果未能解决你的问题,请参考以下文章

如何将最佳参数(使用 GridSearchCV)从管道传递到另一个管道

如何使用 GridSearchCV 比较多个模型以及 python 中的管道和超参数调整

GridSearchCV 和 ValueError:估计器管道的参数 alpha 无效

使用 GridSearchCV scikit-learn 在管道中的 KMeans

在 Scikit Learn 中使用网格搜索 (GridSearchCV) 和管道的支持向量回归 (SVR) 中的系数

使用 Imblearn 管道和 GridSearchCV 进行交叉验证