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算法是决策树领域的经典算法,具备处理连续属性和缺失值的能力,同时通过引入信息增益比和剪枝技术,有效地提升了模型的泛化能力。尽管其计算复杂度较高,但在实际应用中表现出色,被广泛应用于各种分类任务中。
热门推荐
DP1.2 vs HDMI1.4B:音频传输功能及兼容性比较
从用户体验到细节之美:移动端弹窗设计
5个雨天拍摄的小技巧,教你下雨天拍出好的摄影作品
从《孤注一掷》到《新生》:朴素法感流露与普法内涵冲突
2024ASN | 肾移植新突破:新定义微血管炎症类别改善移植后风险分层
自动驻车功能好用吗?
西媒:旧将成巴萨“摇钱树”,俱乐部能从二次转会中获得丰厚分成
康复训练太疼忍受不了怎么办
Excel VBA入门:从基础概念到实践应用
上海试点“个性化运动处方”:科技赋能慢病管理新模式
想要在职场混得好,你要知道的10大职场社交礼仪,很重要
原神七圣召唤:行秋技能深度解析
毛豆种植时间和方法详解(从种子的选择到收获的全流程指南,快速掌握种植技巧)
伊斯科:齐达内是我的伯乐,众多球员在贝蒂斯重生,这里很特别!
小宝宝乳糖不耐受是什么意思 新生儿乳糖不耐受怎么办?
两个月逆袭25年软考程序员?这份高效备考指南请收好
已办理结婚登记但共同生活时间较短,彩礼应否返还?
津媒:接连失误!国足挖坑太大必须吸取慢热教训
健康企业建设:员工体检服务管理方法
西甲劲旅的崛起:探秘贝蒂斯背后的故事
CPU散热风扇:电脑CPU散热风扇需要的电压与电流详解
通信工程学习:什么是FM频率调制
济南肾病医院解读:蛋白尿与尿毒症的关系
长度单位换算表怎么用?常见长度单位换算方法是什么?
梦的解析:理解梦的象征意义对心理健康的益处
2025年创业赚钱风口解析:适合普通人的小商机
重庆自驾九寨沟超全攻略:路线规划+景点推荐+避坑指南
曼联预定转会被切尔西4000万截胡,原因太现实!阿莫林新目标曝光
最长41个季度!社保基金长期持有绩优股来了
淋巴结肿大日常饮食需要注意什么指标