说明:主要参考 机器学习实战之决策树,里面代码的实现和详细的注释,是一个关于机器学习实战的不错的学习资料,推荐一波。出于编程实践和机器学习算法梳理的目的,按照自己的代码风格重写该算法,在实现的过程中也很有助于自己的思考。为方便下次看时能快速理解便通过截图的方式截取了个人认为比较关键的内容,推荐看原链接,自己在代码实现过程中会留下一些思考,也欢迎交流学习。
还有个写得更为详细的资料可以参考一下:ID3算法实现,每一步都有很详细的计算。
相关知识点
下面两个图是自己以前看决策树的时候整的PPT里面的两页,主要是说的是ID3和相关概念,至于C4.5,CART,GBDT, RandomForest等内容就不贴上来了,ID3的原理还是很简单的,可以找到很多其他资料,这里呢主要还是侧重于编程实践。
ID3算法实现
下面代码的主要参考链接在上面已经给出了,详细的分析建议看原链接,这份代码应该算是最最最simple的一个例子了,没有剪枝和非离散化的数据处理,更没有不完整数据的处理,只是简单的构建几个数据实现ID3树的构建和分类决策。
# __author__ = 'czx'
# coding=utf-8
"""
Description:
ID3 Algorithm for fish classification task .
"""
from numpy import *
from math import log
def createData():
"""
:return:
data: including feature values and class values
labels: description of features
"""
data = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [1, 0, 'no'], [0, 1, 'no']]
labels = [