[_数据挖掘_] 决策树实现

数据挖掘学习笔记-决策树算法浅析(含Java实现) 目录 一、通俗理解决策树算法原理 二、举例说明算法执行过程 三、Java实现 本文基于书籍《数据挖掘概念与技术》,由于刚接触Data Mining,所以可能有理解不到位的情况,记录学习笔记,提升自己对算法的理解。 代码下方有,如果有金币的童鞋可以贡献一下给无耻的我一枚: 代码传送门:http:// 一、通俗理解决策树算法 决策树算法主要用于分类,分类顾名思义就是将不 阅读详情

参考"collective intelligence“相关章节的实现。

决策树使用广泛,对于理解内在的推理过程非常有帮助,非常适合那些属性是类别值的,或者数字属性有breakpoint的应用场景。但是缺点是不适合输出较多,元组的类别由多个属性的复杂组合决定的情况(比如说输出由两个属性的差值来决定)。

决策树由自上而下的递归算法来实现。下面是书中的实现的伪码,和经典的算法稍微有些差别,毕竟这是正对CI中的例子来的,但是还是有很好的借鉴性。

def buildtree(rows, scoref):

# rows 是还没有放入叶子节点的训练元组

#scoref 是度量函数,度量集合中元组的有序程度,可以使entropy,gini——impurity,vaviance

if len(rows) == 0:

         return 空节点

best_gain, best_criterial, best_sets = 0

for col in 训练元组的的每一个属性列:

          得到rows对应col属性的所有不同值column_values

          for v in column_values:

                  将col对应的属性在值v上进行划分,得到两个集合set1(此属性的值>=v,对于数值型属性;否则为==), set2(其他)

                  利用scoref计算set1, set2这种划分的度量值gain

                  if gain>best_gain 且 set1,set2的个数都不为0:

                          更新best_gain,

                          best_criterial = (此属性,划分所用到的属性的值),

                          best_sets = (set1, set2)

if best_gain > 0:

          tb = buildtree(best_sets[0], scoref)

          fb = buildtree(best_sets[1], scoref)

          创建节点node,记录分离准则

          node的左右分值分别是tb, fb

          返回 node

else:

           返回叶子节点

其他相关的一些问题。

1)检验

得到决策树tree后,因为tree的每个节点都保存了此节点上分离时的属性和基准值,所以对于输入值,很容易访问到对应的叶子节点。需要注意的一点是对于数值类型和非数值类型的比较是不一样的,参考上面的伪代码。

2)修剪

决策树的训练很可能出现过度拟合的现象,也就是说算法为了准确表达一些数据,创建了很多不必要的分支。这很大程度上是由于数据不准确或者是属性值不准确造成的,或者是某个非常特殊的训练元组。这些不必要的分支对集合的熵减少很小,因此显得没有必要,特别是对与很大的决策树而言更是如此。

解决的方法有两个:一是在构造的过程中,每当要创建新的分支的时候判断,如果分离后的熵相比原来的减得很少,则不创建;二是当整个树创建好了以后进行检查,如果同属于一个父节点的两个叶子节点的熵相比不分离时的熵的话,那么合并两个叶子节点,原来的父节点变成了叶子节点,从下到上依次检查,注意,新合并的叶子节点也要再被检查,如果其兄弟节点也是叶子节点的话。

第一种方法有一个很大的问题是,每次分离时选取的是某一个集合的一种属性,此时的最佳分离(增益最大的分离)的增益小于阈值,也有可能出现对于他的一个子集的某种划分带来的增益可能就很大。所以一般选用第二种方法。但是这个阈值如何选取呢?

3)数据缺失的处理

对于要检验的数据,如果某个属性的值不好确定,或者无法确定,那么使用决策树也可以得到其类别的一个估计。方法是,和确定值时单分支游历不同,在需要分离此缺失值的属性的时候我们两边分支都进行游历。最后组合两边游历的结果,这样提供给了使用者一组候选结果,并且可以计算各候选项的权重供人决策。

