机器学习实战,第三章,临时代码
来源:互联网 发布:2016gdp 知乎 编辑:程序博客网 时间:2024/05/16 11:31
#coding=utf-8from math import logdef 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 # 香农熵 for key in labelCounts: prob=float(labelCounts[key])/numEntries shannonEnt-=prob*log(prob,2) # 以2为底求对数 return shannonEntdef createDataSet(): dataSet=[[1,1,'yes'], [1,1,'yes'], [1,0,'no'], [0,1,'no'], [0,1,'no']] labels=['no surfacing','flippers'] return dataSet,labelsdef splitDataSet(dataSet,axis,value): # python在函数中传递的是列表的引用,在函数内部对列表对象的修改, # 将会影响该列表对象的整个生存周期。所以需要在函数的开始声明新的list对象 retDataSet=[] for featVec in dataSet: # 将符合特征的数据抽取出来 if featVec[axis]==value: reducedFeatVec=featVec[:axis] reducedFeatVec.extend(featVec[axis+1:]) retDataSet.append(reducedFeatVec) return retDataSetdef 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] 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) infoGain=baseEntropy-newEntropy # 计算最好的信息增益 if infoGain > bestInfoGain: bestInfoGain=infoGain bestFeature=i return bestFeature
0 0
- 机器学习实战,第三章,临时代码
- 机器学习实战python版第三章决策树代码理解
- 机器学习实战-第三章决策树-代码理解-读书笔记
- 机器学习实战--第三版代码修改
- 机器学习实战+第三章_决策树
- 机器学习实战-第三章(决策树)
- 【读书笔记】机器学习实战-第三章 决策树
- 《机器学习实战》读书笔记第三章
- 机器学习实战 第十一章 代码问题
- 《Spark MLlib 机器学习》第三章代码
- 机器学习实战 第三章 决策树 学习笔记
- 机器学习实战- 第三章 决策树-学习笔记
- 《机器学习实战》学习笔记-第三章-决策树
- 《机器学习实战》读书笔记 第三章 决策树(part 1)
- 《机器学习实战》读书笔记 第三章 决策树(part 3)
- 机器学习实战第三章——决策树程序
- 机器学习实战第三章——决策树(源码解析)
- [完]机器学习实战 第三章 决策树(Decision Tree)
- 树和二叉树——二叉树算法库
- 第10周 项目2 - 二叉树遍历的递归算法
- 第11周 项目1—(二叉树的构造)
- Linux0.11--malloc,存储桶原理
- 【软考】解析直接地址索引和间接地址索引
- 机器学习实战,第三章,临时代码
- 栈和队列
- Linux下设置ORACLE自动启动与关闭
- SQL基础学习1
- 第十周实践项目一--二叉树算法库
- 让吃货失望的菜单
- 第十周项目3--利用二叉树遍历思想解决问题(4)
- 模拟频率、数字频率、模拟角频率 之间的关系
- NDK环境搭建及单步调试注意点