无标题文章

'''

def chooseBestFeatureToSplit(dataSet):

numFeatures=len(dataSet[0])-1  #每组的特征值数量,去掉了最后的标签

baseEntropy=calcShannonEnt(dataSet) #计算数据集的原始香农熵

bestInfoGain=0.0;bestFeature =  -1

for i in range(numFeatures):

featList=[example[i] for example in dataSet] #相同位置的第i个特征值

uniqueVals=set(featList) #set(集合):获取list中所有不重复的元素值

newEntropy=0.0

for value in uniqueVals:

subDataSet=splitDataSet(dataSet,i,value)  #针对当前的value划分出新的数据集

prob=len(subDataSet)/float(len(dataSet))  #新数据集所占比例

newEntropy+=prob*calcShannonEnt(subDataSet) #这里用加权求和,求出新的熵值

infoGain=baseEntropy-newEntropy                #新旧相减,得到信息增益

if (infoGain>bestInfoGain):    #随着i的增加逐次进行减法,结果为正说明熵减,则infogain越大越好

bestInfoGain=infoGain

bestFeature=i              #逐次比较,得到最大的信息增益

return bestFeature

'''

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容