在之前的决策树算法中我们已经讲解了从数据集构造决策树算法的功能模块。

首先是创建数据集,然后计算香农熵,然后基于最好的属性值划分数据集,由于特征值可能多于两个,因此可能存在大于两个分支的数据集划分。第一次划分好之后,数据将被向下传递到树分支的一个节点,在这个节点上我们可以再次划分数据,所以我们可以采用递归的原则处理数据集。

递归的结束条件是:遍历完所有划分的数据集的属性,或者每个分支下的所有实例都具有相同的分类。如果所有实例具有相同的分类,则得到一格叶子节点或者终止块。

根据特征来划分属性,我们知道每划分一次分类就会消耗一格特征值,如果我们使用完所有的特征但是类别还没有划分完那么我们就采用多数表决的方法来确定叶子节点。

比如说我们使用完所有的特征值之后划分,得到的最后的数据集是下面这个样子的:
[[‘yes’],[‘yes’],[‘maybe’]]

但是我们现在已经没有特征值了,那么我们就不能用计算香农熵的方法计算最大信息增益,这个时候就用投票表决的方式来分类。

那么我们发现 我们的数据集中 ‘yes’是两个,’maybe’是一个那么我们就按照这个来把它们分开。
下面我们来完成代码:

def majorityCnt(classList): # 传入的参数是已经划分完所有特征之后剩余的数据集,
#例如[['yes'],['yes'],['maybe']]classCount={} #参数是已经划分完所有特征之后剩余的数据集,#例如[['yes'],['yes'],['maybe']]classCount={} #创建一个字典for vote in classList:  if vote not in classCount.keys():classCount[vote] = 0classCount[vote] += 1# 根据上述的语句,以及我们的例子,我们最终可以得到的结果如下: {'yes':2,'maybe':1}sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1),reverse=True)#这个语句比较复杂,我们在下面详细讲解一下。
# 使用字典iteritemsreturn sortedClassCount[0][0]

下面我们来分析在这段代码中比较复杂的代码:

sorted(classCount.iteritems(), key=operator.itemgetter(1),reverse=True)

在这里我们使用iteritems()这个函数得到我们字典中的所有元素,就是一组一组的键-值对。
之后我们定义一个叫做key的函数,这个名字可以任意取,大家都是这么定义的,之后我们通过itemgetter这个函数对我们字典中的元素进行排序。operator.itemgetter(1)表示按照元素的第二个进行排序,也就是分类出现的多少。我们的字典每一个元素都有两部分组成,也就是按照值来排序,reverse=True 表示按照递减的顺序来排序。


sortedClassCount[0][0] 表示的是按照分类的个数最多的元素的那个类。

总结

对于一些已经使用完所有特征的数据集,我们任然不能清楚的把一些类分离出来,我们就统计数量最多的那个分类,以次划分。






写在后面的话:

今天好想他,虽然他从来都没有对我们的感情认真过。但是我好想他,明明知道好多不可能,但是还是很想他,很想,很想。他说现在社会很浮躁,很多人对感情不认真,而他却是那个最不认真的,而我是那个最认真的。


要么就不做,要做就做最好。

