机器学习之KNN实现手写数字

用KNN实现手写数字预测

大家好我是木木,只从2022年11月30日发布ChatGPT后,大模型迅速火热起来,人工智能作为当下最火的行业之一,很多人对它充满了好奇,接下来做个好玩的东西,使用KNN实现预测手写数字并将预测结果和实际图像画出来。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsRegressor
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split


# 加载手写数字数据集
X, y  = load_digits(return_X_y=True)


# 切分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)

# 建模并训练
knn = KNeighborsRegressor().fit(X_train, y_train)


# 预测并评估模型性能
y_pred = knn.predict(X_test)
accuracy = np.mean(y_pred == y_test)
print(f"Accuracy: {accuracy}")


images_and_predictions = list(zip(X_test[:50], y_pred[:50]))

plt.figure(figsize=(10, 5), dpi=100)

for index, (image, prediction) in enumerate(images_and_predictions):

    plt.subplot(5, 10, index + 1)

    plt.axis("off")

    plt.imshow(image.reshape(8, 8), cmap=plt.cm.gray_r, interpolation="nearest")

    plt.title(f"Prediction: {prediction}", fontsize=6)
plt.tight_layout()  # 自动调整子图布局,避免重叠
plt.show()

效果展示:

如图:蓝色框是预测准确率,红色框是预测的结果,绿色框是实际值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

mumu-hn

点击打赏,感谢一路同行❤️

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

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

打赏作者

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

抵扣说明:

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

余额充值