机器学习实战 决策树代码 计算香农熵 Error return arrays must be of ArrayType

来源:互联网 发布:淘宝怎么修改一口价 编辑:程序博客网 时间:2024/06/08 17:10
from math import logimport xlrd***# from numpy import ****import operatordef calcShannonEnt(dataSet):#calculata shannonEnt    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#使用所有类标签的发生频率计算类别出现的概率        tmp = prob*log(prob,2)        shannonEnt -= tmp#得到香农熵    return shannonEnt

代码在运行时会出现TypeError: return arrays must be of ArrayType的错误,因为log的第二个参数不是base而是out array。如果你只是想执行普通的log操作,可以选择使用numpy.math.log(1.1, 2)或者使用python自带的math模块的log函数,而不是导入numpy中所有的函数TT

原创粉丝点击