当前位置: 首页 > news >正文

【机器学习|学习笔记】详解决策树CART算法,并对比ID3 C4.5和CART算法

【机器学习|学习笔记】详解决策树CART算法,并对比ID3 C4.5和CART算法

【机器学习|学习笔记】详解决策树CART算法,并对比ID3 C4.5和CART算法


文章目录

  • 【机器学习|学习笔记】详解决策树CART算法,并对比ID3 C4.5和CART算法
    • 一、决策树算法发展简述
    • 二、CART算法核心
    • 三、Python示例:用 sklearn 训练和展示CART分类树
    • 四、ID3 和 C4.5 的Python近似实现
    • 五、三种算法对比总结
    • 六、完整示例代码整合
    • 七、小结


欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/147196847


一、决策树算法发展简述

  • ID3(1986):基于信息增益(Entropy)选择特征,偏向多值特征;只能处理离散特征,不支持剪枝。
  • C4.5(1993):ID3的改进,使用信息增益比(Gain Ratio)选择特征,支持连续特征和剪枝,实用性更强。
  • CART(Classification and Regression Tree, 1984):采用基尼指数(Gini Index)选择特征,生成二叉树,支持分类和回归任务,具备更广泛的应用。

二、CART算法核心

  • 基尼指数(Gini Index) 衡量数据集纯度,值越小越纯。
  • 二叉树结构:每个节点二分裂,适合连续变量。
  • 支持分类树和回归树。
  • 内置剪枝策略,避免过拟合。

三、Python示例:用 sklearn 训练和展示CART分类树

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_text
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 载入数据
data = load_iris()
X, y = data.data, data.target# 划分训练测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 训练CART分类树,criterion='gini'表示使用基尼指数
clf_cart = DecisionTreeClassifier(criterion='gini', random_state=42)
clf_cart.fit(X_train, y_train)# 预测
y_pred = clf_cart.predict(X_test)
print(f"Accuracy (CART, Gini): {accuracy_score(y_test, y_pred):.4f}")# 输出决策树规则文本展示
tree_rules = export_text(clf_cart, feature_names=data.feature_names)
print("CART 决策树规则:\n", tree_rules)

四、ID3 和 C4.5 的Python近似实现

sklearn 自带的 DecisionTreeClassifier 不直接实现ID3和C4.5,但:

  • ID3 可以用 criterion='entropy' 近似实现(用信息熵作为划分标准)
  • C4.5 没有直接实现,但信息增益比是其核心,需自己实现或用第三方库

简单训练ID3近似:

clf_id3 = DecisionTreeClassifier(criterion='entropy', random_state=42)
clf_id3.fit(X_train, y_train)
y_pred_id3 = clf_id3.predict(X_test)
print(f"Accuracy (ID3 approx, Entropy): {accuracy_score(y_test, y_pred_id3):.4f}")

五、三种算法对比总结

算法划分标准支持特征类型树结构支持剪枝备注
ID3信息增益 (Entropy)离散多叉树易偏向多值特征
C4.5信息增益比 (Gain Ratio)离散+连续多叉树解决ID3偏向,多数实际应用算法
CART基尼指数 (Gini Index)离散+连续二叉树同时支持分类与回归,应用广泛

六、完整示例代码整合

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_text
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_scoredata = load_iris()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# CART - 基尼指数
clf_cart = DecisionTreeClassifier(criterion='gini', random_state=42)
clf_cart.fit(X_train, y_train)
y_pred_cart = clf_cart.predict(X_test)
print(f"Accuracy (CART, Gini): {accuracy_score(y_test, y_pred_cart):.4f}")# ID3近似 - 信息熵
clf_id3 = DecisionTreeClassifier(criterion='entropy', random_state=42)
clf_id3.fit(X_train, y_train)
y_pred_id3 = clf_id3.predict(X_test)
print(f"Accuracy (ID3 approx, Entropy): {accuracy_score(y_test, y_pred_id3):.4f}")print("\nCART 决策树规则:")
print(export_text(clf_cart, feature_names=data.feature_names))print("\nID3 近似决策树规则:")
print(export_text(clf_id3, feature_names=data.feature_names))

七、小结

  • CART算法是目前机器学习中最常用的决策树算法,适用范围广。
  • ID3和C4.5奠定了决策树发展基础,C4.5更贴合实际需求。
  • sklearn 的 DecisionTreeClassifier 默认CART,支持基尼和熵划分,但无信息增益比。

文章转载自:
http://capouch.jopebe.cn
http://beslaver.jopebe.cn
http://baroque.jopebe.cn
http://ascesis.jopebe.cn
http://assiduously.jopebe.cn
http://byway.jopebe.cn
http://ameloblast.jopebe.cn
http://applesauce.jopebe.cn
http://antigalaxy.jopebe.cn
http://billet.jopebe.cn
http://castellan.jopebe.cn
http://caribe.jopebe.cn
http://barycentre.jopebe.cn
http://caulicle.jopebe.cn
http://bhutanese.jopebe.cn
http://brinjaul.jopebe.cn
http://cavalvy.jopebe.cn
http://balkanise.jopebe.cn
http://billie.jopebe.cn
http://bantering.jopebe.cn
http://autarkist.jopebe.cn
http://backcourtman.jopebe.cn
http://children.jopebe.cn
http://buea.jopebe.cn
http://baseset.jopebe.cn
http://bazoom.jopebe.cn
http://burnoose.jopebe.cn
http://chiromegaly.jopebe.cn
http://airplane.jopebe.cn
http://argental.jopebe.cn
http://www.dtcms.com/a/275434.html

相关文章:

  • 系统分析师-计算机系统-计算机系统概述存储系统
  • 内网穿透系列九:开源的网络穿透与组网工具 EasyTier,支持多种数据传输通道,去中心化,兼具高效与安全
  • 【Java八股文总结 — 包学会】(二)计算机网络
  • PyTorch的计算图是什么?为什么绘图前要detach?
  • 【设计模式】单例模式 饿汉式单例与懒汉式单例
  • 人工智能自动化编程:传统软件开发vs AI驱动开发对比分析
  • 云原生技术与应用-生产环境构建高可用Harbor私有镜像仓库
  • ​BRPC核心架构解析:高并发RPC框架的设计哲学
  • Whistle抓包
  • 【设计模式】桥接模式(柄体模式,接口模式)
  • 为什么有些PDF无法复制文字?原理分析与解决方案
  • Oxygen XML Editor 26.0编辑器
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十课——图像gamma矫正的FPGA实现
  • 定长子串中元音的最大数目
  • 大数据在UI前端的应用深化研究:用户行为数据的时序模式挖掘
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的营销直播质量提升策略研究
  • 【世纪龙科技】新能源汽车结构原理体感教学软件-比亚迪E5
  • HTTP 状态码详解
  • Apache HTTP Server 从安装到配置
  • 使用python 实现一个http server
  • 搭建云手机教程
  • 力扣面试150题--括号生成
  • S7-200 SMART CPU 密码清除全指南:从已知密码到忘记密码的解决方法
  • AI产品经理面试宝典第11天:传统软件流程解析与AI产品创新对比面试题与答法
  • MongoDB数据库入门到集群部署企业级实战
  • linux使用lsof恢复误删的nginx日志文件——筑梦之路
  • (C++)STL:list认识与使用全解析
  • Kafka Schema Registry:数据契约管理的利器
  • python数据分析及可视化课程介绍(01)以及统计学的应用、介绍、分类、基本概念及描述性统计
  • [BUUCTF 2018]Online Tool