svm 手写数字识别 MNIST数据集

使用SVM和支持向量机在OpenCV环境下实现手写数字0到9的识别,通过六万张训练图片生成SVM XML文件,用训练结果测试一万张图片,正确识别率达到98.33%,错误率仅为1.67%。
### 使用SVM实现MNIST手写数字识别 支持向量机(Support Vector Machine, SVM)是一种经典的监督学习算法,在分类任务中表现优异。对于MNIST手写数字识别问题,可以使用SVM模型完成分类任务。 #### 数据预处理 在应用SVM之前,需要对MNIST数据集进行必要的预处理操作。具体来说,由于SVM通常适用于低维特征空间的数据,而MNIST图像的原始维度较高(28×28=784),因此可以通过降维或其他方法优化输入数据[^1]。 以下是完整的代码示例: ```python from sklearn import svm import numpy as np from tensorflow.keras.datasets import mnist from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import accuracy_score # 加载MNIST数据集 (train_images, train_labels), (test_images, test_labels) = mnist.load_data() # 将二维数组展平为一维 train_images = train_images.reshape((60000, 28 * 28)) test_images = test_images.reshape((10000, 28 * 28)) # 归一化像素值到[0, 1] train_images = train_images.astype('float32') / 255 test_images = test_images.astype('float32') / 255 # 划分训练集和验证集 X_train, X_val, y_train, y_val = train_test_split( train_images, train_labels, test_size=0.2, random_state=42) # 特征标准化 scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_val_scaled = scaler.transform(X_val) X_test_scaled = scaler.transform(test_images) # 初始化SVM模型 clf = svm.SVC(kernel='linear', C=1.0, decision_function_shape='ovr') # 训练模型 clf.fit(X_train_scaled[:1000], y_train[:1000]) # 减少样本数量以加快计算速度 # 验证模型性能 val_predictions = clf.predict(X_val_scaled) accuracy = accuracy_score(y_val, val_predictions) print(f"Validation Accuracy: {accuracy:.4f}") # 测试模型性能 test_predictions = clf.predict(X_test_scaled) test_accuracy = accuracy_score(test_labels, test_predictions) print(f"Test Accuracy: {test_accuracy:.4f}") ``` #### 关键点解析 1. **数据加载与预处理**: MNIST数据通过`tensorflow.keras.datasets.mnist.load_data()`函数加载,并将其转换为适合SVM使用的形状。为了提高效率并减少内存占用,将像素值归一化至范围 `[0, 1]` 并进行了标准化处理[^2]。 2. **模型初始化**: `svm.SVC` 是Scikit-Learn库中的SVM实现。参数设置如下: - `kernel='linear'`: 表明使用线性核函数。 - `C=1.0`: 控制正则化的强度。 - `decision_function_shape='ovr'`: 多类分类策略设为“一对其余”。 3. **训练过程**: 考虑到全量数据可能耗时较长,仅选取部分样本来加速实验进程。实际部署时可以根据硬件资源调整训练规模。 4. **评估指标**: 使用准确率 (`accuracy`) 来衡量模型的表现效果。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值