作家
登录

机器学习决策树算法学习笔记

作者: 来源: 2017-05-11 09:05:24 阅读 我要评论

根本概念

决定计划树是分类算法。

数据类型:数值型和标称型。因为构造算法只实用于标称型,所以数值型数据必惺攀离散化。

工作道理

  1. def storeTree(inputTree,filename):   
  2.     import pickle 
  3.     fw = open(filename,'w'
  4.     pickle.dump(inputTree,fw) 
  5.     fw.close()  
  6. def grabTree(filename):   
  7.     import pickle 
  8.     fr = open(filename) 
  9.     return pickle.load(fr) 

应用喷鼻浓熵找到信息增益最大年夜的特点,按照信息增益最大年夜的特点划分数据,如斯反复,让无序的数据变的加倍有序。应用ID3算法构建树构造。当传入一个新数据时,按照数据找到对应树节点,直到最后没有叶子节点时,完成分类。

样例

不浮出水面是否可以生计? 是否有脚蹼? 是否是鱼类?

经由过程“不浮出水面是否可以生计”和“是否有脚蹼”这两个特点来断定是否是鱼类。构建一个简单决定计划树,如不雅获得一个新的生物,可以用词攀来断定是否是鱼类。

样例代码

  1. def createDataSet():   
  2.     dataSet = [[1, 1, 'yes'], 
  3.                [1, 1, 'yes'], 
  4.                [1, 0, 'no'], 
  5.                [0, 1, 'no'], 
  6.                [0, 1, 'no']] 
  7.     labels = ['no surfacing','flippers'
  8.     return dataSet, labels 

喷鼻农熵公式

如不雅待分类的事务可能划分在多个分类之中,则符号Xi的信息定义为:

机械进修决定计划树算法进修标记

个中P(Xi)是选择该分类的概率

个中n是分类的数量

喷鼻农熵算法

  1. def calcShannonEnt(dataSet):   
  2.     # 选择该分类的概率 就是每个类型/总个数 
  3.     # 总数,若干行数据 
  4.     numEntries = len(dataSet) 
  5.     labelCounts = {} 
  6.     # 取到的每个类型个数 
  7.     for featVec in dataSet: 
  8.         currentLabel = featVec[-1] 
  9.         if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0 
  10.         labelCounts[currentLabel] += 1 
  11.  
  12.     shannonEnt = 0.0 
     1/5    1 2 3 4 5 下一页 尾页

      推荐阅读

      用gdb分析coredump的一些技巧

    前几天我们正在运营的一款产品产生了崩溃,我花了两天测验测验用 gdb 分析了 coredump ,固然最后照样没能找到 bug ,但照样认为应当做一些总结。产品是基于 skynet 开辟的,因为汗青原因>>>详细阅读


    本文标题:机器学习决策树算法学习笔记

    地址:http://www.17bianji.com/lsqh/35136.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)