目录

  • 1 Chapter01. Introduction
    • 1.1 课程PPT
    • 1.2 补充材料(数学基础)
    • 1.3 本节作业
  • 2 Chapter02. Bayesian Decision Theory
    • 2.1 课程PPT
    • 2.2 视频素材
    • 2.3 章节测试
  • 3 Chapter03. Maximum Likelihood and Bayesian Estimation
    • 3.1 课程PPT
    • 3.2 视频素材
    • 3.3 补充材料(EM)
  • 4 Chapter04. Nonparametric Techniques
    • 4.1 课程PPT
    • 4.2 补充材料(距离)
  • 5 Chapter05. Linear Discriminant Functions
    • 5.1 课程PPT
    • 5.2 视频素材
    • 5.3 补充材料(梯度)
    • 5.4 数学证明
  • 6 Chapter06. Neural Networks
    • 6.1 课程PPT
    • 6.2 视频素材
    • 6.3 补充材料(BP)
  • 7 Chapter07. Dimension Reduction
    • 7.1 课程PPT
    • 7.2 补充材料(奇异值)
  • 8 Chapter08. Non-metric Methods
    • 8.1 课程PPT
  • 9 Chapter09. Unsupervised Learning and Clustering
    • 9.1 课程PPT
    • 9.2 实验
  • 10 Chapter10. Algorithm-independent Machine Learning
    • 10.1 课程PPT
    • 10.2 补充材料(偏差方差两难)
    • 10.3 实验
  • 11 课程实验
    • 11.1 实验环境设置
    • 11.2 python数据常用导入方法
    • 11.3 数据探索
    • 11.4 数据预处理
    • 11.5 朴素贝叶斯分类
    • 11.6 KNN分类
    • 11.7 线性回归
    • 11.8 逻辑回归
    • 11.9 SVM实现多分类
    • 11.10 决策树分类
    • 11.11 PCA实现
    • 11.12 K-means聚类实现
决策树分类

实验 决策树分类

实验目标

本实验旨在通过实现一个基础的决策树分类模型,帮助学生掌握以下技能:

理解并应用决策树分类模型:学习如何使用Scikit-learn库的DecisionTreeClassifier来实现分类任务。数据集划分与训练:掌握如何将数据划分为训练集和测试集,并进行模型训练。模型调优:通过测试不同深度的决策树,理解树的深度对模型性能的影响,并找到最佳深度。模型评估与可视化:评估决策树模型的准确率,学习如何通过可视化工具展示决策树及其规则。

实验环境

o Python编程语言

o Scikit-learn库

o Matplotlib(用于数据可视化)

o NumPy和Pandas库(用于数据处理)

o Jupyter Notebook或类似IDE(用于代码编写和结果展示)

实验数据集

本实验使用的是鸢尾花数据集(Iris dataset),它是一个经典的多分类数据集,包含150个样本,4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),以及3个目标类别(Setosa、Versicolor、Virginica)。

实验步骤

1. 数据加载与初步探索

o 加载鸢尾花数据集,获取特征数据X和目标标签y。

o 初步了解数据集的特征和目标类别分布。

2. 数据集划分与标准化

o 使用 train_test_split 方法将数据划分为训练集(80%)和测试集(20%)。

3. 模型训练与预测

o 使用DecisionTreeClassifier(默认深度)对训练集进行拟合,得到分类模型。

o 在测试集上进行预测,计算模型的准确率。

4. 决策树可视化

o 使用plot_tree方法可视化决策树,展示决策树的结构和分类规则。

5. 模型深度调优

o 测试不同的树深度(从1到10),观察树深度对训练集和测试集准确率的影响。

o 绘制不同深度下的准确率曲线,选择最佳的树深度。

6. 最佳深度模型训练与评估

o 使用找到的最佳深度重新训练决策树模型。

o 评估并输出测试集的准确率。

7. 最佳决策树可视化与规则提取

o 可视化最佳深度下的决策树。

