决策树是经常使用的数据挖掘的算法,原理是通过训练集创造一个树,然后对待分类的数据进行分类。决策树只适用于标称型数据,即离散化的数据。优点是数据的形式很容易理解,可以处理不相关的特征数据,缺点是无法给出数据的内在含义,并且ID3算法会产生过度匹配的问题。
一。决策树的一般流程
收集数据———准备数据(必须是标称型数据,数值型的数据需要离散化)——分析数据——训练算法(构造树)——
测试算法(使用经验树计算错误率)——使用算法
二。计算信息增益
划分数据集的大原则就是将无序的数据变得更加有序。熵用来度量数据的无序程度,数据越无序,则数据的熵越大。原始数据的熵和划分后的数据的熵之间的差值为信息增益。所以越好的数据划分方法使得划分后的数据的熵越小,信息增益越大。因此需要先编写python代码计算数据的香农熵。
三。划分原始数据集
知道如何计算信息增益之后,需要编写使用每一个特征对原始数据集进行划分的python代码:该代码返回划分好的数据集
四。选择最好的数据集划分方式
在得到划分好的数据集之后,需要判断按照哪一个特征划分的数据集具有的信息增益最大,Python代码如下:该代码返回划分数据集最好的特征
由于可能会存在不止一个的划分数据集最好的特征,因此在出现这种情况的时候,我们需要使用多数表决的方法选出最好的划分数据集的特征,Python代码如下:
五。创建决策树
有了最好的划分原始数据集的函数之后,就要使用原始数据集创建一个决策树,Python代码如下:该代码返回一个决策树
为了直观的表现决策树,使用MatPlotlib绘制决策树,python代码如下:
六。使用决策树对待分类数据进行分类
python代码如下:
执行分类函数需要三个参数:由训练集构造的决策树,特征的标签集和需要分类的数据。
为了不在每一次分类之前都构造决策树,可以将已经构造好的决策树存储在硬盘上,可以使用python模块的pickle序列化对象,将其保存在硬盘上,python代码如下: