从零开始的机器学习生活—决策树的实现
代码下载地址:http://download.csdn.net/download/dh_nwu/10122106
决策树(decision tree)是一种常见的机器学习方法,往往不需要很深奥的背景知识就能掌握,所以选择决策树作为入门机器学习的第一款算法的你,已经成功迈出了成为机器学习大神的第一步。
学习决策树树之前,需要掌握数据结构树的知识,还需要有一定的python基础。对于没有接触过Python,且英文好的童鞋,这里推荐一本《Learn Python3 The Hard Way》,英文不好的童鞋也没关系,推荐你们看《Head First Python》(又名《深入浅出python》)
1.决策树介绍
什么是决策树呢?简单的来说,可以理解为一个树形结构的流程图,从根节点开始,每一个内部节点都对应一个属性测试,根节点则对应一个决策结果。如图所示,输入当前的环境信息,即可知道今天是否应该出门。
2.数据处理
什么样的数据可以用来训练决策树?决策树属于监督学习(supervised learning)的一种,需要从有标号的训练元组中学习并产生。如下图所示,已知{色泽、根蒂、敲声、纹理、脐部、触感}的属性信息,也知道对应的结果{好瓜/坏瓜},即可采用不同的属性选择度量产生分裂节点。
为了方便计算,将数据构建成了一个二维列表data,在“色泽“属性中,将青绿设为1,乌黑设为2,浅白设成3……并用’y’,’n’来表示好瓜、坏瓜。构建一个属性列表label,用于存放对应的属性名。
data = [[1, 1, 1, 1, 1, 1, 'y'],#编号为1的元组
[2, 1, 2, 1, 1, 1, 'y'],#编号为2的元组
[2, 1, 1, 1, 1, 1, 'y'],
[1, 1, 2, 1, 1, 1, 'y'],
[3, 1, 1, 1, 1, 1, 'y'],
[1, 2, 1, 1, 2, 2, 'y'],
[2, 2, 1, 2, 2, 2, 'y'],
[2, 2, 1, 1, 2, 1, 'y'],
[2, 2, 2, 2,