专栏首页Debug客栈Python 数据挖掘实例 决策树分析

Python 数据挖掘实例 决策树分析

安装Anaconda Python集成环境

下载环境

官网: https://www.anaconda.com/ 下载: https://www.anaconda.com/distribution/

anaconda下载选择

安装环境

下载过程中使用默认,但有一个页面需要确认,如下图。

anaconda选择页面

第一个勾是是否把 Anaconda 加入环境变量,这涉及到能否直接在 cmd中使用 conda、jupyter、 ipython 等命令,推荐打勾。 第二个是是否设置 Anaconda 所带的 Python 3.6 为系统默认的 Python 版本,可以打勾。

安装完成后,在开始菜单中显示“Anaconda2”如下图所示。

安装显示界面

安装第三方程序包 Graphviz

目的是在决策树算法中八进制最终的树结构。

1、打开 Anaconda Prompt ,输入 conda install python-graphviz,回车即可完成安装,如下图所示,本图所示已经安装 了 graphviz 包,若之前没有安装,这时会花点时间安装,安装不用干预。

安装决策树依赖包

安装完成后先输入 python,然后再输入 import graphviz,测试是否成功安装,如上图所示。 需要设置环境变量,才能使用新安装的 graphviz。

Anaconda及依赖包环境变量设置

首先查看 anaconda 安装在哪个目录下,可以打开 Spyder 的属性,看一看目标是什么目 录。例如本机的 anaconda 安装路径为 C:\Users\lenovo\Anaconda2

下面设置环境变量

(1) 在用户变量“path”里添加 C:\Users\lenovo\Anaconda2\Library\bin\graphviz (2) 在系统变量的“path”里添加 C:\Users\lenovo\Anaconda2\Library\bin\graphviz\dot.exe (3) 如果现在有正在打开的 anaconda 程序,例如正在 Spyder,那么关闭 Spyder,再启动,这 样刚才设置的环境变量生效。

决策树分析

格式化原始数据

将下图的表 demo 输入到 Excel 中,保存为.csv 文件(.csv 为逗号分隔值文件格式)。 注意将表 demo 中的汉字值转换成数据字值,例如“是否是公司职员”列中的“是”为“1”, “否”为“0”。转换后的表中数据如下图所示。

学习表

编写数据分析代码

编写程序对上面的数据进行决策树分类,采用信息熵(entropy)作为度量标准。参考代码如下所示:

from sklearn.tree import DecisionTreeClassifier,export_graphviz
import graphviz
import csv

dataset = []
reader = csv.reader(open("demo.csv"))
for line in reader:
    if reader.line_num == 1:
        continue
    dataset.append(line)

X = [x[0:4] for x in dataset]
y = [x[4] for x in dataset]

clf = DecisionTreeClassifier(criterion='entropy').fit(X, y)
dot_data = export_graphviz(clf, out_file=None)
graph = graphviz.Source(dot_data)
graph.render("table");
digraph Tree {
node [shape=box] ;
0 [label="X[0] <= 0.5\nentropy = 0.94\nsamples = 14\nvalue = [9, 5]"] ;
1 [label="X[1] <= 1.5\nentropy = 0.985\nsamples = 7\nvalue = [3, 4]"] ;
0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
2 [label="entropy = 0.0\nsamples = 3\nvalue = [0, 3]"] ;
1 -> 2 ;
3 [label="X[1] <= 2.5\nentropy = 0.811\nsamples = 4\nvalue = [3, 1]"] ;
1 -> 3 ;
4 [label="entropy = 0.0\nsamples = 2\nvalue = [2, 0]"] ;
3 -> 4 ;
5 [label="X[3] <= 0.5\nentropy = 1.0\nsamples = 2\nvalue = [1, 1]"] ;
3 -> 5 ;
6 [label="entropy = 0.0\nsamples = 1\nvalue = [1, 0]"] ;
5 -> 6 ;
7 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 1]"] ;
5 -> 7 ;
8 [label="X[1] <= 2.5\nentropy = 0.592\nsamples = 7\nvalue = [6, 1]"] ;
0 -> 8 [labeldistance=2.5, labelangle=-45, headlabel="False"] ;
9 [label="entropy = 0.0\nsamples = 4\nvalue = [4, 0]"] ;
8 -> 9 ;
10 [label="X[3] <= 0.5\nentropy = 0.918\nsamples = 3\nvalue = [2, 1]"] ;
8 -> 10 ;
11 [label="entropy = 0.0\nsamples = 2\nvalue = [2, 0]"] ;
10 -> 11 ;
12 [label="entropy = 0.0\nsamples = 1\nvalue = [0, 1]"] ;
10 -> 12 ;
}

数据分析结果

程序运行结果在与该程序在同一目录下的 table.pdf 文件中,将每一个叶子结点转换成 IF-THEN 规则。

决策树分析结果

IF-THEN分类规则

(1)IF"不是公司员工" AND "年龄大于等于40", THEN "不买保险"。
(2)IF"不是公司员工" AND "年龄小于40", THEN "买保险"。
(3)IF"不是公司员工" AND "年龄大于50" AND "信用为良", THEN "不买保险"。
(4)IF"不是公司员工" AND "年龄大于40" AND "信用为优", THEN "买保险"。
(5)IF"是公司员工" AND "年龄小于50", THEN "不买保险"。
(6)IF"是公司员工" AND "年龄小于50" AND "信用为优", THEN "买保险"。
(7)IF"是公司员工" AND "年龄小于50" AND "信用为良", THEN "不买保险"。

本文链接:https://www.debuginn.cn/3041.html

本文采用CC BY-NC-SA 3.0 Unported协议进行许可,转载请保留此文章链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库复习题 考试题库(应用题)

    其中,供应商表S由供应商号(SNO)、供应商姓名(SNAME)、供应商所在城市(CITY)组成,记录各个供应商的情况;零件表P由零件号(PNO)、零件名称(PN...

    Debug客栈
  • PHP常用函数 截取字符串指定部分

    在项目开发中,与小组成员协商或者协调的传输字符串怎么在服务端进行截取及拆分,PHP原生函数并没有对这个需求的字符串函数,近期找到了一个比较实用的拆分函数,实际使...

    Debug客栈
  • 蓝桥杯 基础练习 十进制转十六进制

    十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至...

    Debug客栈
  • SAP CRM Service Request subjet storage design

    For example I have a service request with the following two level’s category mai...

    Jerry Wang
  • Face++ 3D人像光效SDK震撼上线!

    据了解,人像光效模式就是通过一系列软硬件配合的技术,让大家能够在拍摄人像或者后期编辑时利用算法,为照片添加上逼真的光影效果,比如自然光、摄影室灯光、轮廓光等。

    BestSDK
  • 用户画像

    关于用户画像的概念,数据相关从业人员应该都知道。用户画像的应用场景很广泛,比如精细化运营、数据分析与挖掘、精准营销、搜索和广告的个性化定向推送等。

    朱小五
  • 【晓头条】双 11 天猫京东交易额皆超千亿 / 腾讯大会首发微信大数据 / 武汉推首个无人警局小程序

    在此次会议上,微信为我们展示了有关微信、公众号、小程序生态的大数据。这些数据究竟说明了什么?答案就在本期的晓头条中。

    知晓君
  • GitHub项目推荐 | Comma.ai发布无人驾驶数据集comma2k19

    项目地址:https://github.com/commaai/comma2k19

    AI研习社
  • 开发 | Comma.ai 发布无人驾驶数据集 comma2k19

    项目地址:https://github.com/commaai/comma2k19

    AI科技评论
  • cuda&vs2010的属性配置

    平时总需要新建工程,但是却总忘记该修改哪里,于是寻找了官方的项目,截下其中的属性修改图。 1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 ?...

    用户1154259

扫码关注云+社区

领取腾讯云代金券