决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干个子集。对于非纯的叶节点,多数类的标号给出到达这个节点的样本所属的类。构造决策树的核心问题是在每一步如何选择适当的属性对样本做拆分。对一个分类问题,从已知类标记的训练样本中学习并构造出决策树是一个自上而下,分而治之的过程

决策树方法在分类、预测、规则提取等领域有着广泛应用。机器学习研究者J.Ross Quinlan 提出了ID3算法以后,决策树在机器学习、数据挖掘领域得到了极大的发展,之后又提出了C4.5,成为了新的监督学习算法。另外还有CART分类算法,值得一提的是ID3和CART孙法都是采用类似的方法从训练样本中学习决策树。

接下来简单叙述一下这几个算法:

ID3算法:

其核心是在决策树的各级节点上,使用信息增益方法作为属性的选择标准,来帮助确定生成每个节点所应采用的合适属性。

C4.5算法:

C4.5决策生成算法相对于ID3算法的重要改进是使用信息增益率来选择节点属性。C4.5算法可以克服ID3算法存在的不足:ID3适用于离散的描述属性,而C4.5算法即能够处理离散的描述属性,也可以处理连续的描述属性

CART算法:

CART决策树是一种十分有效的非参数分类和回归方法,通过构建树、修建树、评估树来构建一个二叉树。当终结点是连续变量时,该树为回归树;当终结点是分类变量,该树为分类树。

本文主要介绍一下ID3算法。

ID3算法的简介以及原理:

ID3算法给予信息熵来选择最佳测试属性。它选择当前样本集中具有最大信息增益值的属性作为测试属性;样本集的划分则依据测试属性的取值进行,测试属性有多少不同取值就将样本集划分为多少子样本集,同时决策树上相应于该样本集的节点长出新的叶子节点。

根据信息论理论,采用划分样本集的不确定性作为衡量划分好坏的标准,用信息增益值度量不确定性:信息增益值越大,不确定性越小,因此,在每个非叶节点选择信息增益最大的属性作为测试属性,这样可以得到当前情况下最纯的拆分,从而得到较小的决策树。

公式如图

显然E(A)越小,Gain(A)的值越大,说明测试属性A对于分类提供的信息越大,选择A之后对分类的不确定程度越小。

ID3的算法具体实现步骤如下:

1,对当前样本集合,计算所有属性的信息增益

2,选择信息增益最大的属性作为测试属性,把测试属性取值相同的样本划分到同一个子样本集;

3,若子样本集的类别属性只含有单个属性,则分支为叶子结点,判断其属性值并标上相应的符号,然后返回调用出;否则对子样本集递归调用本算法。

废话不多说,直接贴代码为证:

#-*- coding: utf-8 -*-

import pandasas pd

#参数初始化

inputfile ='path'

data = pd.read_excel(inputfile, index_col =u'序号')#导入数据

#数据如果是类别标签,需要转化为数据

#用1和-1分别代表各自标签

data[data ==u'标签A'] =1

data[data ==u'标签B'] =1

data[data ==u'标签B'] =1

data[data !=1] = -1

x = data.iloc[:,:3].as_matrix().astype(int)

y = data.iloc[:,3].as_matrix().astype(int)

from sklearn.treeimport DecisionTreeClassifieras DTC

dtc = DTC(criterion='entropy')#建立决策树模型,

dtc.fit(x, y)#训练模型

#导入相关函数,可视化决策树

from sklearn.treeimport export_graphviz

x = pd.DataFrame(x)

from sklearn.externals.siximport StringIO

x = pd.DataFrame(x)

with open("tree.dot", 'w')as f:

f = export_graphviz(dtc, feature_names = x.columns, out_file = f)

