昨天学习了决策树的思想和算法,脑子卡壳了输出结果老是看不懂,一直在验算和猜想,hh后来终于明白了~在此记录巩固一下。

这里学的是ID3算法实现决策树,ID3算法能处理的数据类型是:自变量和因变量都是离散型

假设自变量有3个:天气情况(好、坏)、是否周末(是、否)、是否有促销(有、没用)。因变量有1个:销售数量(高、低),则我们决策树叶节点都会是高、低这两种情况之一。ID3算法是基于信息熵来选择属性的,它选择当前样本集中具有最大信息增益值的自变量作为测试属性。可以简单的理解为每层的根节点、子节点都能计算出当前样本集的信息熵值,记为(低,高),在剩下的自变量中计算如果按照此自变量对数据集进行划分时的信息熵值,记为(自变量Ai),则信息增益值为:(自变量Ai)=(低,高)-(自变量Ai),在每一次选择测试属性的时候都会选择信息增益值最大的自变量最为测试属性。

想了解详细的ID3算法可以参考《Python数据分析与挖掘实战》第二版p108-114。书上街上的很详细。

下面看一下代码和代码运行出来的结果

代码

import pandas as pd
inputfile=r'C:\..\data\sales_data.xls'
data=pd.read_excel(inputfile,index_col='序号')
# index_col='序号'是把'序号'这一列当成索引,这样就不会把'序号'这一列读成数据# 数据是类别标签,要将它转换为数据
# 用1来表示好、是、高这3个属性,用-1来表示坏、否、低这3个属性
data[data=='好']=1
data[data=='是']=1
data[data=='高']=1
data[data!=1]=-1
x=data.iloc[:,:3].values.astype(int)
#pandas.core.frame.DataFrame 的属性 .values 是转换为numpy.ndarray
# numpy.ndarray的属性.astype(int)是把里面的数据转化成int整型
y=data.iloc[:,3].values.astype(int)
from sklearn.tree import DecisionTreeClassifier as DTC
dtc=DTC(criterion='entropy') #基于信息熵确立决策树模型
dtc.fit(x,y)#导入相关函数,可视化决策树
#导出的结果是一个dot文件,需要安装Graphviz才能将它转化为pdf或png等格式
from sklearn.tree import export_graphviz
with open("C:/.../Desktop/tree.dot",'w') as f:f=export_graphviz(dtc,feature_names=x.columns,class_names=True,out_file=f)dtc. classes_
#查看因变量y的分类

导入的数据是这样的:

数据是标签类别,需要进一步处理转换成数据

↑数据处理后长这样。之后就可以调用决策树的算法直接进行计算了,

运行结果

决策树的运行结果是生成一个.dot文件,要将该文件可视化需要安装Graphviz(跨平台的、基于命令行的绘图工具),运行结果是按照下面的命令生成的,我这里生成结果后直接放置在了桌面。

from sklearn.tree import export_graphviz
with open("C:/.../Desktop/tree.dot",'w') as f:f=export_graphviz(dtc,feature_names=x.columns,class_names=True,out_file=f)

上面这个千万不要用word打开,打开以后另存为基本全乱码(我走过的坑),直接记事本打开并且把该文件另存为uft-8的编码格式(如果要修改正常显示中文字体之类的也可以直接修改),看看记事本打开的决策树生成的结果:

它就是一个图画的编码表达。剩下的就需要利用Graphviz来帮忙了。这里要先安装Graphviz。地址:http://www.graphviz.org/download/,直接下载合适的版本安装即可。安装成功后要设置环境变量,把安装路径C:\...\Graphviz2.38\bin加入到环境变量。添加好环境变量后,打开cmd,输入dot -version,如果显示如下图所示的graphviz相关版本信息,则安装配置成功。

准备工作做完后就要开始处理决策树输出结果tree.dot文件了。在tree.dot文件的所在目录里打开cmd,输入以下命令会生成一个tree.pdf和tree.png的文件,这就是我们想要的结果了。

dot -Tpdf tree.dot -o tree.pdf #生成pdf
dot -Tpng tree.dot -o tree.png #生成png

这样就是生成成果了。打开后结果是这样的:

终于看到图画了,但刚开始看到的时候,我不知道为什么哪个True和False是反过来的,害,思考了半天。后面偶显灵感,感觉是1<=0.0这句话的True/False判断,果然是这样,哈哈~关于决策树的分支,左分支为True,右分支False。结果解读如下:

和标准答案给的结果一样!!!

决策树及输出结果解释相关推荐

  1. ThinkPHP模版引擎之变量输出具体解释

    ThinkPHP模版引擎之变量输出具体解释 使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下.做出一些总结,分享给大家供大家參考. 详细分析例如以下: 我们 ...

  2. xgboost输出模型解释

    xgboost模型输出的解释 [目标] 掌握xgboost中,predict方法对应不同的参数,输出的含义 掌握xgboost中,dump出model的树结构的含义 [数据集与代码] 使用经典的鸢尾花 ...

  3. C语言无符号数赋值为负数时的%d%u输出问题解释

    文章目录 问题发现 什么是无符号整形 补码的计算 无符号整形的输出 正确时: 错误时: 问题解决 int用%d和%u输出 unsigned int用%d和%u输出 问题发现 近日在练习过程中发现无符号 ...

  4. python决策树结果图_Python决策树图形输出

    使用决策树建模时,我们需要将决策树输出出来,以直观的展示各决策节点,简单分享一下我的学习笔记. 1. 建立模型 # 导入库 from sklearn.datasets import load_iris ...

  5. Python中format的格式输出案例解释

    a="Python等级考试" b="=" c=">" print("{0:{1}{3}{2}}".format ( ...

  6. !aspxpages(即!dumphttpcontext)命令输出的解释

    在排查ASP.NET网站High CPU问题时, 经常使用hang dump来确定常规手段难以发现的原因. 经常会使用!aspxpages命令来查看当前进程中都有那些资源正被请求, 被请求的资源都运行 ...

  7. gprof 输出内容解释

    gprof输出内容示例 Each sample counts as 0.01 seconds .% cumulative self self total time seconds seconds ca ...

  8. gprof输出内容解释

    gprof输出内容示例 Each sample counts as 0.01 seconds.   %   cumulative   self              self     total  ...

  9. sklearn决策树模型机器学习参数解释很详细中文

    https://blog.csdn.net/qq_16000815/article/details/80954039

最新文章

  1. 卷积神经网络中十大拍案叫绝的操作!
  2. airpods有时能连上有时连不上怎么办?
  3. python实现微信自动发信息_Python实现智慧-定期向微信女友发送消息,python,智给,定时,发消息...
  4. 论文总结(negFIN: An efficient algorithm for fast mining frequent itemsets)
  5. 使用Azure Blob存储托管Maven工件
  6. Girl Love Value
  7. Redis 安装与配置
  8. 【分享创造】react-typewriter-hook: 用react hooks来实现打字机的效果
  9. linux编码安装mysql_在Ubuntu 15.10下安装mysql设置数据库编码
  10. 今天中国获得金牌数量是7块,位居奖牌榜首位
  11. UIKit Dynamic主题学习笔记
  12. 分类问题损失函数的信息论解释
  13. c51单片机时钟程序汇编语言,51单片机数字钟汇编程序精选.docx
  14. 深入浅出ELK日志收集系统搭建
  15. 【基础】一叶知秋,从背包问题到动态规划
  16. python语言中的单行注释语句_Python入门基础系列(五)——单行和多行注释
  17. java怎么快速补缺_Java基础查漏补缺(1)
  18. e书久久的电子书怎样反编译?
  19. 求两个正整数的最大公因数和最小公倍数
  20. Ubuntu安装交叉编译工具链——现成包方法

热门文章

  1. 1253:抓住那头牛
  2. MATLAB:镜像图片
  3. 下载数据库名前加“#”方法
  4. 【领域泛化论文阅读】Semantic-Aware Domain Generalized Segmentation
  5. ASP是什么?ASP初识
  6. 个人职业生涯规划发展的一些图
  7. 【ospf-vlink虚拟连接】
  8. 学不学吴恩达deeplearning.ai课程,看完这篇你就知道了
  9. 双十一适合买什么,缓解失眠助眠好物推荐榜
  10. 商品ETF的分类及运作模式