python教程分享(python实现决策树的优缺点)

决策树是一种树形结构,包括决策结点(内部结点)、分支和叶节点三部分。其中,决策结点代表某个测试,通常对应于待分类对象的某个属性,在该属性上的不同测试结果对应一个分支。每个叶节点存放某个类标号值,表示一种可能的分类结果。

决策树是一种常用的分类方法。它是一种监督学习,所谓监督学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,那么通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。这样的机器学习就被称之为监督学习。
特征选择即决定用哪个特征来划分特征空间,其目的在于选取对训练数据具有分类能力的特征,提高决策树的学习效率。决策树需要找出最佳节点和最佳的分枝方法,而衡量这个“最佳”的指标叫做不纯度。由此还衍生出其他两个常用指标,一个是ID3中信息增益的计算方法可用熵推导,即最为人熟知的信息熵,又叫香农熵,另一个是基尼系数,主要用于CART决策树的纯度判定中。
calcShannonEnt(dataSet)

计算数据集的香农熵,分两步,第一步计算频率,第二部根据公式计算香农熵

splitDataSet(dataSet, aixs, value)

划分数据集,将满足X[aixs]==value的值都划分到一起,返回一个划分好的集合(不包括用来划分的aixs属性,因为不需要)

chooseBestFeature(dataSet)

选择最好的属性进行划分,思路很简单就是对每个属性都划分下,看哪个好。这里使用到了一个set来选取列表中唯一的元素,这是一中很快的方法

majorityCnt(classList)

因为我们递归构建决策树是根据属性的消耗进行计算的,所以可能会存在最后属性用完了,但是分类还是没有算完,这时候就会采用多数表决的方式计算节点分类

createTree(dataSet, labels)

基于递归构建决策树。这里的label更多是对于分类特征的名字,为了更好看和后面的理解。

未经允许不得转载:搬瓦工评测网 » python教程分享(python实现决策树的优缺点)