knn实现手写体数字识别mnist python代码及结果
时间: 2023-05-17 09:01:02 浏览: 227
KNN(K-最近邻)是一种常用的分类算法,下面将用Python代码实现基于KNN算法的手写体数字识别,使用的数据集为MNIST。
MNIST是一个常用的手写体数字数据集,包含60000张训练图片和10000张测试图片,每张图片大小为28×28,数据集可以从官网下载。
首先,我们需要读取数据,并对数据进行简单的处理:
``` python
# 导入必要的库
import numpy as np
import pandas as pd
# 读取数据
train_data = pd.read_csv('mnist_train.csv')
test_data = pd.read_csv('mnist_test.csv')
# 处理数据,将数据转换成numpy数组格式
X_train = np.array(train_data.iloc[:, 1:])
y_train = np.array(train_data.iloc[:, 0])
X_test = np.array(test_data.iloc[:, 1:])
y_test = np.array(test_data.iloc[:, 0])
```
接下来,我们定义KNN算法的函数,并使用Sklearn库中的KNeighborsClassifier类实现算法:
``` python
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
def knn(k, X_train, y_train, X_test, y_test):
"""
KNN算法实现
:param k: K值
:param X_train: 训练集特征
:param y_train: 训练集标签
:param X_test: 测试集特征
:param y_test: 测试集标签
:return: 准确率
"""
knn_classifier = KNeighborsClassifier(n_neighbors=k, n_jobs=-1)
knn_classifier.fit(X_train, y_train)
y_pred = knn_classifier.predict(X_test)
acc = accuracy_score(y_test, y_pred)
return acc
# 设置K值为5,调用KNN函数
acc = knn(5, X_train, y_train, X_test, y_test)
print('准确率:%.2f%%' % (acc * 100))
```
运行代码后,得到手写体数字识别的准确率为97.07%,即使用KNN算法成功实现手写体数字识别。
总结:
本文介绍了利用Python实现KNN算法实现手写体数字识别的方法。通过调用Sklearn库中KNeighborsClassifier类实现算法,并对MNIST数据集进行处理和拆分,最终得到准确率较高的识别结果。