美文网首页
决策树(一)

决策树(一)

作者: 梦vctor | 来源:发表于2018-10-18 19:31 被阅读0次

决策树


image.png
image.png

正方形代表判断模块,椭圆形代表终止模块,从判断模块引出的左右键头称作分支。
决策树很多任务都是为了数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,机器学习算法最终将使用这个机器从数据集中创造的规则。

在构造决策树时,需要解决的第一个问题是,当前数据集上哪个
特征在划分数据分类时起决定性作用。为了找到决定性的特征,划分出最好的结果,必须评估每个特征。完成测试之后,原始数据集就被划分为几个数据子集。这些数据子集会分布在第一个决策点的所有分支上。如果某个分支下的数据属于同一类型,则当前无需阅读的垃圾邮件已经正确地划分数据分类,无需进一步对数据集进行分割。如果数据子集内的数据不属于同一类型,则需要重复划分数据子集的过程。如何划分数据子集的算法和划分原始数据集的方法相同,直到所有具有相同类型的数据均在一个数据子集内。


image.png

信息增益

划分数据集的大原则是:将无序的数据变得更加有序。使用信息论度量信息,信息论是量化处理信息的分支科学。
在划分数据集之前之后信息发生的变化称为信息增益,获得信息增益最高的特征是最好的选择。

集合信息的度量方式称为香农熵或者简称为熵。熵定义为信息的期望值。如果待分类的事物可能划分在多个分类中,则符号xi的信息定义为 image.png
其中p(xi)是选择该分类的概率。
计算熵需所有类别所有可能值包含的信息期望值, image.png

其中n是分类的数目。

#计算给定数据集的香农熵
def calcShannonEnt(dataSet):
    #计算数据集中实例的总数
    numEntries=len(dataSet)
    #创建一个数据字典,它的键值是最后一列的数值
    labelCounts={}
    for featVec in dataSet:
        currentLabel=featVec[-1]
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel]=0
            labelCounts[currentLabel]+=1
        shannonEnt=0.0
        for key in labelCounts:
            prob=float(labelCounts[key])/numEntries
            shannonEnt-=prob*log(prob,2)
        return shannonEnt

#自己输入数据
def createDataSet():
    dataSet=[[1,1,'yes'],
             [1,1,'yes'],
        [1,0,'no'],
        [0,1,'no'],
        [0,1,'no']]
    labels=['no surfacing','flippers']
    return dataSet,labels

Debug1:
IndentationError: unexpected indent
解决方法:
文件里格式不对,可能是tab和空格没对齐的问题
检查代码调整格式

Debug2:
TypeError: list indices must be integers or slices, not tuple
解决方法:
矩阵元素之间要用逗号隔开

#输出
import trees
myDat,labels=trees.createDataSet()
print(myDat)
print(trees.calcShannonEnt(myDat))

输出:

[[1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
0.9709505944546686

得到熵之后,就可以按照获取最大信息增益的方法划分数据集。
另一个度量集合无序程度的方法是基尼不纯度,简单说就是从一个数据集中随机选取子项,度量其被错误分类到其他分组里的概率。

相关文章

  • 机器学习6-决策树

    一. 决策树概述 1.1 什么是决策树 决策树输入: 测试集决策树输出: 分类规则(决策树) 1.2 决策树算法概...

  • 决策树算法总结

    目录 一、决策树算法思想 二、决策树学习本质 三、总结 一、决策树(decision tree)算法思想: 决策树...

  • 机器学习 - 决策树算法[一]

    1 决策树模型与学习 1.1 决策树模型 决策树定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由...

  • 经典机器学习系列之【决策树详解】

      这节我们来讲说一下决策树。介绍一下决策树的基础知识、决策树的基本算法、决策树中的问题以及决策树的理解和解释。 ...

  • 决策树

    1、决策树 决策树学习通常包括3个步骤: 特征选择。 决策树生成。 决策树剪枝。 决策树的学习目标是:根据给定的训...

  • 决策树

    决策树 决策树模型与学习 特征选择 决策树的生成 决策树的剪枝 CART 算法 决策树模型呈树形结构,在分类问题中...

  • 第5章 决策树

    内容 一、决策树内容简介 二、决策树的模型与学习 三、特征选择 四、决策树生成 五、决策树剪枝 六、CART算法 ...

  • 机器学习系列(三十六)——回归决策树与决策树总结

    本篇主要内容:回归决策树原理、回归树学习曲线、决策树总结 回归决策树原理 回归决策树树是用于回归的决策树模型,回归...

  • [机器学习]决策树

    决策树 @(技术博客)[机器学习, 决策树, python] 学习决策树首先要搞清楚决策树是什么(what),在弄...

  • 相亲可以用决策树?

    2019年日更第225天 决策、管理、思考 01决策树:如何用决策树来选择相亲对象 什么是决策树?决策树就是一种把...

网友评论

      本文标题:决策树(一)

      本文链接:https://www.haomeiwen.com/subject/fqvrzftx.html