机器学习基础:决策树的可视化
目前无论是机器学习竞赛还是工业界,最流行、应用最广泛的xgboost其实是优化后的GBDT(LightGBM里面的boosting比较经典稳定的也是GBDT哦!),而GBDT的基分类器最常用的就是CART决策树!掌握决策树,对理解之后的GBDT、LightGBM都有大有裨益。
决策树原理及案例我们之前已经讲过很多,感兴趣的同学在上面搜索框搜索‘决策树’即可,本文我们仅介绍可视化工具包的安装配置方法和决策树可视化方法/解析,让大家对决策树有更形象的理解。
GraphViz配置指南
GraphViz是AT&T Lab开发的开源工具包,用于绘制dot语言脚本描述的图形,我们只需要关心点和边的关系,不需考虑布局、位置等,用来结合Python绘制图模型真是再好不过。
Graphviz 应用程序中有多种工具可以生成各种类型的图表(dot、neato、circo、twopi 等)。本文将重点介绍用于生成层级图的dot工具。
环境配置步骤:
1、首先下载安装包graphviz-2.38.msi,下载地址为graphviz官网
2、双击msi文件,然后一直选择next(默认安装路径为C:Program Files (x86)Graphviz2.38),安装完成之后,会在windows开始菜单创建快捷信息。
3、配置环境变量:计算机→属性→高级系统设置→高级→环境变量→系统变量→path,在path中加入路径:
4、验证:在windows命令行界面,输入dot -version,然后按回车,如果显示如下图所示的graphviz相关版本信息,则安装配置成功。
5、在C:/Users/H.X.X/anaconda3/Lib/site-packages找到pydot.py这个文件,在spyder里面用Ctrl+F搜索self.prog,把self.prog=‘dot’改成’dot.exe’,保存。一共会搜出六个结果,只需要改这一处就好。
6、安装graphviz和pydotplus的python模块, 它的安装和安装普通的模块一样, 就是使用pip:
7、在Python终端测试,配置完毕
CART@GraphViz可视化
from sklearn.datasets import load_iris
from sklearn import tree
import pydotplus
import sys
import os
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
from IPython.display import Image
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
除叶节点(终端节点)之外的所有节点都有 5 部分
- 基于一个特征的值的有关数据的问题。每个问题的答案要么是 True,要么就是 False。数据点会根据该问题的答案在该决策树中移动。
- gini:节点的基尼不纯度。当沿着树向下移动时,平均加权的基尼不纯度必须降低。
- samples:节点中观察的数量。
- value:每一类别中样本的数量。比如,顶部节点中有 2 个样本属于类别 0,有 4 个样本属于类别 1。
- class:节点中大多数点的类别(持平时默认为 0)。在叶节点中,这是该节点中所有样本的预测结果。
- 走进科学:我是如何“黑了”星级酒店的
- OpenSSL空指针引用do_ssl3_write
- 针对近期“博全球眼球的OAuth漏洞”的分析与防范建议
- 黑掉美国(英国、澳大利亚、法国等)的交通控制系统
- Android 自定义标签 ViewLayout
- Identity Service - 解析微软微服务架构eShopOnContainers(二)
- 机器学习之随机森林
- Catalog Service - 解析微软微服务架构eShopOnContainers(三)
- EventBus In eShop -- 解析微软微服务架构Demo(四)
- Health Check in eShop -- 解析微软微服务架构Demo(五)
- Android Studio相见恨晚的操作锦集
- [收藏]几个常用的用正则表达式验证字符串的函数
- 走进科学: 无线安全需要了解的芯片选型、扫描器使用知识
- React Native之携程Moles框架
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 中ScrollView与ListView冲突问题的解决办法
- Android数据库操作工具类分享
- Android使用RadioGroup实现底部导航栏
- Android 中Fragment与Activity通讯的详解
- Android常用控件ImageSwitcher使用方法详解
- Android实现阅读进度记忆功能
- Android 控制ScrollView滚动的实例详解
- Android 判断是否能真正上网的实例详解
- Android UI设计与开发之PopupWindow仿腾讯新闻底部弹出菜单
- android实现微信联合登录开发示例
- 详解Android WebView加载html片段
- Ubuntu 20.04最佳配置指南(新手必备)
- ScrollView与SeekBar绑定实现滑动时出现小滑块效果
- Android用StaticLayout实现文字转化为图片效果(类似长微博发送)
- Android中Dialog自定义上下文花式菜单