1) 目标
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个,维度为28000784。
其他数据处理:归一化。
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应该很难达到更高了。