实验 决策树分类
实验目标
本实验旨在通过实现一个基础的决策树分类模型,帮助学生掌握以下技能:
理解并应用决策树分类模型:学习如何使用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英寸的图形窗口
# 绘制决策树
# 设置图表标题
# 显示绘制的图形
# 打印决策树的规则
# 导出决策树的规则为文本格式
# 打印决策树的规则
# 深度优化实验:测试不同深度下的准确率
# 遍历不同的深度值
# 计算训练集和测试集的准确率
# 计算训练集的准确率
# 计算测试集的准确率
# 将训练集准确率添加到列表中
# 将测试集准确率添加到列表中
# 绘制深度与准确率的关系图
# 创建一个10x6英寸的图形窗口
# 绘制训练集准确率的曲线
# 绘制测试集准确率的曲线
# 设置x轴标签
# 设置y轴标签
# 设置图表标题
# 显示图例
# 显示网格
# 显示绘制的图形
# 找到测试集准确率最高的深度
# 找到测试集准确率最高的决策树深度
# 输出最佳深度
# 使用最佳深度重新训练决策树
# 创建一个决策树分类器,设置最佳深度
# 使用训练集数据训练模型
# 计算并打印最佳深度模型的准确率
# 计算最佳深度模型在测试集上的准确率
# 输出准确率,保留两位小数
# 可视化最佳深度的决策树
# 创建一个12x8英寸的图形窗口
# 绘制最佳深度的决策树
# 设置图表标题
# 显示绘制的图形
# 打印最佳深度的决策树规则
# 导出最佳深度的决策树规则
# 打印决策树规则
——————————————

