可视化sklearn决策树的结构

  统计/机器学习 监督式学习 数据可视化 Python    浏览次数:7983        分享
5

我用sklearn构造了决策树模型后,可以有办法得到这个决策树的结构?也就是if-else的判断的规则。

Thx!


 

山中人   2017-10-05 13:08



   2个回答 
11

用graphviz可以直接把树在jupyter notebook里显示出来

import graphviz
from sklearn import tree
model = tree.DecisionTreeRegressor(max_depth=2)
model.fit(X, y)
dot_data = tree.export_graphviz(model, 
                                out_file=None, 
                                feature_names=X.columns,
                                filled=True, 
                                rounded=True,  
                                special_characters=True)  
graph = graphviz.Source(dot_data)
graph


SofaSofa数据科学社区DS面试题库 DS面经

sasa   2018-10-30 07:15

每个框颜色深浅是什么意思?表示每个节点内均值的高低吗? - 何立诚   2018-11-05 04:49
是的,表示均值,颜色越深,均值越大 - sasa   2018-11-08 18:14
6

需要通过调用tree.export_graphviz这个方法。

以sklearn自带的数据集iris为例

from sklearn.datasets import load_iris
from sklearn import tree

clf = tree.DecisionTreeClassifier()
iris = load_iris()
clf = clf.fit(iris.data, iris.target)
tree.export_graphviz(clf, out_file='trees.txt')

输出的trees.txt文件里有保存了你的决策树的判断规则。


如果你想把这个规则画出来的话,可以借用这个网站http://webgraphviz.com/,把上面的txt文件里的内容,复制过去就行了,可以得到类似下面的图。



SofaSofa数据科学社区DS面试题库 DS面经

数据痴汉   2017-10-15 10:58



  相关讨论

对sklearn的决策树进行剪枝

sklearn里的RandomForestClassifier怎么选样本的数量

lightgbm.LGBMModel和lightgbm.LGBMClassifier该用哪个?

sklearn随机森林设置每棵树的权重

sklearn里的RandomForestClassifier和ExtraTreesClassifier有什么区别吗?

sklearn DecisionTreeRegressor模型中为什么会有随机种子random_state?

sklearn里怎么获得adaboost中每棵树的权重?

怎么获得sklearn里决策树的实际深度?

sklearn模块里的DecisionTreeClassifier为什么每次结果不同(数据相同的情况下)

怎么得到sklearn里的RandomForestClassifier训练好之后每棵树的叶节点的个数?

  随便看看

神经网络中的dense和sparse是什么意思?

python产生服从常用概率分布的随机数

tf.placeholder(tf.float32, shape=(None, 1024))中的None是什么意思

sklearn里的LabelEncoder什么用?

推荐系统算法里的cold start是什么意思?