o 输出最佳深度决策树的规则,以便分析模型如何做出决策。

实验结果展示

o 基础决策树准确率:显示模型在测试集上的准确率

o 不同深度下的训练与测试准确率:显示不同深度下训练集和测试集的准确率曲线。

o 最佳决策树的可视化:使用plot_tree绘制最佳深度下的决策树图,展示每个节点的决策规则和类别分布。通过图形化形式直观展示决策树如何根据特征进行分类。

实验总结

o 本实验通过决策树分类器实现了对鸢尾花数据集的分类任务。数据集的预处理主要包括数据划分,模型的训练则通过DecisionTreeClassifier完成。

o 决策树的深度直接影响模型的表现。较浅的树可能欠拟合,而较深的树可能出现过拟合。通过测试不同深度,我们找到了最佳深度,使得模型在测试集上取得较高的准确率。

o 可视化决策树结构帮助我们理解模型的决策过程,特别是在进行模型解释时具有重要意义。通过展示不同深度的决策树及其规则,我们能够清晰地看到特征对分类的贡献。

o 本实验通过调节决策树的深度来优化模型,避免了过深的树导致的过拟合现象。实验结果显示,最佳深度的决策树能够平衡训练准确率和测试准确率,达到较好的分类效果。

实验代码参考

以下是一个决策树分类实现的实验代码(使用鸢尾花数据集):

——————————————

# 导入必要的库

import numpy as np  # 导入numpy,用于数值计算

import matplotlib.pyplot as plt  # 导入matplotlib.pyplot,用于绘制图表

from sklearn.datasets import load_iris  # 导入sklearn.datasets中的load_iris函数,用于加载Iris数据集

from sklearn.model_selection import train_test_split  # 导入train_test_split函数,用于数据集划分

from sklearn.tree import DecisionTreeClassifier, export_text, plot_tree  # 导入决策树分类器和相关函数

from sklearn.metrics import accuracy_score  # 导入accuracy_score函数,用于计算准确率

# 加载鸢尾花数据集(Iris Dataset)


# 数据划分:分为训练集和测试集,测试集占比为 20%



# 基础模型训练:使用默认深度的决策树分类器



# 预测和评估模型的基础准确率


# 可视化基础决策树

        # 创建一个12x8英寸的图形窗口

         # 绘制决策树

        # 设置图表标题

        # 显示绘制的图形

# 打印决策树的规则

        # 导出决策树的规则为文本格式

        # 打印决策树的规则

# 深度优化实验:测试不同深度下的准确率

         # 设置测试的决策树深度范围,从1到10

# 遍历不同的深度值

         # 创建一个新的决策树分类器,限制树的最大深度

         # 训练决策树模型

# 计算训练集和测试集的准确率

         # 计算训练集的准确率

        # 计算测试集的准确率

         # 将训练集准确率添加到列表中

         # 将测试集准确率添加到列表中

# 绘制深度与准确率的关系图

        # 创建一个10x6英寸的图形窗口

        # 绘制训练集准确率的曲线

        # 绘制测试集准确率的曲线

        # 设置x轴标签

        # 设置y轴标签

        # 设置图表标题

        # 显示图例

        # 显示网格

        # 显示绘制的图形

# 找到测试集准确率最高的深度

        # 找到测试集准确率最高的决策树深度

        # 输出最佳深度

# 使用最佳深度重新训练决策树

        # 创建一个决策树分类器,设置最佳深度

        # 使用训练集数据训练模型

# 计算并打印最佳深度模型的准确率

         # 计算最佳深度模型在测试集上的准确率

         # 输出准确率,保留两位小数

# 可视化最佳深度的决策树

         # 创建一个12x8英寸的图形窗口

         # 绘制最佳深度的决策树

         # 设置图表标题

         # 显示绘制的图形

# 打印最佳深度的决策树规则

         # 导出最佳深度的决策树规则

         # 打印决策树规则

——————————————