今天课多,并且终于周五了
稍微学习一下休息了
今天开始学习决策树机器学习
第一部分为信息熵
其概念为 某信息出现的概率的以2为底的对数的期望
sigma ( pi * log(pi,2))
其主要作用为帮助我判断特征值的优劣。
如某一特征值统一性高,则拥有较高的信息增益,可以当作此类的代表
具体代码如下:
from math import log
def calcshannonEnt (dataSet):
numEntries = len(dataSet) #返回数据集中所含数据的数量
labelCounts={}#以每个标签为一类,计算每个标签对应的出现次数,并保存为字典
for featVec in dataSet: #遍历每一行
currentLabel = featVec[-1]#提取当前循环的对象的最后一个元素
if currentLabel not in labelCounts.key():
labelCounts[currentLabel] = 0 #若是第一次提取到的对象,则建立键并值为0
labelCounts[currentLabel] += 1 #累计一次
shannonEnt = 0.0
for ket in labelCounts:
prob = float(labelCounts[key])/numEntries #计算p 该键出现次数/总数据数
shannonEnt -= prob * log(prob,2) #累加概率以及对应log的乘积,计算期望得到信息熵
return shannonEnt
明天继续学习决策树
以及复习计量知识