决策树原理的python实现
作者:互联网
我们已经知道ID3算法是基于信息增益来实现的,下面就根据原理写出代码:
1.首先计算信息熵
from math import log # 计算数据集的信息熵,注意,该数据的数据类型是list def calcShannonEnt(dataset): numEntries = len(dataset) # 样本数,这里的dataSet是列表 labelCounts = {} #定义一个字典,key为类别,值为类别数 for featVec in dataset: # 统计各个类别的个数 currentLabel = featVec[-1] #最后一列是类别 if currentLabel not in labelCounts.keys(): #主要判断类别中的类别有有没有出现过,如果以前没有出现过,这赋值为0, labelCounts[currentLabel] = 0 labelCounts[currentLabel] += 1 #用于计算每个类别的个数 shannonEnt = 0.0 # 信息熵 for key in labelCounts: prob = float(labelCounts[key])/numEntries #记得要将数据转Wie浮点型 shannonEnt -= prob * log(prob,2) return shannonEnt # 信息熵
2.按照给定特征划分数据集,主要用于
标签:currentLabel,labelCounts,python,shannonEnt,dataset,信息熵,类别,原理,决策树 来源: https://www.cnblogs.com/cgmcoding/p/13558050.html