【python画图_决策树可视化、随机森林可视化(graphviz、pydotplus)】

有时候我们想更清晰的知道我们建立的决策树是怎样进行分裂的,这里跟大家分享一个决策树可视化的方法~

1、安装相关包(graphviz、pydotplus)

graphviz是一个专门绘制dot语言脚本描述的图形的软件,所以我们单纯的pip install graphviz 会报以下错误。
在这里插入图片描述
那么要怎么安装我们想要的包呢?

1)打开graphviz官网http://www.graphviz.org/download/,下载我们需要的版本软件包;

在这里插入图片描述
2)安装graphviz软件:双击我们下载的graphviz软件包,按照以下图片显示步骤进行安装;

  • 注意一下第三步,我们可以选择后面两项中的任意一项,这样我们就不需要再手工的将graphviz的bin文件加入到系统环境变量中
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3)点击图中的位置,输入下面语句,进行包的安装;

在这里插入图片描述

pip install graphviz
pip install pydotplus

4)重启电脑!

2、决策树可视化

1)生成pdf文件

################### 决策树的树形图
import numpy as np
import pandas as pd
from pandas import DataFrame as df
from sklearn.datasets import load_boston
from sklearn.datasets import load_breast_cancer
from matplotlib import pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split

# 提取数据
data = df(load_breast_cancer().data, columns=load_breast_cancer().feature_names)
data['target'] =  load_breast_cancer().target
data1 = data.iloc[:,-6:]
x_train, x_test, y_train, y_teest = train_test_split(data1.iloc[:,:-1], data1['target'], test_size=0.2, random_state=1)

# 建模
from sklearn.tree import DecisionTreeClassifier
DT = DecisionTreeClassifier(random_state=1, max_depth=4) # 深度设置为4
DT.fit(x_train, y_train)

# 决策树可视化
from sklearn import tree
import graphviz
import pydotplus  
dot_data = tree.export_graphviz(DT, out_file=None, 
                         feature_names=x_train.columns,  
                         class_names=['0','1'],  
                         filled=True, rounded=True,  
                         special_characters=True)  
graph = pydotplus.graph_from_dot_data(dot_data)  
graph.write_pdf("DTtree.pdf") 

在这里插入图片描述

2)在IPython console中直接生成图片

from IPython.display import Image 
dot_data = tree.export_graphviz(DT, out_file=None, 
                         feature_names=x_train.columns,  
                         class_names=['0','1'],  
                         filled=True, rounded=True,  
                         special_characters=True)  
graph = pydotplus.graph_from_dot_data(dot_data)  
Image(graph.create_png())

在这里插入图片描述

3、参数解读

在这里插入图片描述

1)samples:当前节点的总样本数
在这里插入图片描述

2)value:当前节点的各类别数量
在这里插入图片描述

3)gini:当前节点的gini不纯度
这里节点分裂我们选择的是默认的gini,基尼指数(Gini不纯度):在样本集合中一个随机选中的样本被分错的概率,所以越小越好,当集合中所有样本为一个类时,基尼指数为0。

gini公式:
在这里插入图片描述
因此,该节点的gini为:
在这里插入图片描述

4)class:类别

5)分裂点
在这里插入图片描述
在这里插入图片描述
(哭了,没有搞懂样本数为啥差1,懂行的小伙伴不吝赐教啊。。)
在这里插入图片描述
在这里插入图片描述

4、随机森林可视化

from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=2, max_depth=2, random_state=1)
rf.fit(x_train, y_train)

# 随机森林画图
i=0
for per_rf in rf.estimators_:
    dot_data = tree.export_graphviz(per_rf, out_file=None, 
                         feature_names=x_train.columns,  
                         class_names=['0','1'],  
                         filled=True, rounded=True,  
                         special_characters=True)  
    graph = pydotplus.graph_from_dot_data(dot_data)  
    i = i+1
    graph.write_pdf(str(i)+"DTtree.pdf") 

在这里插入图片描述
在这里插入图片描述

详细内容请看我公众号~

【python画图_决策树可视化】

Python中使用`sklearn`库创建的决策树模型可以很好地结合`graphviz`库进行可视化。`graphviz`是一个强大的图形生成工具,常用于展示流程图、网络图等。在Python中,我们可以利用`treeviz`模块,它提供了一个简单的接口来绘制`sklearn`决策树。 首先,你需要安装`graphviz`和`sklearn`库以及`treeviz`包,可以通过以下命令安装: ```bash pip install graphviz sklearn treeviz ``` 然后,你可以通过以下步骤将决策树可视化: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.tree import export_graphviz import graphviz # 加载数据集 iris = load_iris() X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2) # 训练决策树模型 clf = DecisionTreeClassifier(random_state=42) clf.fit(X_train, y_train) # 将模型导出到dot文件(graphviz可以读取) export_graphviz(clf, out_file="iris_tree.dot", feature_names=iris.feature_names, class_names=iris.target_names, filled=True, # 填充节点 rounded=True) # 圆角边框 # 使用graphviz渲染dot文件 from subprocess import call call(['dot', '-Tpng', 'iris_tree.dot', '-o', 'iris_tree.png']) # -Tpng指定了输出图片格式 # 可视化结果会在当前目录下看到名为"iris_tree.png"的图片 ``` 在这个例子中,我们先训练了一个决策树模型,然后将其转换成`dot`格式,最后使用`graphviz`的`dot`命令将其转化为图像。运行这段代码后,你会得到一个显示决策树结构的png图片。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值