没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论














决策树剪枝算法的决策树剪枝算法的python实现方法详解实现方法详解
主要介绍了决策树剪枝算法的python实现方法,结合实例形式较为详细的分析了决策树剪枝算法的概念、原理并
结合实例形式分析了Python相关实现技巧,需要的朋友可以参考下
本文实例讲述了决策树剪枝算法的python实现方法。分享给大家供大家参考,具体如下:
决策树决策树是一种依托决策而建立起来的一种树。在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的
一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某个可能的属性值,而每一个叶子节点则对应从根节点
到该叶子节点所经历的路径所表示的对象的值。决策树仅有单一输出,如果有多个输出,可以分别建立独立的决策树以处理不
同的输出。
ID3算法算法:ID3算法是决策树的一种,是基于奥卡姆剃刀原理的,即用尽量用较少的东西做更多的事。ID3算法,即Iterative
Dichotomiser 3,迭代二叉树3代,是Ross Quinlan发明的一种决策树算法,这个算法的基础就是上面提到的奥卡姆剃刀原
理,越是小型的决策树越优于大的决策树,尽管如此,也不总是生成最小的树型结构,而是一个启发式算法。在信息论中,期
望信息越小,那么信息增益就越大,从而纯度就越高。ID3算法的核心思想就是以信息增益来度量属性的选择,选择分裂后信
息增益最大的属性进行分裂。该算法采用自顶向下的贪婪搜索遍历可能的决策空间。
信息熵,将其定义为离散随机事件出现的概率,一个系统越是有序,信息熵就越低,反之一个系统越是混乱,它的信息熵就越
高。所以信息熵可以被认为是系统有序化程度的一个度量。
基尼指数:在CART里面划分决策树的条件是采用Gini Index,定义如下:gini(T)=1−sumnj=1p2j。其中,( p_j )是类j在T中的
相对频率,当类在T中是倾斜的时,gini(T)会最小。将T划分为T1(实例数为N1)和T2(实例数为N2)两个子集后,划分数据
的Gini定义如下:ginisplit(T)=fracN1Ngini(T1)+fracN2Ngini(T2),然后选择其中最小的(gini_{split}(T) )作为结点划分决策树
具体实现具体实现
首先用函数calcShanno计算数据集的香农熵,给所有可能的分类创建字典
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
# 以2为底数计算香农熵
for key in labelCounts:
prob = float(labelCounts[key]) / numEntries
shannonEnt -= prob * log(prob, 2)
return shannonEnt
# 对离散变量划分数据集,取出该特征取值为value的所有样本
def splitDataSet(dataSet, axis, value):
retDataSet = []
for featVec in dataSet:
if featVec[axis] == value:
reducedFeatVec = featVec[:axis]
reducedFeatVec.extend(featVec[axis + 1:])
retDataSet.append(reducedFeatVec)
return retDataSet
对连续变量划分数据集,direction规定划分的方向, 决定是划分出小于value的数据样本还是大于value的数据样本集
numFeatures = len(dataSet[0]) - 1
baseEntropy = calcShannonEnt(dataSet)
bestInfoGain = 0.0
bestFeature = -1
bestSplitDict = {}
for i in range(numFeatures):
featList = [example[i] for example in dataSet]
# 对连续型特征进行处理
if type(featList[0]).__name__ == 'float' or type(featList[0]).__name__ == 'int':
# 产生n-1个候选划分点
sortfeatList = sorted(featList)
splitList = []
for j in range(len(sortfeatList) - 1):
splitList.append((sortfeatList[j] + sortfeatList[j + 1]) / 2.0)
bestSplitEntropy = 10000
slen = len(splitList)
# 求用第j个候选划分点划分时,得到的信息熵,并记录最佳划分点
for j in range(slen):
value = splitList[j]
newEntropy = 0.0
资源评论

- zh2223332023-07-25这篇文章解决了我对决策树剪枝算法的疑惑,是一篇值得推荐的优秀文件。
- XiZi2023-07-25文章不仅介绍了算法的基本思想,还给出了具体的实现步骤,方便读者实际应用。
- 柏傅美2023-07-25作者对算法原理进行了深入讲解,实例代码清晰易懂,能够帮助读者快速上手。
- 优游的鱼2023-07-25文章简洁明了,语言质朴,容易理解,适合初学者阅读。
- 杏花朵朵2023-07-25这篇文件详细介绍了决策树剪枝算法的python实现方法,让人受益匪浅。

weixin_38608189
- 粉丝: 4
- 资源: 922
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- CCHMIRuntime.dll和CCHMITags.dllCCHMIRuntime.dll和CCHMITags.dllCCHM
- 通过C#代码创建IIS应用程序池和网站
- Studentscore.py
- 设备预处理JESD22-A113F
- JESD22A111可焊性
- Nuvoton.NuMicro-DFP.1.3.3.pack
- C51单片机的串口主从机通信在LCD1602液晶屏幕上实时显示电流并监测电压KEIL软件源码+仿真.zip
- GetApkInfo.jar
- Highly Accelerated Temperature and Humidity Stress Test (HAST)
- SPI- dma- normal -主模式
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
