ID3算法的决策树的构造
决策树的理论部分,不再赘述,本篇博文主要是自己的学习笔记(《机器学习实战》)
先看下述决策树,希望对理解决策树有一定的帮助。
3.1.1信息增益
首先需要了解两个公式:
创建名为treesde.py文件,将下述代码添加进去
from math import log
def calcShannonEnt(dataSet):#该函数的功能是计算给定数据集的香农熵
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
shannonEnt-=prob*log(prob,2)
return shannonEnt
输入数据集
def createDataSet():
dataSet=[[1,1,'yes'],
[1, 1, 'yes'],
[1,0,'no'],
[0, 1, 'no'],
[0, 1, 'no'],
]
labels=['no suffacing','flippers']
return dataSet,labels
在python命令提示符下输入下述命令:
得到的0.970~~~~就是商,熵越高则说明混合的数据越多。