Maorongrong smile like sunshine

MNIST数据集及其读取

2016-04-14

对Matlab语言好陌生。。(还是研一的作业)

matlab的矩阵的列是第一维

参考链接,MNIST在matlab可识别格式

参照原作者学习,非原作者同意不可转载,关于MNIST数据格式和matlab读取问题

1.由于MNIST数据库的图片全部放在一个文件中,需要写一段程序来读取,网上有人已经转为matlab可以读取的.mat格式,如下:

Handwritten Digits MNIST Handwritten Digits [data/mnist_all.mat]

2.来看看下载并且解压后的样子

在matlab中open之后,查看工作区

1.png-17.7kB

选中test0,看看测试集中的0,可以看到我们把数据集放在\bin下

2.png-74.4kB

3.png-50.6kB

原MNIST数据库有6w训练集,1w测试集,在mnist_all.mat中8-bit grayscale images of “0” through “9”; about 6K training examples of each class; 1K test examples。观察0-9共10个数字有6w训练集,因此大致每个数字有6k训练集,1k测试集。 test0<980x784 uint8>中980即数字0训练集个数,784即为28*28的pixel像素。 第3张图,横轴为784个像素点的灰度值,0为空;纵轴分别代表980个测试集的0。

降维操作

使用PCA处理MNIST数据集

假设要将n维空间中的数据降低到m维(m < n)。首先在n维空间中找一个点作为m维空间的坐标原点O,然后找到m个n维的向量,这些向量的原点是O。将n维的数据对应的点投影到这m个向量上,可以将n维数据降低到m维。 设一个n维数据点X(i),将其投影到m维空间后的点在n维空间的位置记为Y(i)。如果有k个n维的数据,PCA的目标是最小化下面的式子: ∑ki=1(X(i)−Y(i))2 在一系列的计算后,扯到了协方差矩阵的特征值和特征向量上。 这就是PCA。 补充:上面的式子叫做投影误差。PCA是将投影误差最小化。其实PCA也在最大化一个方差。这个方差是原始数据集在新的低维度空间对应的所有的数据点之间的方差。

主要参考此链接 关于pca信息使用:特征降维-PCA(Principal Component Analysis)

论文撰写

MNIST 手写数字识别 matlab


Comments