我有一个使用DecisionTreeRegressor作为估计量的IterativeImputer,我想使用export_text方法打印它的树:
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
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)
print(tree.export_text(iterative_imputer.estimator))
但我得到一个错误:
sklearn.exceptions.NotFittedError:此DecisionTreeRegressor示例尚未拟合。使用此估计器之前,请使用适当的参数调用"fit"。
我哪里做错了?
2条答案
按热度按时间yuvru6vn1#
出现错误是因为
iterative_imputer.estimator
对象在适合每次迭代之前被克隆,它是所有其他估计量的来源示例。拟合后,估计量作为
_ImputerTriplet
对象列表存储在imputation_sequence_
属性下。可以使用以下命令访问(scikit-learn==1.2.0
):nfzehxib2#
下面是我应该如何做:
从sklearn.tree导入决策树从sklearn.impute导入迭代输入器
创建决策树回归对象估计器=决策树回归()
使用DecisionTreeRegressor作为估计量创建IterativeImputer对象,估计量= IterativeImputer(估计量=估计量)
根据您的数据调整迭代输入器imputer.fit(X)
打印用作迭代输入器打印的估计量的DecisionTreeRegressor树(estimator.export_text())
export_text方法将树输出为文本表示,然后可以将其打印到控制台或保存到文件中。
请记住,IterativeImputer使用DecisionTreeRegressor对象作为估计量来预测数据中的缺失值,并且DecisionTreeRegressor生成的树与插补过程没有直接关系。