按照喷鼻农熵划分数据
除了须要测量信息熵,还须要划分数据集,度量花费数据集的熵,以便断定当前是否精确划分。 轮回计算喷鼻浓熵和splitDataSet(),找到最好的特点划分方法。
- def splitDataSet(dataSet, axis, value):
- # 这个算法返回axis下标之外的列
- retDataSet = []
- for featVec in dataSet:
- if featVec[axis] == value:
- reducedFeatVec = featVec[:axis] #chop out axis used for splitting
- reducedFeatVec.extend(featVec[axis+1:])
- retDataSet.append(reducedFeatVec)
- return retDataSet
- def chooseBestFeatureToSplit(dataSet):
- # 先取最后一列,用在标签结不雅:是鱼或不是鱼。
- numFeatures = len(dataSet[0]) - 1
- # 原始喷鼻浓熵
- baseEntropy = calcShannonEnt(dataSet)
- bestInfoGain = 0.0; bestFeature = -1
- # 遍历所有的特点
- for i in range(numFeatures):
- # 创建一个列表包含这个特点的所有值
- featList = [example[i] for example in dataSet]
- # 应用set去重
- uniqueVals = set(featList)
- newEntropy = 0.0
- # 计算该特点所包含类型的喷鼻浓熵之和
- for value in uniqueVals:
- subDataSet = splitDataSet(dataSet, i, value)
- prob = len(subDataSet)/float(len(dataSet))
- newEntropy += prob * calcShannonEnt(subDataSet)
推荐阅读
前几天我们正在运营的一款产品产生了崩溃,我花了两天测验测验用 gdb 分析了 coredump ,固然最后照样没能找到 bug ,但照样认为应当做一些总结。产品是基于 skynet 开辟的,因为汗青原因>>>详细阅读
本文标题:机器学习决策树算法学习笔记
地址:http://www.17bianji.com/lsqh/35136.html
1/2 1

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