zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python3机器学习之02通过计算熵来选择分组

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