python决策树分类预测_数据分类预测之python决策树相关推荐

  1. python文本分类特征选择_文本挖掘之特征选择(python 实现)

    机器学习算法的空间.时间复杂度依赖于输入数据的规模,维度规约(Dimensionality reduction)则是一种被用于降低输入数据维数的方法.维度规约可以分为两类: 特征选择(feature ...

  2. python决策树分类鸢尾花_基于决策树—鸢尾花分类

    决策树算法广泛应用于:语音识别.医疗诊断.客户关系管理.模式识别.专家系统等,在实际工作中,必须根据数据类型的特点及数据集的大小,选择合适的算法. 本文选择经典案例--<鸢尾花分类> 一. ...

  3. python决策树分类案例_银行产品销售案例与决策树分类算法

    案例数据集来源于UCI网站.案例是基于一家葡萄牙金融机构的电话销售数据.营销目标是确认客户是否愿意认购银行发行的一款定期储蓄产品.该数据集内包含41188条记录和20个特征变量,和1个分类变量.变量包 ...

  4. 使用决策树分类算法判断一下你的Python水平

    决策树算法是一种常用的机器学习算法,既可以用于分类,也可以用于回归.决策树算法类似于程序设计语言中嵌套的多分支选择结构,根据不同的条件选择不同的分支路径,最终到达叶子节点,并给出单一输出结果. 决策树 ...

  5. python 文本分类卡方检验_中文文本分类:你需要了解的10项关键内容

    文本分类指的是计算机通过算法对输入的文本按照一定的类目体系进行自动化归类的过程.在人工智能浪潮席卷全球的今天,文本分类技术已经被广泛地应用在文本审核.广告过滤.情感分析和反黄识别等NLP领域.本文从达 ...

  6. python 多分类情感_文本情感分类(一):传统模型

    前言:四五月份的时候,我参加了两个数据挖掘相关的竞赛,分别是物电学院举办的"亮剑杯",以及第三届 "泰迪杯"全国大学生数据挖掘竞赛.很碰巧的是,两个比赛中,都有 ...

  7. 租金 预测_如何预测租金并优化租赁期限,从而节省资金

    租金 预测 by Zhen Liu 刘震 如何预测租金并优化租赁期限,从而节省资金 (How to Predict Rent and Optimize Your Lease Duration So Y ...

  8. 使用Java写出身高预测_何预测孩子身高遗传潜质

    1.男孩:(父亲身高+母亲身高+13)÷2±5cm 2.女孩:(父亲身高+母亲身高-13)÷2±5cm 「长高」三要素: 1.运动:以轻巧的伸展运动为主,诸如游泳和球类运动. 2.营养:大多数矮小儿童 ...

  9. python实现tomasulo算法_手写算法-python代码实现KNN

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 原理解析 KNN-全称K-Nearest Neighbor,最近邻算法,可以做分类任务,也可以做回归 ...

最新文章

  1. Java公开课-02.抽象类和接口
  2. RealFormer:把残差转移到Attention矩阵上面去
  3. 【渝粤题库】陕西师范大学209013 计量经济学 作业
  4. WinCE BSP中的DAT文件介绍
  5. C++(STL):23 ---序列式容器queue源码剖析
  6. java数组与C++数组间的区别
  7. Android进程间通信(复习笔记)
  8. AX 2009 父窗体参数记录传递
  9. 实用的工具 —— 百度云、everything(全局搜索)、Everest(硬件检测)、TechPowerUp GPU-Z
  10. hdu--2660--二维费用背包
  11. docker-ce版本与安装过程
  12. 东方财富代码选股_教你选股!一招搞定!
  13. 使用phpStudy显示3306端口被占用,该怎么办?
  14. 活久见:都 2203 年了,你还在使用 word 调试 API
  15. 饥荒联机版服务器搭建_Linux 搭建饥荒联机版服务器
  16. Notification使用举例
  17. 计算机科学人工智能的应用,计算机人工智能技术的应用与发展.pdf
  18. module_param传递参数
  19. 本地——云服务器文件传输
  20. Regulator相关GPIO控制使用流程简析

热门文章

  1. Git:git brash的常用指令
  2. echarts 折线图面积区域渐变
  3. linux机器的CPU过热
  4. 树莓派Bullseye版本更新
  5. JAVA中的时间大小比较
  6. Opencv之人脸关键点定位
  7. 可以翻译ppt文档的软件有哪些?
  8. html下拉菜单触摸显示,CSS导航:纯CSS触碰式下拉菜单
  9. 解决keil-5中stm32f103系列使用ST-Link下载程序时不能连接的问题。“flash download failed ”
  10. VS 读、写.csv文件