Python 使用sklearn管道和MultiOutputRegressor访问属性

Python 使用sklearn管道和MultiOutputRegressor访问属性,python,scikit-learn,attributes,pipeline,Python,Scikit Learn,Attributes,Pipeline,假设一个机器学习模型,比如LightGBM的LGBMRegressionor,有一个属性best\u iteration。调用fit方法后如何访问此属性,从而使用sklearn的管道和多输出分离器 对于管道我尝试了命名步骤: foo.named_steps['reg'] 它返回以下对象sklearn.multioutput.MultiOutputRegressor. 然后,我尝试了.estimators\uu: foo.named_steps['reg'].estimators_ 返回一个列

假设一个机器学习模型,比如LightGBM的
LGBMRegressionor
,有一个属性
best\u iteration
。调用
fit
方法后如何访问此属性,从而使用sklearn的
管道
多输出分离器

对于
管道
我尝试了
命名步骤

foo.named_steps['reg']
它返回以下对象
sklearn.multioutput.MultiOutputRegressor.

然后,我尝试了
.estimators\uu

foo.named_steps['reg'].estimators_
返回一个列表。但是,该列表包含提供给模型的初始参数


有人能解释一下访问模型属性的理想方法吗?

我假设
foo
是一个sklearn管道对象,如果是这样,您可能可以这样做:

for e in foo.named_steps['reg'].estimators_:
    print(e.best_iteration_)
  • foo.named_steps['reg'].estimators_u
    返回估计器列表 多输出分离器的内部
  • e
    是您使用的LGBM回归器 多输出分离器内部

您可以用您想要访问的模型的任何属性替换
best\u iteration.

这可能是解决方案的一部分:是的,
foo
具有类型
sklearn.pipeline.pipeline
。但是,我尝试了您的
循环建议,并且返回了
。根据,我引用:
如果指定了提前停止循环,则拟合模型的最佳迭代。
您需要指定
提前停止循环
,否则它将不返回任何循环。