该博客介绍了使用Python3进行机器学习时,如何运用分而治之的思想来处理数据集。作者详细阐述了如何导入数据、分割特征,并遍历数据集以计算香农熵,寻找最佳特征划分策略。在实践中遇到了`TypeError: return arrays must be of ArrayType`的错误,通过调整numpy.log函数的使用方式或切换到math模块的log函数解决了问题。
摘要由CSDN通过智能技术生成
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