根本概念
决定计划树是分类算法。
数据类型:数值型和标称型。因为构造算法只实用于标称型,所以数值型数据必惺攀离散化。
工作道理
- def storeTree(inputTree,filename):
- import pickle
- fw = open(filename,'w')
- pickle.dump(inputTree,fw)
- fw.close()
- def grabTree(filename):
- import pickle
- fr = open(filename)
- return pickle.load(fr)
应用喷鼻浓熵找到信息增益最大年夜的特点,按照信息增益最大年夜的特点划分数据,如斯反复,让无序的数据变的加倍有序。应用ID3算法构建树构造。当传入一个新数据时,按照数据找到对应树节点,直到最后没有叶子节点时,完成分类。
样例
不浮出水面是否可以生计? 是否有脚蹼? 是否是鱼类?
经由过程“不浮出水面是否可以生计”和“是否有脚蹼”这两个特点来断定是否是鱼类。构建一个简单决定计划树,如不雅获得一个新的生物,可以用词攀来断定是否是鱼类。
样例代码
- def createDataSet():
- dataSet = [[1, 1, 'yes'],
- [1, 1, 'yes'],
- [1, 0, 'no'],
- [0, 1, 'no'],
- [0, 1, 'no']]
- labels = ['no surfacing','flippers']
- return dataSet, labels
喷鼻农熵公式
如不雅待分类的事务可能划分在多个分类之中,则符号Xi的信息定义为:

个中P(Xi)是选择该分类的概率
个中n是分类的数量
喷鼻农熵算法
- def calcShannonEnt(dataSet):
- # 选择该分类的概率 就是每个类型/总个数
- # 总数,若干行数据
- numEntries = len(dataSet)
- labelCounts = {}
- # 取到的每个类型个数
- for featVec in dataSet:
- currentLabel = featVec[-1]
- if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0
- labelCounts[currentLabel] += 1
- shannonEnt = 0.0
推荐阅读
前几天我们正在运营的一款产品产生了崩溃,我花了两天测验测验用 gdb 分析了 coredump ,固然最后照样没能找到 bug ,但照样认为应当做一些总结。产品是基于 skynet 开辟的,因为汗青原因>>>详细阅读
本文标题:机器学习决策树算法学习笔记
地址:http://www.17bianji.com/lsqh/35136.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示