利用PCA+KNN在MNIST数据集上达到97%准确率
写在前面
- 本文的工作基于python,利用主成分分析(PCA)和K近邻算法(KNN)在MNIST手写数据集上进行了分类。
- 由于skeleton库中的PCA写的很好(好吧,其实是作者很懒),本文的主成分分析(PCA)部分调用了skeleton库中的函数,所以来看PCA具体实现细节的小伙伴可能要失望了。
- 经过PCA降维,最终的KNN在100维的特征空间实现了超过97%的分类精度。
- 相信看到这篇博客的读者对于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 版权协议,转载请附上原文出处链接和本声明。