KNN手写数字图像识别

import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import keras
plt.rcParams['font.sans-serif']=['SimHei']    # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False    # 用来正常显示负号

# 载入 MNIST 数据集
(train_images, train_labels), (test_images, test_labels) = keras.datasets.mnist.load_data()


# 将图像数据展开成一维向量
train_images_flat = train_images.reshape(train_images.shape[0], -1)
test_images_flat = test_images.reshape(test_images.shape[0], -1)

# 初始化 KNN 分类器
knn_classifier = KNeighborsClassifier(n_neighbors=5)

# 训练 KNN 模型
knn_classifier.fit(train_images_flat, train_labels)

# 在测试集上进行预测
predicted_labels = knn_classifier.predict(test_images_flat)

# 计算准确率
accuracy = accuracy_score(test_labels, predicted_labels)
print('测试集准确率:', accuracy)

# 随机选择一张测试图像进行展示和预测
index = np.random.randint(0, test_images.shape[0])
sample_image = test_images[index]
sample_label = test_labels[index]

# 展示图像
plt.title(f'真实标签: {sample_label}, 预测标签: {predicted_labels[index]}')
plt.imshow(sample_image, cmap=plt.cm.gray_r, interpolation='nearest')
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程初学者01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值