第三次试验 手写数字识别

如何使用此手写数字识别脚本

本脚本使用多层感知机 (MLP) 神经网络进行手写数字的分类。它会执行以下操作:

  1. 加载用户选择的数字数据集。

  2. 显示一些样本数字(如果图像是方形的)。

  3. 预处理数据(缩放)。

  4. 任务1:比较具有固定数量隐藏节点(100个)的 ReLU 和 Logistic 激活函数的性能,并绘制它们的训练损失曲线。

  5. 任务2:针对 ReLU 和 Logistic 激活函数,绘制训练错误率和测试错误率与单个隐藏层中不同数量隐藏节点(范围从1到19,并扩展到50)的关系图。

步骤:

  1. 环境准备:

    • 确保您已安装 Python (建议版本 3.7+)。

    • 安装必要的库。您可以使用 pip 安装它们:

      pip install pandas numpy scikit-learn matplotlib
      
    • tkinter 通常随 Python 标准库一起提供。如果未安装,您可能需要单独安装它(例如,在某些 Linux 发行版上使用 sudo apt-get install python3-tk)。

  2. 数据准备:

    • 您的数据文件应该是 .csv, .txt, 或 .dat 格式。

    • 数据应为纯数字,以空格分隔

    • 第一列应为数字标签 (例如, 0, 1, 2, …, 9)。

    • 其余列应为像素特征值。

    • 脚本假设像素数据可以重塑为方形图像以便进行可视化 (例如,784 个特征对应 28x28 图像)。如果特征数量不是完全平方数,样本图像将不会显示。

    • 文件中不应包含表头行

  3. 运行脚本:

    • 将上述 Python 代码保存为一个 .py 文件 (例如, digit_classifier.py)。

    • 打开终端或命令提示符,导航到保存文件的目录。

    • 运行脚本:

      python digit_classifier.py
      
  4. 选择数据文件:

    • 脚本运行时,会弹出一个文件对话框。

    • 请浏览并选择包含您的手写数字数据的文件。

  5. 查看结果:

    • 控制台输出:

      • 数据加载信息和形状。

      • 数据缩放和分割信息。

      • 每个模型训练的进度和准确率(训练集和测试集)。

    • 绘图窗口:

      • 样本数字: 如果图像尺寸可以确定,将显示几个样本数字及其标签。

      • 任务1的损失曲线: 比较 ReLU 和 Logistic (100个隐藏节点) 的训练损失随迭代次数的变化。

      • 任务2的错误率曲线: 显示 ReLU 和 Logistic 激活函数下,模型的训练错误率和测试错误率如何随隐藏节点数量的变化而变化。

关闭所有绘图窗口后,脚本将完成执行并在控制台打印最终消息。