决策树可视化指南

决策树是机器学习的一种经典的模型,因其泛化性能好,可解释性强而被广泛应用到实际商业预测中。通常在我们完成决策树模型搭建后,我们会进一步研究分析我们搭建好的模型,这时候模型的可视化就显得尤为重要。下面是生成的决策树可视化图像:

插件安装

scikit-learn中决策树的可视化一般需要安装graphviz。主要包括graphviz库的安装和python的graphviz插件的安装。
安装graphviz库:

  • pip install graphviz

安装graphviz插件:

  1. 安装插件地址:http://www.graphviz.org,下载对应的插件。
  2. 安装插件(默认安装地址,直接一直点下一步直到完成安装)
  3. 环境配置: 复制安装目录的bin路径:C:\Program Files\Graphviz\bin
    (a)打开我的电脑,点击属性

    (b)选择高级设置

    (c)选择环境变量

    (d)双击选择Path进入

    (e)新建,粘贴的前面复制的bin路径,点击确定

    (f)重启jupter notebook即可

可视化的三种方法

搭建模型

from sklearn import tree
dtree = tree.DecisionTreeClassifier()
dtree.fit(x_train,y_train)

在搭建完决策树后,下面介绍可视化具体操作的三种方法
方法一:
简单粗暴,一行代码搞定什么都不用安装。缺点也很明显,生成的可视化图比较模糊,且不能保存图片,违背了可视化的初衷,不建议使用这种方法。

tree.plot_tree(bdtree,filled=True)

方法二:
这种方法比较常用,需要安装graphviz库和graphviz插件,安装方法上面已经介绍。这种使用这种方法得到的图像比较高清,并且还会额外生成PDF文件和一个文本文件。比较推荐使用。

import graphviz
dot_data = tree.export_graphviz(dtree,out_file=None,feature_names=feature_names,class_names=class_names,filled=True,rounded=True,special_characters=True)
graph = graphviz.Source(dot_data)
graph.render('computer')

方法三:
最后一种方法是最麻烦的,除了需要安装graphviz库和graphviz插件,还需要安装:

  • pip install pydotplus
  • pip install six
    这种方法得到的图像比较清晰,且可以双击放大缩小,可以保存为png图片和pdf文档。这种方法根据个人需求使用吧。
# 决策树可视化
import graphviz
import pydotplus
from six import StringIO
from sklearn.tree import export_graphviz
from IPython.display import Image# 文件缓存
dot_data = StringIO()
# 将决策树导入到dot中
export_graphviz(bdtree, out_file=dot_data,  filled=True, rounded=True,special_characters=True,feature_names = feature_names,class_names=class_names)
# 将生成的dot文件生成graph
print(feature_names)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
# 将结果存入到png文件中
graph.write_png('diabetes.png')
graph.write_pdf('diabetes.pdf')
# 显示
Image(graph.create_png())

注意事项

在我们做可视化的时候,需要注意中各重要的参数:

  1. feature_names
  2. class_names

在做可视化的时候需要传入这两个参数,这两个参数都需要传入一个列表类型的数据,并且两个参数需要与模型传入的数据一一对应,否则就违背了可视化的初衷了。
feature_names:
假如我们的数据格式是DataFrame格式通常可以在数据处理后通过以下方法获取(也可以手动输入):

feature_names = data.columns[:-1]

class_names:

  • 这个参数如果类别数不多的话,最好手动输入。或者通过data[‘分类标签’].unique()获取后再做格式转换和顺序调整

决策树可视化实战

from sklearn import tree
import pandas as pddata = pd.read_csv('zoo.csv')
data.head()# 获取训练数据和标签
x_data  = data.drop(['animal_name', 'class_type'], axis=1)
y_data = data['class_type']# 搭建模型
dtree = tree.DecisionTreeClassifier()
dtree.fit(x_data,y_data)# 获取feature_names和class_names
feature_names = data.columns[1:-1]cls_n = data.class_type.unique()
class_names = []
for i in cls_n:class_names.append(str(i))
class_names.sort()# # 方法一
# tree.plot_tree(dtree,filled=True)# # 方法二
# import graphviz# dot_data = tree.export_graphviz(dtree,
#                                out_file=None,
#                                feature_names=feature_names,
#                                class_names=cls_n,
#                                filled=True,
#                                rounded=True,
#                                special_characters=True)
# graph = graphviz.Source(dot_data)# graph.render('computer')
# graph
# 方法三
import graphviz
import pydotplus
from six import StringIO
from IPython.display import Image  # 文件缓存
dot_data = StringIO()
# 将决策树导入到dot中
tree.export_graphviz(dtree, out_file=dot_data,  filled=True, rounded=True,special_characters=True,feature_names = feature_names,class_names=class_names)
# 将生成的dot文件生成graph
print(feature_names)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
# 将结果存入到png文件中
graph.write_png('diabetes.png')
graph.write_pdf('diabetes.pdf')
# 显示
Image(graph.create_png())

