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算法是决策树领域的经典算法,具备处理连续属性和缺失值的能力,同时通过引入信息增益比和剪枝技术,有效地提升了模型的泛化能力。尽管其计算复杂度较高,但在实际应用中表现出色,被广泛应用于各种分类任务中。
热门推荐
山东“三大集”的多重深意
儿童常见胸廓畸形:鸡胸、漏斗胸的成因与治疗全解析
养宠物前必看:从健康到法律的全方位考量
处女座女生的爱情观:从《心动的信号》看她们的细节世界
管道疏通剂拯救马桶堵塞危机
一年四季都美如画的普者黑:世外桃源般的仙境之地
从商务宴请到情侣约会:职场饭局买单全攻略
解码职场饭局:领导主动买单背后的四大心理学动机
三胎政策与生育权:一场关乎国家与个人的博弈
职场性别平等:从招聘到文化,八大维度全面解析
7亿人口要搞计划生育,14亿人口却要鼓励生三胎,原因是什么呢?
非酒精性脂肪肝病悄然高发,健康饮食和运动可有效预防
2025蛇年春节假期安排出炉:除夕至正月初七放假8天
白胡椒粉的正确打开方式:意式乌龙面
5大实操方案助力球馆快速吸引和留住顾客
从霸王茶姬到巴博斯:10个品牌在欧洲市场这样玩转公关活动
贵州苗寨旅游必去十大景点好玩的地方有哪些旅游必看攻略
四川第二大旅游城市排名表及最新第二批四川旅游名县名单
西安北站公共交通指南:地铁、公交、出租全攻略
西安古城墙打卡指南:永宁门&朱雀门
冬日西安必打卡:兵马俑、华清池、大雁塔
乔家大院因影视走红,王家大院凭建筑称王
大型中央空调系统节能降耗:AI驱动的七大技术创新
贵州小七孔:地球腰带上的绿宝石,首个世界自然遗产
荔波小七孔:喀斯特地貌造就的“地球绿宝石”
秋游小七孔:碧水金叶相映,六大景点全攻略
荔波小七孔景区:冬季温暖如春,新增多项体验项目
三花猫咬人怎么办?教你几招搞定它!
被猫咬伤后的正确处理方法,你知道吗?
流感还是普通感冒?一文读懂症状区别与科学预防