赞
踩
目录
决策树(Decision Tree)是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。决策数有两大优点:1)决策树模型可以读性好,具有描述性,有助于人工分析;2)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。
决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树。
决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。
用决策树分类:从根节点开始,对实例的某一特征进行测试,根据测试结果将实例分配到其子节点,此时每个子节点对应着该特征的一个取值,如此递归的对实例进行测试并分配,直到到达叶节点,最后将实例分到叶节点的类中。
例图:
一个数据拥有非常多的属性,选择各个属性在决策树节点中的优先级变得尤为重要,决策树学习的关键在于如何选择最优划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点 所包含的样本尽可能属于同一类别,即结点的“纯度 ”(purity)越来越高 。
1948年,香农提出了“信息熵”的概念,解决了对信息的量化度量问题。信息熵这个词是C.E.Shannon(香农)从热力学中借用过来的。香农用信息熵的概念来描述信源的不确定度。
Ent(D)的值越小,则D的纯度越高
- #计算给定数据集的香农熵
- def calcShannonEnt(dataSet):
- # 返回数据集的行数,样本容量
- numEntries = len(dataSet)
- # 保存每个标签出现出现次数的字典
- labelCounts = {}
- #对每组特征向量进行统计
- for featVec in dataSet:
- #提取标签(label)信息
- currentLabel = featVec[-1]
- #如果存在标签没有放入统计次数的字典,则将其添加
- if currentLabel not in labelCounts.keys():
- labelCounts[currentLabel] = 0
- #label计数
- labelCounts[currentLabel] += 1
- #香农熵赋初值
- shannonEnt = 0.0
- for key in labelCounts:
- #选择该标签的概率
- prob = float(labelCounts[key])/numEntries
- shannonEnt -=prob * log(prob,2)
- return shannonEnt

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。