Loading
1852 字
9 分钟

机器学习作业

2026-06-22
浏览量 加载中...

一、问题描述(4分)#

手写数字识别是计算机视觉和模式识别领域的经典问题,广泛应用于邮政编码识别、银行支票处理、文档数字化等实际场景。本任务旨在通过机器学习算法,实现对手写数字图像(0-9)的自动分类识别。

基于sklearn内置的digits手写数字数据集,分别使用决策树随机森林KMeans聚类三种机器学习算法,完成手写数字的分类识别和聚类分析,对比不同算法的性能表现。


二、数据集介绍(3分)#

项目内容
数据集名称sklearn digits(手写数字识别数据集)
样本数量1797条(满足≥1000条要求)
特征数量64个(满足≥5个要求)
类别数量10类(数字0-9)
数据来源UCI机器学习库,sklearn.datasets.load_digits()
授权方式BSD开源协议
适用场景多分类任务、图像识别、模式识别

每个样本是一个8×8像素的手写数字图像,像素值范围为0-16(灰度值),将图像矩阵展平为64维特征向量。数据集包含1797个样本,每个数字类别约有180个样本,类别分布较为均衡。数据来自43位手写者,经过预处理统一为8×8像素格式。


三、数据集预处理和可视化(8分)#

数据预处理#

采用分层随机划分策略,将数据集按8:2比例划分为训练集和测试集。训练集1437个样本,测试集360个样本,使用stratify=y参数保证类别分布一致。使用StandardScaler对特征进行标准化处理,公式为z=(x-μ)/σ,消除量纲差异,加快算法收敛。

数据可视化#

从数据集中选取10个样本展示,可直观看到手写数字为8×8像素灰度图,不同数字书写风格存在差异,部分数字形状相似存在识别难度。各类别样本数量均衡,无类别不平衡问题。


四、三种算法的基本原理(15分)#

4.1 决策树#

决策树是基于树结构进行决策的监督学习算法。核心原理:(1)特征选择——使用基尼指数选择最优划分特征;(2)树的构建——从根节点递归划分;(3)剪枝处理——限制最大深度和最小样本数防止过拟合。优点是模型直观、可解释性强;缺点是容易过拟合、对噪声敏感。

4.2 随机森林#

随机森林是集成学习算法,采用Bagging策略。核心原理:(1)Bootstrap采样——有放回抽取多个子数据集;(2)随机特征选择——节点分裂时随机选择部分特征;(3)多数投票——综合所有决策树预测结果。优点是泛化能力强、可评估特征重要性;缺点是可解释性差、训练时间长。

4.3 KMeans聚类#

KMeans是无监督学习算法,迭代划分K个簇。核心原理:(1)k-means++初始化;(2)将样本分配到最近簇中心;(3)重新计算簇中心;(4)重复直到收敛。优点是简单高效;缺点是需预先指定K值、假设簇为球形。

算法类型核心思想优点缺点
决策树监督-分类递归划分特征空间可解释性强易过拟合
随机森林监督-分类Bagging集成泛化能力强可解释性差
KMeans无监督-聚类迭代最小化距离简单高效需指定K值

五、三种算法实现的关键代码(30分)#

完整代码见附件ml_homework.py。

决策树实现:使用DecisionTreeClassifier创建分类器,设置max_depth=10、min_samples_split=5、min_samples_leaf=2参数,调用fit()训练模型,predict()预测,用accuracy_score、classification_report、confusion_matrix评估性能。

随机森林实现:使用RandomForestClassifier创建分类器,设置n_estimators=100、max_depth=15参数,使用n_jobs=-1并行训练,通过feature_importances_获取特征重要性。

KMeans聚类实现:使用PCA降维到2维,创建KMeans聚类器设置n_clusters=10、init=k-means++、n_init=10参数,用轮廓系数等评估聚类效果。


六、算法运行的结果(30分)#

6.1 分类算法结果#

算法测试集准确率宏平均F1
决策树82.22%0.82
随机森林96.39%0.96

决策树中数字0识别最好(精确率90%,召回率97%),数字8最差(召回率69%)。随机森林所有数字F1均≥0.90,数字2、4、5、6达到0.99。

6.2 聚类算法结果#

评估指标数值说明
轮廓系数0.1824聚类紧密度一般
调整兰德指数0.6669与真实标签有相关性
标准化互信息0.7394聚类质量中等

6.3 三种算法对比#

算法准确率/轮廓系数类型
决策树82.22%监督学习
随机森林96.39%监督学习
KMeans0.1824无监督学习

结论:随机森林表现最优,决策树次之,KMeans聚类效果一般。


七、结果分析与总结(10分)#

误差分析#

决策树准确率82.22%,存在过拟合现象,训练集准确率可能接近100%但测试集明显较低。数字8容易被误识别为其他数字,原因在于数字8书写风格多样,与数字3、6等形状相似,混淆矩阵显示数字8的召回率最低(69%)。

随机森林通过集成100棵决策树有效降低了过拟合风险,准确率达到96.39%。特征重要性分析显示图像中心区域的像素对分类最重要,符合手写数字的书写习惯。

KMeans聚类轮廓系数仅0.1824,原因在于手写数字数据分布不是球形的,不同数字的特征空间存在重叠,而KMeans假设簇是球形的。但调整兰德指数(0.6669)和标准化互信息(0.7394)表明聚类结果与真实标签有一定相关性。

改进方向#

算法主要问题改进策略
决策树过拟合交叉验证、剪枝优化
随机森林训练时间长减少树数量、参数优化
KMeans聚类效果一般尝试DBSCAN、谱聚类

实际应用场景#

决策树适合信用评估、医疗诊断等需要可解释性的场景;随机森林适合手写识别、垃圾邮件过滤等高准确率场景;KMeans适合客户细分、图像压缩等无标签数据场景。

总结#

  1. 算法选择:随机森林表现最优(96.39%),适合分类任务;决策树可解释性强,适合需要解释决策的场景;KMeans适合无标签数据的探索性分析。

  2. 数据预处理的重要性:数据标准化对KMeans等算法性能有重要影响,合理的数据划分保证了评估的公平性。

  3. 模型评估方法:使用多种评估指标(准确率、精确率、召回率、F1分数、轮廓系数),混淆矩阵直观展示分类结果,特征重要性分析有助于理解模型。

  4. 实践体会:理论知识需要通过实践来巩固,不同算法有不同的适用场景和局限性,参数调优对模型性能有重要影响,sklearn库提供了丰富的机器学习工具便于快速实验。


附件:ml_homework.py(代码)、5张结果图片

任课教师:__________ 教研室主任:__________

____年__月__日

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
机器学习作业
https://blog.tsh520.cn/posts/学校作业/机器学习课程大作业/
作者
团子和蛋糕
发布于
2026-06-22
许可协议
CC BY-NC-SA 4.0

评论区

[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:00 0:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]
我和宝宝在一起已经
---------TSH CXY---------
---------TSH
CXY---------
0 0 0
00 00 00
最近更新
站点统计
文章
85
动态
20
记录次数
89
分类
7
标签
79
总字数
96,503
运行时长
0
最后活动
0 天前