- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机器学习算法-决策树原理分析和源代码详解
机器学习算法-决策树原理分析和源代码详解
前⾔
上⼀篇⽂章我们介绍了KNN邻近算法,分析了这个算法的⼀些优缺点。这⼀篇,针对KNN⽆法理解数据内容的缺点,我们来介绍决策树。
源代码地址:
决策树理论分析
⼀、概念解释
决策树是将已有的数据,建⽴起来⼀个规则树。
举个例⼦吧,假如我们要开发⼀个垃圾邮件识别系统,我们来使⽤⼀个树状图来描述⼀下我们进⾏判断的过程:
当然,我们判断邮件是否是垃圾邮件的规则有很多,我这⾥只是随便写了⼀个,当作⼀个例⼦。
当收到邮件时,我们会先看发邮件的是不是⾃⼰通讯录⾥⾯的⼈,如果是的话,即判定该邮件不是垃圾邮件。
如果不是联系⼈发来的邮件,我们需要点进去查看邮件内容进⾏判断,如果内容带有⼴告,那么可以判定该邮件是垃圾邮件,否则判定为⾮
垃圾邮件。
这个思考过程我们很容易理解,因为这个过程正是我们从⼩到⼤认识、辨别事物的思考过程。
想想⼩时候你⽗母如何教你辨认猫狗的,通过不同的特征⼀步⼀步进⾏判定,有⼀些特征是⾮常明显的,我们通过该特征⼀下就能辨别,⽐
如叫声。但是有些特征那个不太明显,⽐如体型、⽑⾊等。
好了,如果你能理解上⾯我举得例⼦,那么,恭喜你,决策树的理论你也就明⽩了:我们就是从数据集的属性出发,不断地找出辨识度⾼的
属性,来⼀步⼀步构建我们的思考过程。
⼆、信息熵、信息量
上⾯我们说到,需要不断找出辨识度⾼的属性,那么,如何进⾏判定哪个属性的辨识度最⾼呢,也就是说哪个属性能够更好的区分数据呢?
我们⾸先来了解两个概念熵和信息
⼀件事情对于某⼈⽽⾔属于哪个类别的不确定性被称为熵
能够消除某⼈对这件事情的不确定性的叫做信息
我们数据中的属性值,可以理解为信息,它⽤来帮助我们取判断数据的归属问题,可以解决我们对于数据归属的不确定性。
还是拿动物举例,当我们知道这个动物是狗的话,此时这件事的熵为0。当我们没有获得任何信息,可以认为这个动物属于猫还是属于狗的
概率⼀样,都是50%,此时,熵值最⼤。随着我们不断获取这个动物的⼀些属性特征,我们对于判断这个动物属于猫还是属于狗的概率会发
⽣变化。
接下来我们看⼀下信息熵公式:
P是变量x的概率值。
当我们没有获取任何信息时,可以认为变量x的概率值⼀样,此时H1的值最⼤。
当我们获取到了⼀些信息,变量x的概率值发⽣了变化,此时H2的值相对上⼀个H1的值要⼩
当我们了解了许多信息,已经判断出了X的归属问题,此时Px=1 那么,H3的值为0
三、决策树是实现过程
上⾯我们介绍了信息熵的概念,这个概念⽐较抽象,我收集了⼀些⽐较容易理解地资料放在⽂末,⼤家可以去详细了解⼀下,不过只要是明
⽩上⾯我说地,对于这⼀个算法就够⽤了。
1. 通过计算信息熵,找到辨识度最⼤地属性
2. 划分数据集
3. 创建分⽀节点,创建决策树
4. 不断循环1、2、3,,直到属性使⽤完毕或者数据中只剩下⼀种类型
这个过程看的是有点抽象,没关系,下⾯使⽤代码进⾏详细解释
决策树源代码解析
⼀、加载数据
def loadData(dataseturl ):
dataset = []
with open (dataseturl ) as f :
dataall = f .readlines()
for data in dataall :
dataline = data .strip().split(\t)
dataset .append (dataline)
(年龄)、 (症状)、 (是否散光)、 (流泪程度)
#age prescript astigmatic tearRate
labels =[age ,prescript ,astigmatic ,tearRate ]#四个属性
return dataset ,labels
这⾥我们使⽤了《机器学习实战》所给的数据集,是关于推荐隐形眼镜类型的⼀个数据集。⼀共有四个属性,代码中注释已经给出每个属性
的意义。
⼆、计算数据的信息熵
def calShannonEnt (dataset ):
numEntries = len(dataset )
labelCounts ={}
for data in dataset :
classlabel = data [-1]
if(cla
您可能关注的文档
- 辽宁省辽阳市二年级下册语文期中学业水平测试卷D卷.pdf
- 辽宁省沈阳市2018年学业水平测试预测数学试题1Word版含答案.pdf
- 2019-2020学年辽宁省朝阳市英语八年级(上)期末学业水平测试模拟试题.pdf
- 辽宁省锦州市2018-2019学年八上物理期末学业水平测试试题.pdf
- 辽宁省阜新市2019年七年级上学期语文期末学业水平测试试题(模拟卷三).pdf
- 辽宁省朝阳市2020届七上地理期末学业水平测试试题.pdf
- 辽宁省朝阳市一年级上学期语文期末学业水平测试卷A卷.pdf
- 辽宁省辽阳市二年级下册语文期中学业水平测试卷(I)卷.pdf
- 辽宁省鞍山市2019-2020学年英语七上期末模拟学业水平测试试题(1).pdf
- 2020年辽宁省盘锦市八年级第二学期期末学业水平测试数学试题含解析.pdf
文档评论(0)