实验二 决策树分类算法的实现及其应用
【实验目的】
- 掌握决策树分类算法ID3的概念,理解算法的步骤。
- 加深对ID3算法的理解,逐步培养解决实际问题的能力。
【实验性质】
设计型实验
【实验内容】
使用ID3算法来实现决策树分类
【实验环境】
Python 2
【实验结果】
【实验步骤】
程序清单3-1 计算给定数据集的香农熵
程序代码:
import operator
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 surfacing','flippers']
return dataSet,labels
运行结果;
程序清单3-2 按照给定特征划分数据集
程序代码:
def splitDataSet(dataSet,axis,value):
retDataSet=[]
for featVec in dataSet:
if featVec[axis] == value:
reducedFeatVec=featVec[:axis]
reducedFeatVec.extend(featVec[axis+1:])
retDataSet.append(reducedFeatVec)
return retDataSet