决策树的基本思想
决策树的思想来源非常朴素,每个人大脑中都有类似if-then这样的判断逻辑,if表示条件,then就是选择或决策。在程序设计中,最基本的语句条件分支结构就是if-then结构。而最早的决策树就是利用这类结构分隔数据的一种分类学习方法。
实例背景
假定某IT公司销售笔记本电脑产品,为了提高销售收入,公司对各类用户建立了统一的调查表,统计了几个月的销售数据之后收集了如图所示的数据。为了提高销售效率,公司希望通过这份数据对潜在客户进行分类。
(1)如何对客户分类
(2)如果根据分类的依据,给出对销售人员的指导意见?
问题分析:
从第一列开始看这张表格,表格不大,共15行,每行表示列特征取不同值时的统计人数。第一列是统计人数值,第二列是年龄特征,取三个值:老、中、青;第三列是收入,同样取三个值:高、中、低;第四列是学生,取两个值:是、否;第五列是信誉,取两个值:优、良;最后一列是销售结果,可以理解为分类标签,取两个值:买、不买。
那么对于取任意给定特征值的一个客户(测试样例),算法需要帮助公司将这位客户归类,即预测这位可是是否属于“买”计算机的那一类,还是属于“不买”计算机的那一类,并且给出判断依据。代码实现
方法选择:ID3
数据集下载地址:http://www.threedweb.cn/forum.php?mod=viewthread&tid=1458&highlight=ID3
语言:python
一个文件主要定义ID3DTree类来封装算法 :ID3.py
另外一个文件则是训练决策树:ID3example.py
#!/usr/bin/python
#ID3.py created by lixin 20161118
from numpy import *
import math
import copy
import cPickle as pickle
class ID3DTree(object):
def __init__(self):