4)处理数值型输出

如果输出一些数值而不是类标示,原来用于评判输出是分类值的标准如entropy就不是那么的合适了,因为此时的值并没有类别的概念,可能只是描述了一种程度。可以使用是variance,也就是计算数据集的方差来评判。这样可以使得属性值的分离朝着减少分支方差的方向进行,也就是分支上的数据值尽可能地集中。但是叶子节点是不是也需要改造呢?书上没有提,我觉得改造下更好,也可以利用方差来决定是不是不需要再进一步的划分了,然后在结果里面给出候选集。这样做和修剪的第一种方法是不一样的,因为我们此时只考虑结果集的方差,而不是用原有的和划分后的差来比较。不知道这样想是不是可行啊?

浅谈决策树算法以及matlab实现ID3算法 决策树方法在分类、预测、规则提取等领域有着广泛的应用。在20世纪70年代后期和80年代初期,机器学习研究者J.Ross Quinilan提出了ID3算法以后,决策树在机器学习、数据挖掘领域得到极大的发展。Quinilan后来又提出了C4.5,成为新的监督学习算法。1984年几位统计学家提出了CART分类算法。ID3和ART算法大约同时被提出,但都是采用类似的方法从训练样本中学习决策树的。决策树是一树 阅读详情

相关推荐

数据挖掘算法R语言实现KNN、朴素贝叶斯、决策树

本文是数据挖掘中的一些常用算法介绍,包含了KNN、朴素贝叶斯、决策树,并举例说明。

qq_53974735的博客 2858

决策树完整伪代码与流程

关于决策树有很多帖子,但都不是很全,很多也比较乱,于是自己整理了一份伪代码,仅供大家参考。

Expecto的博客 1521

数据挖掘-决策树ID3分类算法的C++实现

