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算法是决策树领域的经典算法,具备处理连续属性和缺失值的能力,同时通过引入信息增益比和剪枝技术,有效地提升了模型的泛化能力。尽管其计算复杂度较高,但在实际应用中表现出色,被广泛应用于各种分类任务中。
热门推荐
内蒙古成吉思汗陵宫:融合祭祀文化与建筑艺术的国家级景区
王者荣耀成吉思汗重做:从“无皮村长”到“苍狼之主”
成吉思汗:统一蒙古高原,开创世界最大帝国
从需求到信任:伴侣沟通的五个关键维度
东西方的平衡智慧:亚里士多德与孔子
心理健康与情感平衡的和谐共生
理性与感性的平衡:如何做出更好的选择
新生儿低血糖:四大高危因素与科学预防方法
从2.6降至2.0:都柏林医院调整低血糖阈值,入院率大幅下降
冬&烤羊肉串
干炸牛肉条
孙尚香:一个被文艺创作改写的历史人物
广州春节习俗全览:11个传统仪式里的岭南文化
白萝卜泡水:润肺止咳的秋冬养生饮品
白萝卜止咳功效显著,七种搭配方案详解
潇洒态度:面对挑战时的心理调适策略
坦克战神夏侯惇:王者荣耀最强出装与对战组合
颈椎病来袭,职场人如何告别头晕?
焦虑引起的头晕怎么办?
耳石症和脑血管疾病:揭秘头晕背后的真凶
维生素C和铁质:改善头晕眼花的关键营养素
如何提升以电视为显示器的图像清晰度(解决电视显示模糊问题的有效方法)
东方Project经典异变时间线解析
WGS-84坐标系:精准定位的秘密武器
12306更新:用户名可改,字母开头限6-30字
春运抢票季,教你设置既安全又好记的12306用户名
黄蓉三大弟子:从丐帮到峨眉,续写武林传奇
俄罗斯经典文学作品中的女性形象,读者最爱谁?
服药期间,当心柚子“捣乱”
服药期间千万别碰柚子!