机器学习实战代码 第三章3-1注释
2018-01-24 17:36
253 查看
# -*- coding: cp936 -*- from math import log 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 def calShannonEnt(dataset): numEntries=len(dataset)#计算数据集中实例的总数 labelCounts={} for featVec in dataSet: currentLabel=featVec[-1] #统计当前类别出现的次数,利用到字典的自动添加功能 if currentLabel not in labelCounts.keys(): labelCounts[currentLabel]=0 labelCounts[currentLabel]+=1 #能否替换为下面的这一行代码?yes,u can #labelCounts[currentLabel]=labelCounts.get(currentLabel,0)+1 print labelCounts shannonEnt=0.0 for key in labelCounts: prob=float(labelCounts[key])/numEntries shannonEnt-=prob*log(prob,2)
labelCounts是这样子的:
>>> import trees
>>> dataSet,labels=createDataSet
>>> calShannonEnt(dataSet) {'yes': 1} {'yes': 2} {'yes': 2, 'no': 1} {'yes': 2, 'no': 2} {'yes': 2, 'no': 3}#labelCounts 0.9709505944546686#香农熵
相关文章推荐
- 读书笔记:机器学习实战(1)——章2的knn代码和个人改进与注释
- 代码注释:机器学习实战第12章 使用FP-growth算法来高效发现频繁项集
- 读书笔记:机器学习实战(3)——章4的朴素贝叶斯分类代码和个人理解与注释
- 代码注释:机器学习实战第5章 Logistic回归
- 代码注释:机器学习实战第4章 基于概率论的分类方法:朴素贝叶斯
- 读书笔记:机器学习实战(5)——章6的支持向量机代码和个人理解与注释
- 机器学习实战python版第三章决策树代码理解
- 代码注释:机器学习实战第11章 使用Apriori算法来发现频繁集
- 机器学习实战,第三章,临时代码
- 代码注释:机器学习实战第2章 k-近邻算法
- 代码注释:机器学习实战第6章 支持向量机
- 代码注释:机器学习实战第8章 预测数值型数据:回归
- 机器学习实战:KNN 代码注释(python)
- 机器学习实战之KNN算法识别手写数字_代码注释
- 代码注释:机器学习实战第7章 利用AdaBoost元算法提高分类性能
- 机器学习实战 第二章KNN(1)python代码及注释
- 代码注释:机器学习实战第10章 利用K-均值聚类算法对未标注数据分组
- 机器学习实战 朴素贝叶斯原理及代码
- 机器学习实战代码3-5
- 机器学习实战-决策树ID3-python代码