分类算法除了需要测量信息熵,还需要划分数据集。在知道如何得到熵之后,就可以按照获取最大信息增益的方法来判断是否正确地划分了数据集。对每个特征划分数据集的结果计算一次信息熵,以便判断按照哪个特征划分数据集是最好的划分方式。
数据集最佳切分函数
划分数据集的最大准则是选择最大信息增益,也就是信息下降最快的方向。
通过手动计算(详见本博客上一篇博文《决策树的特征选择之2:信息增益》),得知:
第0列列的信息增益为0.42,第1列列的信息增益为0.17,0.42>0.17,所以应该选择第0列进行切分数据集。
接下来,通过代码验证一下构造的数据集最佳切分函数返回的结果与手动计算的结果是否一致。
代码实现
# 根据信息增益,选择最优的列来切分数据集
#选择最优的列进行切分
def bestSplit(dataSet): # dataSet:原始数据集
baseEnt = calEnt(dataSet) # 计算原始熵
bestGain = 0 # 初始化信息增益
axis = -1 # 初始化最佳切分列,标签列
for i in range(dataSet.shape[1]-1): # 对特征的每一列进行循环
levels= dataSet.iloc