Python3机器学习之02通过计算熵来选择分组
2023-09-11 14:18:32 时间
from numpy import *
def calshannonent(dataset): #计算信息熵
numentries=len(dataset)
labelcounts={}
for featvec in dataset: #对dataSet的每一个元素进行处理
currentlabel=featvec[-1] #//将dataSet的每一个元素的最后一个元素选择出来
if currentlabel not in labelcounts.keys():
labelcounts[currentlabel]=0 #//若没有该键,则使用字典的自动添加进行添加值为0的项,取0是因为下一行代码
labelcounts[currentlabel] +=1 #对currentlabel计数,每有一个key:currentlabel,就在对应的key的值上加一
shannonent=0
for key in labelcounts:
prob=float(labelcounts[key])/numentries
shannonent -= prob*math.log(prob,2)
return shannonent
采取分而治之的思想,先将数据集进行分割,然后在单独计算熵
def splitdataset(dataset,axis,value): #按特征选取除该特征之外的特征数据
retdataset=[]
for featvec in dataset:
if fe