利用PCA+KNN在MNIST数据集上达到97%准确率

  • Post author:
  • Post category:其他




写在前面

  1. 本文的工作基于python,利用主成分分析(PCA)和K近邻算法(KNN)在MNIST手写数据集上进行了分类。
  2. 由于skeleton库中的PCA写的很好(好吧,其实是作者很懒),本文的主成分分析(PCA)部分调用了skeleton库中的函数,所以来看PCA具体实现细节的小伙伴可能要失望了。
  3. 经过PCA降维,最终的KNN在100维的特征空间实现了超过97%的分类精度。
  4. 相信看到这篇博客的读者对于PCA和KNN的原理都比较了解了,很多大佬们也讲了很多,所以PCA和KNN的具体原理就不再啰嗦,话不多说,直接上代码。



算法实现



1、引用必要的库文件

import numpy as np
import struct
from sklearn.decomposition import PCA
from keras.datasets import mnist

为了方便,这里我们使用的MNIST数据集来自keras内置的keras.datasets,当然也可以去Yann Lecun的

官网

下载,只需要在之后的代码中稍加改动。



2、读入数据

我们从keras内置的数据集中读取MNIST数据集,从下面一段代码的运行结果可以看出,我们导入的MNIST数据集共有60000个训练图片和10000个测试图片,每张图片均为28*28的大小。

(train_data_ori, train_label), (test_data_ori, test_label) = mnist.load_data()
print ("mnist data loaded")
print ("original training data shape:",train_data_ori.shape)
print ("original testing data shape:",test_data_ori.shape)

附上这段代码的运行结果:

mnist data loaded

original training data shape: (60000, 28, 28)

original testing data shape: (10000, 28, 28)

显然,这里我们得到的图片是28*28



版权声明:本文为evilfromshadow原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。