当前位置: 首页 > news >正文

手写数字识别实战 - 从传统机器学习到深度学习

关键词:MNIST数据集、SVM、神经网络、模型对比

python

# 第一部分:使用Scikit-learn的SVM识别手写数字
from sklearn import datasets, svm, metrics
from sklearn.model_selection import train_test_split# 加载MNIST数据集
digits = datasets.load_digits()
X, y = digits.images.reshape((len(digits.images), -1)), digits.target# 数据预处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建SVM分类器
clf = svm.SVC(gamma=0.001)
clf.fit(X_train, y_train)# 预测与评估
y_pred = clf.predict(X_test)
print(f"分类报告:\n{metrics.classification_report(y_test, y_pred)}")

输出示例

text

precision    recall  f1-score   support0       1.00      1.00      1.00        331       1.00      1.00      1.00        282       1.00      1.00      1.00        333       1.00      0.97      0.99        34
...accuracy                           0.99       360

python

# 第二部分:使用PyTorch实现神经网络
import torch
import torch.nn as nn
import torch.optim as optim# 定义神经网络
class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.fc1 = nn.Linear(64, 128)self.fc2 = nn.Linear(128, 10)def forward(self, x):x = torch.relu(self.fc1(x))x = self.fc2(x)return x# 转换数据为Tensor
X_train_t = torch.FloatTensor(X_train)
y_train_t = torch.LongTensor(y_train)# 训练模型
model = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)for epoch in range(100):optimizer.zero_grad()outputs = model(X_train_t)loss = criterion(outputs, y_train_t)loss.backward()optimizer.step()

关键结论

  • SVM在小型数据集上准确率达99%

  • 神经网络通过特征自动提取获得更强泛化能力

  • 参数量对比:SVM(支持向量) vs NN(权重矩阵)

http://www.lryc.cn/news/613131.html

相关文章:

  • Spring AOP动态代理核心原理深度解析 - 图解+实战揭秘Java代理设计模式
  • 【驱动】RK3576-Debian系统使用ping报错:socket operation not permitted
  • 【ee类保研面试】数学类---概率论
  • c++编译环境安装(gcc、cmake)
  • 【C++】哈希表原理与实现详解
  • Numpy科学计算与数据分析:Numpy数学函数入门与实践
  • [激光原理与应用-172]:测量仪器 - 能量(焦耳)与功率(瓦)的图示比较
  • 此芯p1开发板使用OpenHarmony时llama.cpp不同优化速度对比(GPU vs CPU)
  • JavaWeb03——基础标签及样式(表单)(黑马视频笔记)
  • 【运维进阶】NFS 服务器
  • 智慧园区系统:打造未来城市生活新体验
  • 第一性原理科学计算服务器如何选择配置-内存选择篇
  • 软考中级【网络工程师】第6版教材 第2章 数据通信基础(下)
  • Windows下Rust编码实现MP4点播服务器
  • 【算法训练营Day22】回溯算法part4
  • Pytest项目_day07(pytest)
  • npm 与 npx 区别详解。以及mcp中npx加载原理。
  • 《深入理解Java字符串:从基础到高级特性》
  • 贪心+矩阵算法
  • 与页面共舞 —— Content Scripts 的魔法
  • 面向对象之类、继承和多态
  • leafletMap封装使用
  • 动手学深度学习13.11. 全卷积网络 -笔记练习(PyTorch)
  • Linux 中断系统全览解析:从硬件到软件的全路线理解
  • 外部排序总结(考研向)
  • MongoDB数据存储界的瑞士军刀:cpolar内网穿透实验室第513号挑战
  • 数据结构:双向链表(Doubly Linked List)
  • 生成对抗网络(GAN)实战 - 创建逼真人脸图像
  • 电路相量法
  • (易视宝)易视TV is-E4-G-全志A20芯片-安卓4-烧写卡刷工具及教程