决策树可视化保姆级教程相关推荐

  1. win11 安装Ubuntu加可视化桌面(最新保姆级教程)

    win11.win10 安装Ubuntu加可视化桌面(最新保姆级教程) 前言 保姆级安装流程 第一节·安装前准备 第二节·安装ubuntu本体 第三节·可视化安装 前言 win11.win10 安装U ...

  2. FastText词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】

    目录 一.前言 二.FastText词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 一.前言 本文是word2vec词向量篇的姊妹篇.fasttext是静态词向量构建方法的一种,本 ...

  3. Word2Vec词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】

    目录 一.前言 二.Word2Vec词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 四.词向量可视化 一.前言 word2vec是静态词向量构建方法的一种,本文将介绍word2ve ...

  4. 爬虫保姆级教程3:利用python-Flask框架搭建本地数据可视化网站

    成果展示: (1)网站首页: (2)电影表单页 (3) 电影评分页 (4) 词频统计页 (5)团队页面 接下来让我们看看上述网站是如何完成的: 首先简单介绍一下Flask框架: Flask主要功能有两 ...

  5. 从购买服务器到网站搭建成功保姆级教程~超详细

    ??从购买服务器到网站搭建成功保姆级教程~真的超详细,各位看官细品 ??前言 ??预备知识 ??什么是云服务器? ??什么是域名? ??什么是SSL证书? ??服务器选配 ??阿里云[官网链接](ht ...

  6. win系统的阿里云服务器部署IDEASpringBoot项目保姆级教程

    win系统的阿里云服务器部署SpringBoot项目保姆级教程 前言 配置阿里云服务器 配置环境 环境配置中的坑 还有别的坑的话,私信我我补充......毕竟配置是最基本的,还想咋样... jar包导 ...

  7. 快速上手Springboot项目(登录注册保姆级教程)

    本文章对SpringBoot开发后端项目结构做了简单介绍,并示范了使用SpringBoot+MySQL实现登录的后端功能,与本博客的另一篇文章 Vue 实现登录注册功能(前后端分离完整案例) | Ma ...

  8. RocketMQ保姆级教程

    上周花了一点时间从头到尾.从无到有地搭建了一套RocketMQ的环境,觉得还挺easy的,所以就写篇文章分享给大家. 整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作流程的讲解:第二部分就 ...

  9. 【强化学习实战-04】DQN和Double DQN保姆级教程(2):以MountainCar-v0

    [强化学习实战-04]DQN和Double DQN保姆级教程(2):以MountainCar-v0 实战:用Double DQN求解MountainCar问题 MountainCar问题详解 Moun ...

最新文章

  1. Poj 1151-Atlantis 矩形切割
  2. openresty开发系列25--openresty中使用json模块
  3. 【深度学习】动漫风格迁移AnimeGANv2,发布线上运行Demo
  4. 05字符串的常用基本操作
  5. NAT STURN,ICE
  6. Android之提示This version of Android Studio cannot open this project, please retry with Android Studio
  7. Python+django网页设计入门(5):自定义用户注册与登录功能
  8. python cnn 时间序列_有什么好的模型可以做高精度的时间序列预测呢?
  9. SAP License:你适合做SAP顾问吗?
  10. 第四章 jQuery文档处理
  11. java 因数分解_Java--分解质因数
  12. Google Earth Engine APPS(GEE)—— Landsat 数据的时间序列分析来监测森林转化和退化 (CODED)整体框架(万字长文)
  13. 做人10大心机:不能太单纯 适度伪装自己
  14. linux读取class下的文件路径,Class类getResource方法获取文件路径
  15. java hypot_Java StrictMath hypot()用法及代碼示例
  16. php中跟时间有关的处理(时区设置,计算时间差,获取系统当前时间)
  17. [C++]char转换为string ,固定长度的char数组转换为string
  18. 网页特效之imageflow
  19. HTML5 JS Canvas利用贝塞尔曲线绘制圆角矩形
  20. 看这篇告诉你WMS系统怎么设计

热门文章

  1. java openxml 操作 word,openxml word转成xml
  2. 这是哪里来的小妖精!!!
  3. 生病了女朋友说要「陪床」,结果真的是陪床不是陪我......
  4. 除了PS,原来这个也可以轻松实现图像处理!
  5. 在家做什么能让隔壁报警?| 今日最佳
  6. 74款app源码,值得你拥有的干货
  7. linux 查询oracle情况,在Linux下使用SQLPlus查看Oracle数据库表空间及使用率
  8. 服务器精益改善系列,精益生产改善的内容是什么?
  9. 俄语使用计算机怎么说,计算机俄语常用词汇
  10. 开发物体识别桌、_【课程总结】AR系统开发“秘籍”大揭秘!