机器学习-决策树实现-python
今天翻自己的书库的时候,才发现了之前买的一本《机器学习导论》。随手翻了翻,就直接看到了之前看到的决策树实现的问题理论。
闲来无事,也就得写点代码来play 一下:
决策树的概念想必大家都十分熟悉,特别想我们小时候玩的跳方格的游戏。或者说我们之前玩的你猜我猜的游戏,猜不对继续猜,总有一天你会猜对额
为了确定从哪一个特征来进行判别,我们需要一个衡量标准来分类。
1…香农熵
2…信息增益
那我们来实现第一个……香农熵
from math import log def calcShannonEnt(dataset) numEntries =len(dataset): labelCounts={} for featureVector in dataset : currentLabel=featVec[-1] if currentLabel not in labelCounts.keys(): labelCounts[currentLabel]=0 labelCounts[currentLabels]+=1 shannonEnt=0.0 for key in labelCounts: prob=float(labelCounts[key])/numEntries shannonEnt-=prob*log(prob,2) return shannonEnt
这个代码借鉴了机器学习实战的代码,事实上该段代码具有可重复利用性。