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

为何调用IterativeImputer的estimator打印决策树会报未拟合错误?

问题原因

你调用的iterative_imputer.estimator是初始定义的未拟合DecisionTreeRegressor实例。IterativeImputer在fit时,会为每个待填补的特征单独训练一个估算器,这些训练好的模型并不保存在传入的原始estimator中,而是存储在iterative_imputer.estimators_(复数形式,末尾带下划线)属性里。

解决方法

使用estimators_属性获取所有训练完成的决策树模型,再逐个导出结构。示例代码如下:

import pandas as pd
from sklearn import tree
from sklearn.experimental import enable_iterative_imputer  # noqa
from sklearn.impute import IterativeImputer
from sklearn.tree import DecisionTreeRegressor

# 构造带缺失值的示例数据(替换为你的真实数据df)
df = pd.DataFrame({
    'a': [1, 2, None, 4, 5],
    'b': [None, 2, 3, None, 5],
    'c': [1, 2, 3, 4, 5]
})

regressor = DecisionTreeRegressor(criterion="squared_error", 
                                  max_depth=None, 
                                  min_samples_split=2,
                                  min_samples_leaf=1, 
                                  random_state=0)
iterative_imputer = IterativeImputer(
    estimator=regressor,
    sample_posterior=False,
    max_iter=10,
    initial_strategy='mean',
    imputation_order='roman',
    verbose=2,
    random_state=0)
iterative_imputer.fit(df)

# 遍历每个训练好的决策树并打印结构
for idx, est in enumerate(iterative_imputer.estimators_):
    print(f"===== 第{idx+1}个特征对应的决策树 =====")
    print(tree.export_text(est, feature_names=df.columns.tolist()))
补充说明
  • estimators_是一个列表,长度等于数据集的特征数量,每个元素对应一个特征的拟合好的DecisionTreeRegressor模型
  • 如果只需要查看特定特征的树,可以通过索引直接获取,比如iterative_imputer.estimators_[0]对应第一个特征的模型

内容的提问来源于stack exchange,提问作者Daemon2017

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:01:13