前置信息
1、决策树
决策树是一种十分常用的分类算法,属于监督学习;也就是给出一批样本,每个样本都有一组属性和一个分类结果。算法通过学习这些样本,得到一个决策树,这个决策树能够对新的数据给出合适的分类
2、样本数据
假设现有用户14名,其个人属性及是否购买某一产品的数据如下:
编号 | 年龄 | 收入范围 | 工作性质 | 信用评级 | 购买决策 |
---|---|---|---|---|---|
01 | <30 | 高 | 不稳定 | 较差 | 否 |
02 | <30 | 高 | 不稳定 | 好 | 否 |
03 | 30-40 | 高 | 不稳定 | 较差 | 是 |
04 | >40 | 中等 | 不稳定 | 较差 | 是 |
05 | >40 | 低 | 稳定 | 较差 | 是 |
06 | >40 | 低 | 稳定 | 好 | 否 |
07 | 30-40 | 低 | 稳定 | 好 | 是 |
08 | <30 | 中等 | 不稳定 | 较差 | 否 |
09 | <30 | 低 | 稳定 | 较差 | 是 |
10 | >40 | 中等 | 稳定 | 较差 | 是 |
11 | <30 | 中等 | 稳定 | 好 | 是 |
12 | 30-40 | 中等 | 不稳定 | 好 | 是 |
13 | 30-40 | 高 | 稳定 | 较差 | 是 |
14 | >40 | 中等 | 不稳定 | 好 | 否 |
决策树分类算法
1、构建数据集
为了方便处理,对模拟数据按以下规则转换为数值型列表数据:
年龄:<30赋值为0;30-40赋值为1;>40赋值为2
收入:低为0;中为1;高为2
工作性质:不稳定为0;稳定为1
信用评级:差为0;好为1
#创建数据集
def createdataset():
dataSet=[[0,2,0,0,'N'],
[0,2,0,1,'N'],
[1,2,0,0,'Y'],
[2,1,0,0,'Y'],
[2,0,1,0,'Y'],
[2,0,1,1,'N'],
[1,0,1,1,'Y'],
[0,1,0,0,'N'],
[0,0,1,0,'Y'],
[2,1,1,0,'Y'],
[0,1,1,1,'Y'],
[1,1,0,1,'Y'],
[1,2,1,0,'Y'],
[2,1,0,1,'N'],]
labels=['age','income','job','credit']
return dataSet,labels
调用函数,可获得数据:
ds1,lab = createdataset()
print(ds1)
print(lab)
[[0, 2, 0, 0, ‘N’], [0, 2, 0, 1, ‘N’], [1, 2, 0, 0, ‘Y’], [2, 1, 0, 0, ‘Y’], [2, 0, 1, 0, ‘Y’], [2, 0, 1, 1, ‘N’], [1, 0, 1, 1, ‘Y’], [0, 1, 0, 0, ‘N’], [0, 0, 1, 0, ‘Y’], [2, 1, 1, 0, ‘Y’], [0, 1, 1, 1, ‘Y’], [1, 1, 0, 1, ‘Y’], [1, 2, 1,