读取play.csv文件中的内容,并计算数据集play.csv(未考虑任何特征前)的熵值。
注:1、即使用熵值的公式
2、在play.csv文件中outlook(天气),TEMPERATURE(温度)、HUMIDITY(湿度)、
WINDY(风)代表四个特征。
最后一类代表类别,即是否出去打球
from math import log
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
for key in labelCounts:
prob=float(labelCounts[key])/numEntries
shannonEnt-=prob*log(prob,2)
return shannonEnt
print(calcShannonEnt('play.csv'))