上篇文章介绍了KNN 算法的原理,今天来介绍如何使用KNN 算法识别手写数字?
1,手写数字数据集
手写数字数据集是一个用于图像处理的数据集,这些数据描绘了 [0, 9] 的数字,我们可以用KNN 算法来识别这些数字。
MNIST 是完整的手写数字数据集,其中包含了60000 个训练样本和10000 个测试样本。
[MNIST](http://yann.lecun.com/exdb/mnist/)
sklearn 中也有一个自带的手写数字数据集:
共包含 1797 个数据样本,每个样本描绘了一个 8*8 像素的 [0, 9] 的数字。
每个样本由 65 个数字组成:
前 64 个数字是特征数据,特征数据的范围是 [0, 16]
最后一个数字是目标数据,目标数据的范围是 [0, 9]
[手写数字数据集]
(https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/datasets/data/digits.csv.gz)
我们抽出 5 个样本来看下:
0,0,5,13,9,1,0,0,0,0,13,15,10,15,5,0,0,3,15,2,0,11,8,0,0,4,12,0,0,8,8,0,0,5,8,0,0,9,8,0,0,4,11,0,1,12,7,0,0,2,14,5,10,12,0,0,0,0,6,13,10,0,0,0,00,0,0,12,13,5,0,0,0,0,0,11,16,9,0,0,0,0,3,15,16,6,0,0,0,7,15,16,16,2,0,0,0,0,1,16,16,3,0,0,0,0,1,16,16,6,0,0,0,0,1,16,16,6,0,0,0,0,0,11,16,10,0,0,10,0,0,4,15,12,0,0,0,0,3,16,15,14,0,0,0,0,8,13,8,16,0,0,0,0,1,6,15,11,0,0,0,1,8,13,15,1,0,0,0,9,16,16,5,0,0,0,0,3,13,16,16,11,5,0,