网站大量收购独家精品文档,联系QQ:2885784924

机器学习算法-决策树原理分析和源代码详解.pdfVIP

机器学习算法-决策树原理分析和源代码详解.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

134****3224 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档