决策树可视化保姆级教程
决策树可视化指南
决策树是机器学习的一种经典的模型,因其泛化性能好,可解释性强而被广泛应用到实际商业预测中。通常在我们完成决策树模型搭建后,我们会进一步研究分析我们搭建好的模型,这时候模型的可视化就显得尤为重要。下面是生成的决策树可视化图像:
插件安装
scikit-learn中决策树的可视化一般需要安装graphviz。主要包括graphviz库的安装和python的graphviz插件的安装。
安装graphviz库:
- pip install graphviz
安装graphviz插件:
- 安装插件地址:http://www.graphviz.org,下载对应的插件。
- 安装插件(默认安装地址,直接一直点下一步直到完成安装)
- 环境配置: 复制安装目录的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())
注意事项
在我们做可视化的时候,需要注意中各重要的参数:
- feature_names
- 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())
决策树可视化保姆级教程相关推荐
- win11 安装Ubuntu加可视化桌面(最新保姆级教程)
win11.win10 安装Ubuntu加可视化桌面(最新保姆级教程) 前言 保姆级安装流程 第一节·安装前准备 第二节·安装ubuntu本体 第三节·可视化安装 前言 win11.win10 安装U ...
- FastText词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】
目录 一.前言 二.FastText词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 一.前言 本文是word2vec词向量篇的姊妹篇.fasttext是静态词向量构建方法的一种,本 ...
- Word2Vec词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】
目录 一.前言 二.Word2Vec词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 四.词向量可视化 一.前言 word2vec是静态词向量构建方法的一种,本文将介绍word2ve ...
- 爬虫保姆级教程3:利用python-Flask框架搭建本地数据可视化网站
成果展示: (1)网站首页: (2)电影表单页 (3) 电影评分页 (4) 词频统计页 (5)团队页面 接下来让我们看看上述网站是如何完成的: 首先简单介绍一下Flask框架: Flask主要功能有两 ...
- 从购买服务器到网站搭建成功保姆级教程~超详细
??从购买服务器到网站搭建成功保姆级教程~真的超详细,各位看官细品 ??前言 ??预备知识 ??什么是云服务器? ??什么是域名? ??什么是SSL证书? ??服务器选配 ??阿里云[官网链接](ht ...
- win系统的阿里云服务器部署IDEASpringBoot项目保姆级教程
win系统的阿里云服务器部署SpringBoot项目保姆级教程 前言 配置阿里云服务器 配置环境 环境配置中的坑 还有别的坑的话,私信我我补充......毕竟配置是最基本的,还想咋样... jar包导 ...
- 快速上手Springboot项目(登录注册保姆级教程)
本文章对SpringBoot开发后端项目结构做了简单介绍,并示范了使用SpringBoot+MySQL实现登录的后端功能,与本博客的另一篇文章 Vue 实现登录注册功能(前后端分离完整案例) | Ma ...
- RocketMQ保姆级教程
上周花了一点时间从头到尾.从无到有地搭建了一套RocketMQ的环境,觉得还挺easy的,所以就写篇文章分享给大家. 整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作流程的讲解:第二部分就 ...
- 【强化学习实战-04】DQN和Double DQN保姆级教程(2):以MountainCar-v0
[强化学习实战-04]DQN和Double DQN保姆级教程(2):以MountainCar-v0 实战:用Double DQN求解MountainCar问题 MountainCar问题详解 Moun ...
最新文章
- Poj 1151-Atlantis 矩形切割
- openresty开发系列25--openresty中使用json模块
- 【深度学习】动漫风格迁移AnimeGANv2,发布线上运行Demo
- 05字符串的常用基本操作
- NAT STURN,ICE
- Android之提示This version of Android Studio cannot open this project, please retry with Android Studio
- Python+django网页设计入门(5):自定义用户注册与登录功能
- python cnn 时间序列_有什么好的模型可以做高精度的时间序列预测呢?
- SAP License:你适合做SAP顾问吗?
- 第四章 jQuery文档处理
- java 因数分解_Java--分解质因数
- Google Earth Engine APPS(GEE)—— Landsat 数据的时间序列分析来监测森林转化和退化 (CODED)整体框架(万字长文)
- 做人10大心机:不能太单纯 适度伪装自己
- linux读取class下的文件路径,Class类getResource方法获取文件路径
- java hypot_Java StrictMath hypot()用法及代碼示例
- php中跟时间有关的处理(时区设置,计算时间差,获取系统当前时间)
- [C++]char转换为string ,固定长度的char数组转换为string
- 网页特效之imageflow
- HTML5 JS Canvas利用贝塞尔曲线绘制圆角矩形
- 看这篇告诉你WMS系统怎么设计
热门文章
- java openxml 操作 word,openxml word转成xml
- 这是哪里来的小妖精!!!
- 生病了女朋友说要「陪床」,结果真的是陪床不是陪我......
- 除了PS,原来这个也可以轻松实现图像处理!
- 在家做什么能让隔壁报警?| 今日最佳
- 74款app源码,值得你拥有的干货
- linux 查询oracle情况,在Linux下使用SQLPlus查看Oracle数据库表空间及使用率
- 服务器精益改善系列,精益生产改善的内容是什么?
- 俄语使用计算机怎么说,计算机俄语常用词汇
- 开发物体识别桌、_【课程总结】AR系统开发“秘籍”大揭秘!