kaggle——Digit Recognizer MNIST手写数字识别(KNN版)

本文介绍了一次手写数字识别比赛的经历,通过KNN算法在MNIST数据集上实现了97%的准确率,并提供了详细的代码实现过程。此外还探讨了神经网络的应用前景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1) 目标

任务网址:kaggle_Digit Recognizer

MNIST(“国家标准技术研究院”)是计算机视觉的事实上的“ hello world”数据集。自从1999年发布以来,这个经典的手写图像数据集已成为基准分类算法的基础。随着新的机器学习技术的出现,MNIST仍然是研究人员和学习者的可靠资源。

在这场比赛中,您的目标是从数万个手写图像的数据集中正确地识别数字。我们策划了一系列教程风格的内核,涵盖了从回归到神经网络的所有内容。我们鼓励您尝试不同的算法,以第一手学习什么有效,以及如何比较技术。

2)流程思路

本次思路首先采用KNN实现,使用sklearn。
之后建立神经网络模型,主要参考LE-NET5模型,使用Pytorch。

3)数据处理

head()头文件:
在这里插入图片描述
总共有784组feature,label为y值,表示的该手写数字是几;
其余都是乘客feature,包括:
28*28=784个灰度像素,值代表亮度。

info()信息:
在这里插入图片描述
观察可以发现,train数据共42000个,维度为42000784;
test数据共28000个,维度为28000
784。
其他数据处理:归一化。

3)代码

import numpy as np
import pandas as pd
import matplotlib as plt
from sklearn.neighbors import KNeighborsClassifier

#读取数据
data_train = pd.read_csv(r'D:\python\kaggle\识别数字\digit-recognizer\train.csv',engine = 'python',encoding='UTF-8')
data_test = pd.read_csv(r'D:\python\kaggle\识别数字\digit-recognizer\test.csv',engine = 'python',encoding='UTF-8')
data_sample = pd.read_csv(r'D:\python\kaggle\识别数字\digit-recognizer\sample_submission.csv',engine = 'python',encoding='UTF-8')
print(data_sample.info())

#分割数据
train_np=data_train.values
y=train_np[:,0]
x=train_np[:,1:]

#KNN
knn = KNeighborsClassifier(n_neighbors = 1)
knn.fit(x, y)

#预测
test_np=data_test.values
ans = knn.predict(test_np)

#输出
id=data_sample.ImageId
result = pd.DataFrame({'ImageId':id, 'Label':ans.astype(np.int32)})
result.to_csv(r"D:\python\kaggle\识别数字\digit-recognizer\ans.csv", index=False)

4)运行结果

在这里插入图片描述
最后准确率为0.97,算法局限性在这,估计KNN应该很难达到更高了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值