第三次试验 手写数字识别¶
如何使用此手写数字识别脚本¶
本脚本使用多层感知机 (MLP) 神经网络进行手写数字的分类。它会执行以下操作:
加载用户选择的数字数据集。
显示一些样本数字(如果图像是方形的)。
预处理数据(缩放)。
任务1:比较具有固定数量隐藏节点(100个)的 ReLU 和 Logistic 激活函数的性能,并绘制它们的训练损失曲线。
任务2:针对 ReLU 和 Logistic 激活函数,绘制训练错误率和测试错误率与单个隐藏层中不同数量隐藏节点(范围从1到19,并扩展到50)的关系图。
步骤:¶
环境准备:
确保您已安装 Python (建议版本 3.7+)。
安装必要的库。您可以使用 pip 安装它们:
pip install pandas numpy scikit-learn matplotlib
tkinter
通常随 Python 标准库一起提供。如果未安装,您可能需要单独安装它(例如,在某些 Linux 发行版上使用sudo apt-get install python3-tk
)。
数据准备:
您的数据文件应该是
.csv
,.txt
, 或.dat
格式。数据应为纯数字,以空格分隔。
第一列应为数字标签 (例如, 0, 1, 2, …, 9)。
其余列应为像素特征值。
脚本假设像素数据可以重塑为方形图像以便进行可视化 (例如,784 个特征对应 28x28 图像)。如果特征数量不是完全平方数,样本图像将不会显示。
文件中不应包含表头行。
运行脚本:
将上述 Python 代码保存为一个
.py
文件 (例如,digit_classifier.py
)。打开终端或命令提示符,导航到保存文件的目录。
运行脚本:
python digit_classifier.py
选择数据文件:
脚本运行时,会弹出一个文件对话框。
请浏览并选择包含您的手写数字数据的文件。
查看结果:
控制台输出:
数据加载信息和形状。
数据缩放和分割信息。
每个模型训练的进度和准确率(训练集和测试集)。
绘图窗口:
样本数字: 如果图像尺寸可以确定,将显示几个样本数字及其标签。
任务1的损失曲线: 比较 ReLU 和 Logistic (100个隐藏节点) 的训练损失随迭代次数的变化。
任务2的错误率曲线: 显示 ReLU 和 Logistic 激活函数下,模型的训练错误率和测试错误率如何随隐藏节点数量的变化而变化。
关闭所有绘图窗口后,脚本将完成执行并在控制台打印最终消息。