数据挖掘课上面老师介绍了下决策树ID3算法,我抽空余时间把这个算法用C++实现了一遍。决策树算法是非常常用的分类算法,是逼近离散目标函数的方法,学习得到的函数以决策树的形式表示。其基本思路是不断选取产生信息增益最大的属性来划分样例集和,构造决策树。信息增益定义为结点与其子结点的信息熵之差。信息熵是香农提出的,用于描述信息不纯度(不稳定性),其计算公式是Pi为子集合中不同性(而二元分类即正样例和负样

Coding for Dreams 6万+

数据挖掘之C4.5决策树算法

1.决策树算法实现的三个过程:2.算法的实现步骤:3.算法实例例题:以下是某公司招录人员的信息表,运用C4.5算法构建决策树模型。性别学历学校经验是否录用男本科985无是女本科211无是男研究生普通院校有是男大专普通院校有否女本科985无是男研究生普通院校有是男本科211无是男大专普通院校有否男本科普通院校无否女本科普通院校有否男本科211无是男研究生211无是① 计算数据集S的信息熵该数据集的样本数为12,目标属性有{是,否}两个取值,其中取值为“是”的有8个,取值为“否”的有4个,因此对应的p1=2/3

my0214163的博客 8298

【数据挖掘基础】——决策树算法+代码实现(7)

1、从女神如何决策跟谁约会的问题出发,引出决策树算法的原理2、研究者提出各种改进方案,并由决策树延伸出了很多新的优秀的算法3、在尝试动手的环节,加入了一些绘图的技巧。

lingxw的博客 1813

多关系数据挖掘与决策树并行实现的探索

本文探讨了多关系数据挖掘(MRDM)及其从归纳逻辑编程(ILP)到更广泛MRDM领域的进展,以及决策树算法的并行实现策略。MRDM在处理高结构化数据领域发挥重要作用,而并行化决策树算法对于大数据集的分类问题尤为关键。

weixin_42561464的博客 436

【机器学习】6.决策树之Python代码实现

本文围绕决策树(Decision Tree)模型展开,先阐述其“数据准备→模型构建→预测应用→性能评估”的四阶段整体流程,核心是通过递归分裂(计算纯度、选最优特征)生成树结构。接着呈现基于**ID3算法**的代码实现,构建`DecisionTree`类,涵盖参数配置、纯度与增益计算、树构建、预测及评估(准确率、混淆矩阵、交叉验证)等模块。最后通过天气(离散特征,预测是否打网球)和产品购买(连续特征,预测是否购买)两个数据集验证模型,结果显示模型逻辑符合业务常识,可解释性强且适配多特征类型,参

m0_74817670的博客 1924

医疗影像技术实战:如何用Python快速生成DRR图像(附完整代码)

本文详细介绍了如何使用Python实现数字重建放射影像的快速生成。通过实战代码,从基础光线投射算法到性能优化,逐步讲解DRR图像生成的核心原理与工程实践,帮助开发者掌握医疗影像处理的关键技术,赋能放射治疗规划与图像引导手术等临床工具开发。

k8l9m0n的博客 72

决策树分类和预测算法的原理及实现

作者:蓝鲸 算法决策树是一种通过对历史数据进行测算实现对新数据进行分类和预测的算法。简单来说决策树算法就是通过对已有明确结果的历史数据进行分析,寻找数据中的特征。并以此为依据对新产生的数据结果进行预测。 决策树由3个主要部分组成,分别为决策节点,分支,和叶子节点。其中决策树最顶部的决策节点是根决策节点。每一个分支都有一个新的决策节点。决策节点下面是叶子节点。每个决策节点表示一个待分类的

大数据技术杂谈 6633

深入解析STM32F103R6的USB OTG_FS双重角色设备(DRD)设计与应用

本文深入解析了STM32F103R6的USB OTG_FS双重角色设备(DRD)设计与应用。详细阐述了其作为USB主机和设备双重角色的硬件设计要点,包括VBUS电源管理与ID引脚配置,并提供了设备模式(如虚拟串口CDC)与主机模式(如读取U盘文件)的软件实现实战指南,帮助开发者充分发挥该芯片的OTG潜力。

weixin_29195615的博客 266

基于Matlab与Bladed联合仿真的交互软件设计

基于Matlab与Bladed的交互软件设计

weixin_45014222的博客 816

数据挖掘十大算法(一):决策树算法 python和sklearn实现

学完到第三章——决策树,python代码实现的仅是ID3算法,sklearn为优化过的C4.5,这里做一个详细的总结包括(原理、代码、可视化、scikit-learn实现),皆为亲自实践后的感悟。以下进入正文。 早前简单了解了决策树的原理,然后为了尽快使用便没有深究直接使用sklearn实现,虽然sklearn使用起来极其极其的方便,但是我还是想理解到其中的代码实现机制以及一些数学知识,所以在《...

昆兰.沃斯 的博客 3万+

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id => 1110, resp_id => 50597, resp_appl_id => 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4767

python数据挖掘决策树算法_数据挖掘——决策树巩固与 Python 实现

上个星期去崇州参加比赛,回来老师已经讲到了「分类」,那一节课学了决策树,现在继续课后巩固一下。什么是决策树概念决策树(decision tree)是一种类似于流程图的树结构(可以是二叉树也可以不是),其中,每个内部节点(非叶子结点)表示在一个属性上的测试,每个分枝代表该测试的一个输出,而每个叶子结点存放一个类标号。书的最顶层节点是根节点。决策树是一种基本的分类与回归方法,它可以看作if-then规...

weixin_30141547的博客 352

粒子群算法实战:用Matlab解决旅行商问题(TSP)的完整代码解析

本文提供了使用粒子群算法解决旅行商问题的完整Matlab实战指南。通过将连续空间的粒子群算法进行离散化改造,采用基于交换序的策略来更新粒子位置与速度,并给出了从问题定义、数据结构设计、核心函数实现到主迭代循环的详细代码解析。文章还探讨了参数调优、性能优化及处理复杂TSP变体的进阶思路,为物流规划、路径优化等领域的工程应用提供了可直接复用的解决方案。

m2n3o4p5的博客 350

Obsidian与GPT协作:数学公式从KaTeX到MathJax的无缝转换实践

本文针对Obsidian用户从GPT等AI助手复制数学公式时遇到的KaTeX与MathJax格式不兼容问题,提供了高效的解决方案。重点介绍了KaTeX to MathJax插件的核心作用,它能自动将AI生成的KaTeX格式公式(如\(...\))无缝转换为Obsidian默认支持的MathJax格式($...$),实现复制粘贴后公式即时渲染,极大提升了数学笔记与AI协作的效率和流畅度。

weixin_29209825的博客 137

数据挖掘 | 决策树ID3算法(手动实现)

手动实现决策树ID3算法,详细介绍决策树及ID3算法的原理,并用实验帮助深刻理解和实践算法。

qq_62379939的博客 1538

使用DrissionPage实现携程酒店信息智能爬取

本文介绍了一个基于DrissionPage技术的携程酒店信息爬虫系统,通过监听API数据包实现高效采集。系统可自动获取酒店名称、价格、评分、位置等15个维度的数据,支持多页滚动加载和智能去重。相比传统爬虫,该方法直接解析API返回的JSON数据,避免了复杂的HTML解析和加密参数分析,提高了开发效率和稳定性。文章详细阐述了13个关键实现步骤,并强调数据采集应严格遵守法律法规,仅用于技术学习和市场研究。该系统可为旅游决策、价格监测等提供数据支持,但需注意合理使用频率和隐私保护。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 389

数据挖掘之决策树归纳算法的Python实现

数据挖掘之决策树归纳算法的Python实现引自百度:决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程决策树的算法原理:(1)通过把实例从根节点开始进行排列到某个叶子节点来进行分类的。(2)叶子节点即为实例所属的分类的,树上的每个节点说明了实例的属性。(...

jiahaowanhao的博客 1203

基于STM32设计的智能水产养殖系统(2025)_359

本设计提出并实现了一种基于STM32F103RCT6微控制器的智能水产养殖控制系统,针对传统水产养殖中人工依赖高、环境参数监测滞后、控制手段单一等问题,集成了TDS水质检测、水温检测、水位监测、自动喂食、自动充氧、换水控制与加热保温等功能。系统采用ESP8266模块实现WIFI联网,通过MQTT协议将关键数据上传至华为云物联网平台,支持Android手机APP和Windows上位机远程监测与控制。同时,系统具备本地LCD数据显示与蜂鸣器异常报警功能,支持本地按键控制操作。整套系统功能完善,响应灵敏,运行稳定

626

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python决策树代码解读_数据挖掘之决策树归纳算法的Python实现

数据挖掘之决策树归纳算法的Python实现引自百度:决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程决策树的算法原理:(1)通过把实例从根节点开始进行排列到某个叶子节点来进行分类的。(2)叶子节点即为实例所属的分类的,树上的每个节点说明了实例的属性。(...

weixin_39884877的博客 336

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数据挖掘中 决策树算法实现——Bash

  一、决策树简介:   关于决策树,几乎是数据挖掘分类算法中最先介绍到的。 决策树,顾名思义就是用来做决定的树,一个分支就是一个决策过程。   每个决策过程中涉及一个数据的属性,而且只涉及一个。然后递归地,贪心地直到满足决策条件(即可以得到明确的决策结果)。   决策树的实现首先要有一些先验(已经知道结果的历史)数据做训练,通过分析训练数据得到每个属性对结果的影响的大小,这里我...

liuzhiqiangruc 273

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

《数据挖掘导论》Pangaea-Ning Tan 读书笔记——(第四章决策树,决策树的原理+python实现)

《数据挖掘导论》第四章 决策树,从原理到python实现,原理+sklearn实现

Minion_Yellow的博客 1767
上一篇: [_数据挖掘_] SVM学习
下一篇: 这几天的学习
firePhoenix1981
博客等级 码龄20年 17粉丝 67原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值