【数据挖掘】决策树中C4.5与CART算法讲解及决策树应用iris数据集实战(图文解释 附源码)

简介: 【数据挖掘】决策树中C4.5与CART算法讲解及决策树应用iris数据集实战(图文解释 附源码)

需要完整代码和PPT请点赞关注收藏后评论区留言私信~~~

1:C4.5算法

Quinlan在1993年提出了ID3的改进版本C4.5算法。它与ID3算法的不同主要有以下几点

(1)分支指标采用增益比例,而不是ID3所使用的信息增益

(2)按照数值属性值的大小对样本排序,从中选择一个分割点,划分数值属性的取值区间,从而将ID3的处理能力扩充到数值属性上来

(3)将训练样本集中的位置属性值用最常用的值代替,或者用该属性的所有取值的平均值代替,从而处理缺少属性值的训练样本

(4)使用K次迭代交叉验证,评估模型的优劣程度

(5)根据生成的决策树,可以产生一个if-then规则的集合,每一个规则代表从根结点到叶结点的一条路径

C4.5算法的优缺点

C4.5是基于ID3算法进行改进的算法,目标是通过学习,找到一个从属性值到类别的映射关系,并且这个映射能用于对新的未知类别进行分类。C4.5算法产生的分类规则易于理解,准确率高,改进了ID3算法倾向于选择具有最大增益率的属性作为分裂属性的缺点,而且相比于ID3算法,能处理非离散数据或不完整数据。 C4.5由于使用了熵模型,里面有大量的耗时的对数运算,如果是连续值还需要大量的排序运算,而且C4.5只能用于分类

2:CART算法

原理:分类回归树(Classification And Regression Tree, CART)算法最早由Breiman等人提出,目前已在统计领域和数据挖掘技术中普遍使用。Python中的scikit-learn模块的Tree子模块主要使用CART算法实现决策树

CART算法用基尼系数代替熵模型。基尼指数度量数据分区或训练元组D的不纯度,定义为:

CART算法将最大化不纯度降低的属性选择为分裂属性,CART算法采用与传统统计学完全不同的方式构建准则,而且以二叉树形式给出,易于理解,使用和解释。由CART算法构建的决策树在很多情况下比常用的统计方式构建的代数预测更加准确,而且数据越复杂,变量越多,算法的优越性越显著

树剪枝

随着决策树深度的增加,模型的准确度肯定会越来越好。但是对于新的未知数据,模型的表现会很差,产生的决策树会出现过分适应数据的问题。而且,由于数据中的噪声和孤立点,许多分枝反映的是训练数据中的异常,对新样本的判定很不精确。为防止构建的决策树出现过拟合,需要对决策树进行剪枝。决策树的剪枝方法一般有预剪枝和后剪枝方法

1. 预剪枝

当在某一结点选择使用某一属性作为划分属性时,会由于本次划分而产生几个分支。预剪枝就是对划分前后两棵树的泛化性能进行评估,根据评估结果决定该结点是否进行划分。如果在一个结点划分样本将导致低于预定义临界值的分裂(如使用信息增益度量)则提前停止树的构造,但是选择一个合适的临界值往往非常困难

2. 后剪枝

在后剪枝方法中,先构造一颗完整的决策树,然后从下向上计算每个结点的经验熵,递归地从决策树的叶子结点进行回缩,通过计算回缩前后的损失函数并进行比较判断是否进行剪枝。剪枝可以只在树的某一部分进行,即局部剪枝,这样极大提高了剪枝的效率

3:决策树应用

sklearn.tree.DecisionTreeClassifier实现了决策树的构建,在该方法中,参数criterion规定了该决策树所采用的 最佳分割属性的判决方法,取值有“gini”和“entropy”两种;max_depth限定了决策树的最大深度,对于防止过拟合非常有用。参数min_samples_leaf 限定了叶子结点包含的最小样本数

 

生成的决策树如下图所示

代码如下

from sklearn.datasets import load_iris
import pandas as pd
from sklearn import tree
from sklearn.tree import export_graphviz
# import graphviz
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
# dot_file = 'tree.dot'
# tree.export_graphviz(clf, out_file = dot_file)
# with open("D:\\tree.dot", 'w') as f:
#     f=export_graphviz(clf, out_file = f,feature_names = ['SL','SW','PL','PW'])

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
1月前
|
机器学习/深度学习 算法 数据可视化
【机器学习】ID3、C4.5、CART 算法
【机器学习】ID3、C4.5、CART 算法
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】 GBDT面试题:其中基分类器CART回归树,节点的分裂标准是什么?与RF的区别?与XGB的区别?
文章讨论了梯度提升决策树(GBDT)中的基分类器CART回归树的节点分裂标准,并比较了GBDT与随机森林(RF)和XGBoost(XGB)的区别,包括集成学习方式、偏差-方差权衡、样本使用、并行性、最终结果融合、数据敏感性以及泛化能力等方面的不同。
52 1
|
4月前
|
机器学习/深度学习 分布式计算 数据挖掘
数据仓库与数据挖掘技术的结合应用
【7月更文挑战第30天】数据仓库与数据挖掘技术的结合应用是现代企业实现高效决策和精准分析的重要手段。通过整合高质量的数据资源,利用先进的数据挖掘技术,企业可以更好地理解市场、客户和业务,从而制定科学的决策和战略。未来,随着技术的不断进步和应用场景的不断拓展,数据仓库与数据挖掘技术的结合应用将会为企业的发展提供更多机遇和挑战。
|
3月前
|
数据采集 自然语言处理 数据可视化
基于python数据挖掘在淘宝评价方面的应用与分析,技术包括kmeans聚类及情感分析、LDA主题分析
本文探讨了基于Python数据挖掘技术在淘宝评价分析中的应用,涵盖了数据采集、清洗、预处理、评论词频分析、情感分析、聚类分析以及LDA主题建模和可视化,旨在揭示淘宝客户评价中的潜在模式和情感倾向,为商家和消费者提供决策支持。
|
5月前
|
数据采集 数据可视化 数据挖掘
数据挖掘实战:使用Python进行数据分析与可视化
在大数据时代,Python因其强大库支持和易学性成为数据挖掘的首选语言。本文通过一个电商销售数据案例,演示如何使用Python进行数据预处理(如处理缺失值)、分析(如销售额时间趋势)和可视化(如商品类别销售条形图),揭示数据背后的模式。安装`pandas`, `numpy`, `matplotlib`, `seaborn`后,可以按照提供的代码步骤,从读取CSV到数据探索,体验Python在数据分析中的威力。这只是数据科学的入门,更多高级技术等待发掘。【6月更文挑战第14天】
517 11
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
1492 3
|
5月前
|
人工智能 分布式计算 算法
数据挖掘实战随笔更新清单
这是一系列技术博客的摘要,涵盖了多个主题。包括Elasticsearch实战经验、Maxcompute中的Geohash转换和GPS处理、Python环境配置与管理(如Jupyter、Miniforge、Miniconda)、批量接口调用、多进程CSV图片下载、Excel到Markdown转换、Scikit-learn的异常检测(OC-SVM)和模型总结、人工智能领域的图像分类和识别、文本挖掘算法以及数仓相关的行转列处理。所有文章都在持续更新和补充中。
48 2
|
6月前
|
数据可视化 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
|
6月前
|
算法 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
|
6月前
|
机器学习/深度学习 数据采集 算法
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
下一篇
无影云桌面