You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取GridSearchCV管道中最优MLPRegressor的n_iter_属性?

如何从包含GridSearchCV的Pipeline中获取MLPRegressor的n_iter_属性?

问题描述

我用Python 3构建了一个包含GridSearchCV的Pipeline,代码如下:

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_MLPR.best_params_获取最优模型的参数:{'MLPR__alpha': 0.001, 'MLPR__hidden_layer_sizes': (50,)},但我想获取该最优模型中MLPRegressor组件的n_iter_属性(即迭代次数),请问该如何实现?

解决方案

这其实很容易实现,你只需要借助GridSearchCV和Pipeline的两个关键属性就能拿到目标值:

  1. 首先通过gridCV_MLPR.best_estimator_获取经过交叉验证后训练完成的最优Pipeline实例,这个实例已经用最优参数拟合了训练数据,所有组件的训练后属性都能访问到。
  2. 然后通过Pipeline的named_steps字典(以你定义Pipeline时给组件起的名字为键),定位到其中的MLPRegressor组件,再直接访问它的n_iter_属性即可。

具体代码如下:

# 获取训练好的最优Pipeline
best_pipeline = gridCV_MLPR.best_estimator_

# 从Pipeline中提取MLPRegressor组件
best_mlpr_model = best_pipeline.named_steps['MLPR']

# 获取迭代次数
training_iterations = best_mlpr_model.n_iter_

print(f"最优MLPRegressor模型的迭代次数: {training_iterations}")

补充说明

  • best_estimator_是GridSearchCV的核心属性之一,它保存的不是参数字典,而是完整的、训练好的模型/流水线对象,所以能直接访问所有训练后的内部属性。
  • 如果你需要验证,可以顺便查看一下这个最优模型的参数是否和best_params_一致:

print(best_mlpr_model.get_params())

你会看到其中的`alpha`和`hidden_layer_sizes`和`best_params_`里的最优参数完全匹配。

内容的提问来源于stack exchange,提问作者rmarion37
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:36:46