![](/img/trans.png)
[英]Is the regression prediction from sklearn's DecisionTreeRegressor a simple average?
[英]sklearn: print DecisionTreeRegressor's tree from IterativeImputer
我有一个使用 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”。
我究竟做错了什么?
发生此错误是因为iterative_imputer.estimator
对象在每次迭代中都适合之前被克隆。 这是所有其他估计量都来自的实例。
拟合后,估计量存储为imputation_sequence_
属性下的_ImputerTriplet
对象列表。 可以通过以下方式访问它们( scikit-learn==1.2.0
):
import numpy as np
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
from sklearn.tree import DecisionTreeRegressor
from sklearn.tree import export_text
regressor = DecisionTreeRegressor(random_state=0)
iterative_imputer = IterativeImputer(
estimator=regressor,
max_iter=10,
imputation_order='roman',
random_state=0,
)
iterative_imputer.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]])
for _, _, estimator in iterative_imputer.imputation_sequence_:
print(export_text(estimator))
|--- feature_1 <= 7.50
| |--- feature_0 <= 2.75
| | |--- value: [7.00]
| |--- feature_0 > 2.75
| | |--- value: [4.00]
|--- feature_1 > 7.50
| |--- value: [10.00]
...
这是我会怎么做的:
从 sklearn.tree 导入 DecisionTreeRegressor 从 sklearn.impute 导入 IterativeImputer
##创建一个DecisionTreeRegressor对象estimator = DecisionTreeRegressor()
##使用 DecisionTreeRegressor 作为估计器创建一个 IterativeImputer 对象 imputer = IterativeImputer(estimator=estimator)
##Fit IterativeImputer 到你的数据 imputer.fit(X)
##打印用作 IterativeImputer print(estimator.export_text()) 估计器的 DecisionTreeRegressor 树
export_text 方法会将树输出为文本表示形式,然后您可以将其打印到控制台或保存到文件中。
请记住,IterativeImputer 使用 DecisionTreeRegressor 对象作为估计器来预测数据中的缺失值,并且由 DecisionTreeRegressor 生成的树与插补过程没有直接关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.