增益 Gain 越大,对样本集的分类能力也越强。因此选用信息增益最大的特征作
为一个分类节点,然后依次找出剩余的最优特征作为分类点。
1
.
5
分类过程描述
(1)计算数据集的熵
(2)对于每个属性/特征:
a.计算所有分类值的熵
b.取当前属性的平均信息熵
c.计算当前属性的增益
(3)选择增益最高的属性。
(4)重复直到我们得到想要的树
1
.
6
主要程序代码
(
要求必须有注释
)
from math import log
import operator
#####创建测试数据集
def createDataSet():
dataSet = [[0, 0, 0, 0, 'no'],
[0, 0, 0, 1, 'no'],
[1, 0, 0, 0, 'yes'],
[2, 1, 0, 0, 'yes'],
[2, 2, 1, 1, 'no'],
[1, 2, 1, 1, 'yes'],
[0, 1, 0, 0, 'no'],
[0, 2, 1, 0, 'yes'],
[2, 1, 1, 0, 'yes'],
[0, 1, 1, 1, 'yes'],
[1, 1, 0, 1, 'yes'],
[1, 0, 1, 0, 'yes'],
[2, 1, 0, 1, 'no']]
labels = ['天气', '气温', '湿度', '风'] # 分类属性 特征
return dataSet, labels, # 返回数据集和数据的分类属性