繁体   English   中英

如何在 Python 中可视化回归树

[英]How to visualize a Regression Tree in Python

我希望可视化使用 scikit learn 中的任何集成方法构建的回归树(梯度提升回归器、随机森林回归器、装袋回归器)。 我看过这个问题,这个问题很接近, 这个问题处理分类树。 但这些问题需要“树”方法,SKLearn 中的回归模型无法使用该方法。

但它似乎没有产生结果。 我遇到了问题,因为这些树的回归版本没有.tree方法(该方法仅适用于分类版本)。 我想要一个类似输出,但基于 sci kit 学习构建的树。

我已经探索了与对象相关的方法,但无法给出答案。

正如我所评论的,分类和回归决策树图之间没有功能差异。 改编文档中的回归玩具示例:

from sklearn import tree
X = [[0, 0], [2, 2]]
y = [0.5, 2.5]
clf = tree.DecisionTreeRegressor()
clf = clf.fit(X, y)

然后,类似地,分类文档中有关graphviz的一些代码:

import graphviz 
dot_data = tree.export_graphviz(clf, out_file='tree.dot') 

我们最终得到一个文件tree.dot ,看起来像这样:

digraph Tree {
node [shape=box] ;
0 [label="X[0] <= 1.0\nmse = 1.0\nsamples = 2\nvalue = 1.5"] ;
1 [label="mse = 0.0\nsamples = 1\nvalue = 0.5"] ;
0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
2 [label="mse = 0.0\nsamples = 1\nvalue = 2.5"] ;
0 -> 2 [labeldistance=2.5, labelangle=-45, headlabel="False"] ;
}

现在,您可以继续将其可视化,如文档中所示 - 但如果由于某种原因您无法呈现 Graphviz 对象,您可以使用方便的服务WebGraphviz (+1 链接问题中的相关答案); 结果如下所示:

在此处输入图像描述

您自己的答案,即为了可视化而一路安装graphlab ,听起来有点矫枉过正......

最后一点:不要被树布局的表面差异所欺骗,这仅反映了各个可视化包的设计选择; 您绘制的回归树(诚然,它看起来不太像)在结构上类似于从文档中获取的分类 - 只需想象一个自上而下的树,您的odor节点位于顶部,然后是您的绿色节点并终止到您的蓝色和橙色节点(并将“是/否”替换为“真/假”)...

经过大量搜索,我发现 Turi 提供的软件可以模拟回归树,不要与决策树混淆。 希望这可以帮助

就其价值而言,回归树如下所示: 在此处输入图像描述

虽然决策/分类器树看起来像这样: 在此处输入图像描述

尽管它们看起来相同,但创建它所需的属性是tree_ ,它仅适用于分类器,而不是回归器

DTR 将为所有值创建一个分区级别
检查图表 -点击这里

from sklearn.tree import DecisionTreeRegressor

#Getting X and y variable
X = df.iloc[:,1:2].values
y =df.iloc[:,2].values

#Creating a model object and fiting the data
reg = DecisionTreeRegressor(random_state=0)
reg.fit(X,y)

# Visualising the Decision Tree Regression results (higher resolution)
X_grid = np.arange(min(X), max(X), 0.01)
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X, y, color = 'red')
plt.plot(X_grid, reg.predict(X_grid), color = 'blue')
plt.title('Truth or Bluff (Decision Tree Regression)')
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

一个简单的文本模式解决方案

from sklearn import tree
print(tree.export_text(clf_model))

典型结果:

|--- feature_3 <= 0.46
|   |--- feature_0 <= 0.50
|   |   |--- feature_7 <= 0.50
|   |   |   |--- feature_5 <= 0.78
|   |   |   |   |--- value: [3288.64]
etc...

使用clf_model.feature_names_in_获取特征名称

归功于https://mljar.com/blog/visualize-decision-tree/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM