我在使用 Scikit Learn 的 RegressorChain 解决多输出回归问题时,模型拟合后需要获取已拟合模型的基估算器以访问其属性。我尝试访问 RegressorChain 中基估算器的属性,但未能成功。
以下是我使用的代码:
linreg = LinearRegression() wrapper=RegressorChain(linreg)fit_model=wrapper.fit(X_train, y_train)base_estimator_para=RegressorChain.get_params(fit_model, deep=True)base_estimator_linreg=base_estimator_para['base_estimator']print(base_estimator_linreg.coef_)
最后一行返回错误,称 ‘LinearRegression’ 对象没有 ‘coef_’ 属性,但 LinearRegression 确实有 ‘coef_’ 属性。
函数 “base_estimator_para” 返回一个包含对象的字典,其中包括基估算器本身。
base_estimator_para['base_estimator']
返回基估算器对象,因此使用base_estimator_linreg.coef_
应该返回已拟合的线性回归模型的系数。
回答:
base_estimator
是传递给 RegressorChain
的参数,当你拟合 RegressorChain
时,它保持未拟合状态。该估算器会被反复克隆,每个克隆都会被拟合(依次使用之前已拟合的克隆的预测作为额外输入)。你需要从 estimators_
中选出一个条目,这些是 base_estimator
的已拟合克隆。