项目简介

基于周志华《机器学习》第 4 章(决策树)与第 8 章(集成学习)理论,实现 C4.5 决策树与 AdaBoost 集成学习算法,以经典鸢尾花数据集为任务载体,覆盖数据加载、模型训练、性能评估、结果可视化全流程。代码简洁无冗余,可一键运行,适合机器学习入门学习与简历项目展示。

核心理论

  1. C4.5 决策树:基于信息熵(Entropy)准则划分特征,是周志华《机器学习》第 4 章重点内容,通过递归构建树结构实现分类,核心是 “选择信息增益最大的特征”。
  2. AdaBoost 集成学习:属于提升法(Boosting)的一种,通过 “关注前一轮分类错误的样本” 来训练基分类器,最终通过加权投票输出结果,是第 8 章集成学习的核心方法之一。

环境依赖(requirements.txt)

txt

pandas==2.1.4
numpy==1.26.4
matplotlib==3.8.2
scikit-learn==1.3.2

完整代码(main.py)

python

运行

# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score, classification_report

# 1. 加载数据集(鸢尾花,周志华教材常用示例)
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.Series(iris.target, name="label")
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
print("✅ 数据集加载完成(鸢尾花,周志华教材经典案例)")

# 2. 训练C4.5决策树(周志华《机器学习》第4章)
c45_tree = DecisionTreeClassifier(criterion="entropy", max_depth=3, random_state=42)
c45_tree.fit(X_train, y_train)
y_pred_tree = c45_tree.predict(X_test)
tree_acc = accuracy_score(y_test, y_pred_tree)

# 3. 训练AdaBoost集成学习(周志华《机器学习》第8章)
adaboost = AdaBoostClassifier(n_estimators=50, random_state=42)
adaboost.fit(X_train, y_train)
y_pred_boost = adaboost.predict(X_test)
boost_acc = accuracy_score(y_test, y_pred_boost)

# 4. 性能对比(周志华经典算法评估逻辑)
print("\n📊 周志华经典算法性能对比:")
print(f"C4.5决策树准确率:{tree_acc:.2f}")
print(f"AdaBoost集成学习准确率:{boost_acc:.2f}")
print("\nC4.5决策树分类报告:")
print(classification_report(y_test, y_pred_tree, target_names=iris.target_names))

# 5. 可视化(算法性能对比图)
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.bar(["C4.5决策树", "AdaBoost"], [tree_acc, boost_acc], color=["#1f77b4", "#ff7f0e"])
plt.ylabel("分类准确率")
plt.title("周志华《机器学习》经典算法性能对比")
plt.savefig("周志华算法性能对比图.png", dpi=150)
plt.show()

print("\n✅ 可视化图表已保存:周志华算法性能对比图.png")

快速运行步骤

  1. 将上述代码复制到本地,保存为main.py
  2. 新建requirements.txt文件,粘贴上方依赖清单;
  3. 打开终端执行命令安装依赖:

    bash

    运行

    pip install -r requirements.txt
    
  4. 运行代码:

    bash

    运行

    python main.py
    

运行结果展示

1. 终端输出结果

plaintext

✅ 数据集加载完成(鸢尾花,周志华教材经典案例)

📊 周志华经典算法性能对比:
C4.5决策树准确率:0.98
AdaBoost集成学习准确率:1.00

C4.5决策树分类报告:
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        14
  versicolor       1.00      0.94      0.97        16
   virginica       0.94      1.00      0.97        15

    accuracy                           0.98        45
   macro avg       0.98      0.98      0.98        45
weighted avg       0.98      0.98      0.98        45

✅ 可视化图表已保存:周志华算法性能对比图.png

2. 性能指标解读

模型准确率说明
C4.5 决策树98%经典分类算法,性能稳定
AdaBoost 集成学习100%集成学习通过提升基分类器性能,达到更高准确率

3. 可视化结果

理论参考

  1. 周志华《机器学习》第 4 章 决策树(信息熵、C4.5 算法);
  2. 周志华《机器学习》第 8 章 集成学习(AdaBoost 算法原理);
  3. scikit-learn 官方文档:决策树AdaBoost

常见问题解决

  1. pip 命令未识别:使用python -m pip install -r requirements.txt,绕过环境变量配置问题;
  2. 中文乱码:代码中已添加plt.rcParams["font.sans-serif"] = ["SimHei"],生成的可视化图无中文乱码;
  3. 模型训练报错:检查数据集格式,确保输入输出维度匹配,或调整max_depthn_estimators等参数。

更多推荐