决策树算法(五)——处理一些特殊的分类相关推荐

  1. matlab粗集系统评估wine,C4.5 决策树算法对UCI wine数据集分类的实现(MATLAB)

    一.功能实现与样本分析 在数据挖掘领域,能够利用相应的算法对数据集进行训练,即对样本的特征进行分析,从而概括出相同类别的样本之间存在的内在特征联系,进一步对未知类别的样本进行预测,判断出该样本所属的类 ...

  2. C4.5 决策树算法对UCI wine数据集分类的实现(MATLAB)

    1.功能实现与样本分析 在数据挖掘领域,可以利用相应的算法对数据集进行训练,即对样本的特征进行分析,从而归纳出相同类别的样本之间存在的内在特征联系,进一步对未知类别的样本进行预测,判断出该样本所属的类 ...

  3. 机器学习算法(3)之决策树算法

    前言:首先,在了解树模型之前,自然想到树模型和线性模型有什么区别呢?其中最重要的是,树形模型是一个一个特征进行处理,之前线性模型是所有特征给予权重相加得到一个新的值.决策树与逻辑回归的分类区别也在于此 ...

  4. 决策树算法原理(下)

    在决策树算法原理(上)这篇里,我们讲到了决策树里ID3算法,和ID3算法的改进版C4.5算法.对于C4.5算法,我们也提到了它的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处 ...

  5. 一步步教你轻松学决策树算法

    一步步教你轻松学决策树算法 (白宁超 2018年8月27日16:28:53) 导读:决策树算法是一种基本的分类与回归方法,是最经常使用的算法之一.决策树模型呈树形结构,在分类问题中,表示基于特征对实例 ...

  6. CART决策树算法Python实现 (人工智能导论作业)

    文章目录 决策树的介绍 CART决策树算法简介 基尼指数 CART决策树生成算法及Python代码实现 决策树的介绍 决策树是以树的结构将决策或者分类过程展现出来,其目的是根据若干输入变量的值构造出一 ...

  7. 机器学习:决策树算法(ID3算法)的理解与实现

    机器学习:决策树算法(ID3算法)的理解与实现 文章目录 机器学习:决策树算法(ID3算法)的理解与实现 1.对决策树算法的理解 1.概述 2.算法难点 选择最优划分属性 1.信息熵 2.信息增益 2 ...

  8. ID3和C4.5分类决策树算法 - 数据挖掘算法(7)

    (2017-05-18 银河统计) 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来判断其可行性的决策分析方法,是直观运用概率分析的一种图解法.由于这种决策分支画 ...

  9. 机器学习-有监督学习-分类算法:决策树算法【CART树:分类树(基于信息熵;分类依据:信息增益、信息增益率、基尼系数)、回归树(基于均方误差)】【损失函数:叶节点信息熵和】【对特征具有很好的分析能力】

    一.决策树概述 注:生产实践中,不使用决策树,太简单,而是使用决策树的升级版:集成学习算法. 集成学习算法有: Random Forest(随机森林) Extremely Randomized For ...

最新文章

  1. Python基础学习!基本元素,数字,字符串以及变量
  2. python hist函数_Python主要数据探索函数
  3. 移动端前端开发注意点(未完待续)
  4. CG CTF WEB SQL注入1
  5. 阿里研究员:警惕软件复杂度困局
  6. html5+hbuilder+夜神模拟器+webview
  7. 编译原理预测分析程序
  8. apt-get、apt、yum、dpkg、rpm
  9. linux的IP配置
  10. AcWing 2. 01背包问题(01背包模板)
  11. Mac上Spotify 音乐添加到 djay Pro的详细教程
  12. 用EViews做时间序列SARIMA模型的傻瓜操作小记
  13. C++借助Eigen库实现矩阵开方(开根号)运算
  14. Word2007中快速插入分隔线
  15. Downward API,它的作用是:让 Pod 里的容器能够直接获取到这个 Pod API 对象本身的信息。
  16. 计算机硬件希沃课件,希沃课件怎么转为ppt?
  17. 莫安迪2019平面设计作品展示
  18. 【键盘】jQuery+CSS3模拟键盘事件(精)
  19. 九宫格图片怎么操作?这里有你想要的方法
  20. 没有躲过的坑--string中的c_str()陷阱

热门文章

  1. 共享思维导图,协作型思维导图Leangoo
  2. 有了这篇 Shell 脚本实践指南,同事对我“刮目相看”!
  3. 代码质量第4层——健壮的代码!
  4. 6000字详解数据仓库建设
  5. 【腾讯面试题】熊出没
  6. 如何无侵入管理所有的微服务接口?
  7. 高德引擎构建及持续集成技术演进之路
  8. Java问题排查工具清单!
  9. 使用Python中的卷积神经网络进行恶意软件检测
  10. 案例 | 河小象:智办事高效驱动组织升级