3.1.1信息增益
2021/7/22 6:06:01
本文主要是介绍3.1.1信息增益,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 #计算给定数据集的香农熵 2 from math import log 3 4 def calcShannonEnt(dataSet): 5 numEntries = len(dataSet) #样本条目数 6 labelCounts = {} 7 for featVec in dataSet: 8 currentLabel = featVec[-1] #取每个样本最后一列值 9 labelCounts[currentLabel] = labelCounts.get(currentLabel,0)+1 10 #以上得到字典:{'yes':2,'no':3} 11 shannonEnt = 0.0 12 for key in labelCounts: 13 prob = float(labelCounts[key])/numEntries #求得每个种类的概率 14 shannonEnt -= prob * log(prob,2) #信息熵公式 15 return shannonEnt #返回信息熵 16 ''' 17 if currentLabel not in labelCounts.keys(): #填充字典:以currentLabel为key 18 labelCounts[currentLabel] = 0 19 labelCounts[currentLabel] += 1 #注意缩进 20 #以上得到字典:{'yes':2,'no':3} 21 ''' 22 ''' 23 if currentLabel not in labelCounts.keys(): 24 labelCounts[currentLabel] = 1 25 else: 26 labelCounts[currentLabel] += 1 27 #以上得到字典:{'yes':2,'no':3} 28 ''' 29 def createDataSet(): 30 dataSet = [[1,1,'maybe'], 31 [1,1,'yes'], 32 [1,0,'no'], 33 [0,1,'no'], 34 [0,1,'no']] 35 labels = ['no surfacing','flippers'] 36 return dataSet,labels
这篇关于3.1.1信息增益的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19JAVA分布式id教程:轻松入门与实践
- 2024-11-19Java高并发教程:入门与实践指南
- 2024-11-19JAVA高并发直播教程:新手入门指南
- 2024-11-19Java高并发直播教程:入门与实践指南
- 2024-11-19Java微服务教程:初学者快速入门指南
- 2024-11-19JAVA微服务教程:新手入门的详细指南
- 2024-11-19Java微服务教程:从零开始搭建你的第一个微服务应用
- 2024-11-19Java项目开发教程:初学者必备指南
- 2024-11-19Java项目开发教程:新手快速入门指南
- 2024-11-19Java项目开发教程:零基础入门到实战