C4.5 算法详解:决策树的经典算法
创作时间:
作者:
@小白创作中心
C4.5 算法详解:决策树的经典算法
引用
CSDN
1.
https://blog.csdn.net/2301_77444219/article/details/140051725
C4.5算法是决策树领域的经典算法,由Ross Quinlan在1993年提出,是ID3算法的改进版本。它不仅能够处理离散属性,还能处理连续属性,并在处理缺失值和剪枝方面有较大改进。本文将详细介绍C4.5算法的基本概念、工作原理以及实现步骤。
一、引言
在机器学习领域,决策树是一种广泛使用的分类和回归方法。C4.5 是由Ross Quinlan在1993年提出的算法,是ID3算法的改进版本,被广泛应用于数据挖掘和机器学习领域。本文将详细介绍C4.5算法的基本概念、工作原理以及实现步骤。
二、C4.5 算法的基本概念
C4.5算法是一种用于分类任务的决策树生成算法,其核心思想是通过信息增益比(Gain Ratio)来选择最优的划分属性,构建决策树。与ID3算法不同,C4.5不仅能够处理离散属性,还能处理连续属性,同时在处理缺失值和剪枝(Pruning)方面也有较大的改进。
三、C4.5 算法的工作原理
计算信息熵(Entropy)和信息增益(Information Gain)信息熵是度量样本集合纯度的指标,定义如下:
def calculate_entropy(y):
"""计算数据集的熵"""
# 计算各类别的概率
value_counts = y.value_counts()
probabilities = value_counts / len(y)
# 计算熵
entropy = -sum(probabilities * np.log2(probabilities))
return entropy
信息增益则表示通过某个属性进行划分后,信息熵的减少量:
def calculate_information_gain(X, y, attribute):
"""计算某个属性的信息增益"""
# 计算数据集的熵
total_entropy = calculate_entropy(y)
# 按属性值划分数据集
values = X[attribute].unique()
weighted_entropy = 0
for value in values:
subset_y = y[X[attribute] == value]
weighted_entropy += (len(subset_y) / len(y)) * calculate_entropy(subset_y)
# 计算信息增益
information_gain = total_entropy - weighted_entropy
return information_gain
四、C4.5 算法的实现步骤
选择最优划分属性计算每个属性的信息增益比选择信息增益比最高的属性作为当前节点的划分属性生成子节点根据选择的划分属性,将数据集划分为若干子集对每个子集递归地调用C4.5算法,生成子节点。并绘制图像。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
# 创建西瓜数据集3.0 alpha
data = {
'色泽': ['青绿', '乌黑', '乌黑', '青绿', '浅白', '青绿', '乌黑', '浅白', '青绿', '浅白', '青绿', '乌黑', '乌黑', '青绿', '青绿', '浅白', '乌黑'],
'根蒂': ['蜷缩', '蜷缩', '蜷缩', '蜷缩', '稍蜷', '稍蜷', '稍蜷', '稍蜷', '硬挺', '硬挺', '硬挺', '蜷缩', '稍蜷', '稍蜷', '蜷缩', '蜷缩', '硬挺'],
'敲声': ['浊响', '沉闷', '浊响', '浊响', '浊响', '沉闷', '沉闷', '沉闷', '清脆', '清脆', '清脆', '浊响', '浊响', '浊响', '浊响', '浊响', '沉闷'],
'好瓜': ['是', '否', '是', '是', '是', '否', '否', '否', '是', '否', '是', '否', '否', '否', '是', '是', '否']
}
df = pd.DataFrame(data)
# 特征和标签
X = df[['色泽', '根蒂', '敲声']]
y = df['好瓜']
# 将类别特征转换为数值特征
X = pd.get_dummies(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练决策树模型
clf = DecisionTreeClassifier(criterion='entropy', random_state=42)
clf.fit(X_train, y_train)
# 可视化决策树
plt.figure(figsize=(20,10))
plot_tree(clf, feature_names=X.columns, class_names=['否', '是'], filled=True, rounded=True, fontsize=12)
plt.title("西瓜数据集决策树")
plt.show()
可视化结果:
五、总结
C4.5算法是决策树领域的经典算法,具备处理连续属性和缺失值的能力,同时通过引入信息增益比和剪枝技术,有效地提升了模型的泛化能力。尽管其计算复杂度较高,但在实际应用中表现出色,被广泛应用于各种分类任务中。
热门推荐
布洛芬正确吃法,避免踩坑!
全方位股票投资分析:从技术分析到投资组合管理的深度探讨
杭州元素闪耀2025年春晚舞台
刀郎不上春晚:一个艺术家的坚持与选择
2025春晚:270亿次话题阅读量背后的创新与传承
李谷一连续三年缺席春晚:从《难忘今宵》到永恒的传奇
广东江门至贵州自驾全攻略:路线规划与景点推荐
跟着郑秀文吃遍汕头:从卤鹅到牛肉火锅的美食地图
赵伯啸《万松金阙图卷》:南宋宫廷绘画的巅峰之作
“想看看中国的真实之美”——“老外”在杭州沉浸体验古今魅力
62岁男子长期不吃晚餐,清除斑块、软化血管,半年后怎么样了?
长期素食有哪些危害?怎样健康吃素
桂林山水甲天下:高碑店出发攻略大揭秘!
揭秘麻将高手的‘老六’心理战术!
麻将高手速成课程:轻松赢牌局!
登临黄河大梯子崖,饱览黄河胜境
遵义至重庆自由行交通攻略:全方位解析如何便捷出行与购票指南
春节档首波口碑出炉 《哪吒》领跑
揭秘天蝎座情感密码:探寻真正触动其内心的力量
十二星座爱情分析:揭秘星座性格与恋爱模式
3000元玩转西安和平遥古城:春节文化之旅全攻略
如何举报商品虚假宣传
如何识别和防范网络虚假广告
省人大代表徐翼:虚假违法广告层出不穷,需要加强关注和解决
麻将高手教你用策略赢麻友
麻将高手教你如何用心理战术赢麻友
阳朔西街:一条见证1400年沧桑的“地球村”
脱发防治全攻略:从中医到西医的科学应对方案
吃鸡蛋真的能防脱发吗?答案令人惊喜!
信迪利单抗的疗效如何