决策树:
划分数据集函数:
splitDataset (dataset, axis, value)
dataset 是要划分的数据集
axis 是特征的坐标, 指当前是第几个特征
value 是指特征的值
例如
splitDataset (dataset, 0, 1) 指把当前数据集中的第一个特征的特征值为1的样本分出来
原始数据集的香农熵
划分完之后的数据集的香农熵 如何计算?
for value in uniqueVals:
subDataSet = splitDataSet(dataSet, i, value)
prob = len(subDataSet)/float(len(dataSet)))
newEntropy += prob * calcShannonEnt(subDataSet) #对划分之后的数据集求熵,求的是在这个特征划分下的平
#均信息熵,prob是比例(比如一共5个样本,分出来2个
#则prob为0.4,然后乘以对划分完的数据集subDataSet求
#的熵,即为平均信息熵)
infoGain = baseEntropy - newEntropy
uniqueVals是基于这个特征的所有可能的值的集合,循环做的是以特征集合中的每一个元素作为划分,后求得这个特征下的平均信息熵,然后原始的信息熵进行比较,得出信息增益