决策树

  • 决策树归纳的基本算法是贪心算法,它以自顶向下递归各个击破的方式构造决策树。
  • 贪心算法:在每一步选择中都采取在当前状态下最好的选择。
  • 在其生成过程中,分割方法即属性选择度量是关键。通过属性选择度量,选择出最好的将样本分类的属性。
  • 根据分割方法的不同,决策树可以分为两类:基于信息论的方法(较有代表性的是ID3、C4.5算法等)和最小GINI指标方法(常用的有CART,SLIQ及SPRINT算法等)。

前面已经学习了预备知识信息量Gini index

ID3算法

ID3的属性选择度量就是使用信息增益,选择最高信息增益的属性作为当前节点的测试属性。


p是parent node首字母,
IG表示信息增益,
f表示特征,
D_p代表父节点数据集,
D_j表示子节点j的数据集,
N_p表示父节点样本个数
N_j表示子节点j样本个数

下面举个例子

Outlook Temperature Humidity Windy Play
sunny hot high false no
sunny hot high true no
overcast hot high false yes
rain mild high false yes
rain cool normal false yes
rain cool normal true no
overcast cool normal true yes
sunny mild high false no
sunny cool normal false yes
rain mild normal false yes
sunny mild normal true yes
overcast mild high true yes
overcast hot normal false yes
rain mild high true no

可以把上面数据存入excel,然后使用pandas读出来,pandas可以无缝对接excel,简直太方便了

import pandas as pd
import numpy as np

df = pd.read_excel("decision.xlsx")
print df

输出就是下面这样子


现在来计算‘Outlook’特征信息增益

import pandas as pd
import numpy as np
from collections import defaultdict
df = pd.read_excel("decision.xlsx")
#print df.dtypes
#print df.columns
#print df[df.columns[0]]
print df.index,df.shape
def I(future,label):
    df.columns
    d = defaultdict(lambda:[0,0])
    for f,l in zip(df[future], df[label]):
        if l == 'yes':
            d[f][0] += 1
        else:
            d[f][1] += 1
    return d
I('Outlook', 'Play')                
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,928评论 0 25
  • 转自算法杂货铺--决策树决策树和随机森林学习笔记-欢迎补充 http://www.cnblogs.com/fion...
    尧字节阅读 10,786评论 1 6
  • 博客园:http://www.cnblogs.com/wxquare/p/5379970.html ID3(多叉树...
    闫阿佳阅读 2,067评论 0 0
  • 1、决策树算法 决策树(decision tree)又叫判定树,是基于树结构对样本属性进行分类的分类算法。以二分类...
    JasonJe阅读 2,811评论 0 22
  • 下文介绍学习决策树的过程,我们通过例子来更好地理解决策树。 决策树是什么,是一种基本的分类与回归的方法。分类决策树...
    小灰灰besty阅读 4,251评论 4 10