Scikit-learn MNIST手写数字识别:使用SVM实现高准确率分类
使用Scikit-learn和SVM构建MNIST手写数字识别模型
本教程将演示如何使用Python中的Scikit-learn库和支持向量机(SVM)算法构建一个MNIST手写数字识别模型。
1. 准备工作
首先,确保你已经安装了以下Python库:
- scikit-learn- matplotlib (可选,用于可视化)
你可以使用pip安装它们:bashpip install scikit-learn matplotlib
2. 加载MNIST数据集
Scikit-learn提供了方便的函数来加载MNIST数据集:pythonfrom sklearn.datasets import fetch_openmlfrom sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCfrom sklearn.metrics import accuracy_score
加载MNIST数据集mnist = fetch_openml('mnist_784', version=1, cache=True)X = mnist.datay = mnist.target
将像素值缩放到0-1范围X = X / 255.0
划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
这段代码将:
- 从OpenML库加载MNIST数据集。- 将特征数据存储在
X中,将标签数据存储在y中。- 将像素值缩放到0到1的范围,以便更好地进行模型训练。- 将数据集划分为训练集和测试集,其中测试集占总数据的20%。
3. 创建和训练SVM模型
接下来,我们将创建一个SVM分类器并使用训练数据对其进行训练:python# 创建SVM分类器并进行训练svm = SVC()svm.fit(X_train, y_train)
这里我们使用默认参数创建了一个SVM分类器。你可以根据需要调整这些参数以优化模型性能。
4. 评估模型
现在我们可以使用测试集评估训练好的模型:python# 在训练集上进行预测y_pred_train = svm.predict(X_train)
在测试集上进行预测y_pred_test = svm.predict(X_test)
计算训练集和测试集的准确率accuracy_train = accuracy_score(y_train, y_pred_train)accuracy_test = accuracy_score(y_test, y_pred_test)
print('训练集准确率:', accuracy_train)print('测试集准确率:', accuracy_test)
这段代码将:
- 使用训练好的模型对训练集和测试集进行预测。- 使用
accuracy_score函数计算模型在两个数据集上的准确率。
5. 总结
通过以上步骤,我们成功地使用Scikit-learn和SVM算法构建了一个MNIST手写数字识别模型。你可以尝试调整SVM分类器的参数或使用不同的数据预处理技术来进一步提高模型的性能。
原文地址: http://www.cveoy.top/t/topic/bAXn 著作权归作者所有。请勿转载和采集!