这是我学习hands on ml with sklearn and tf 这本书做的笔记,这是第三章
MNIST
在本章当中,我们将会使用 MNIST 这个数据集,它有着 70000 张规格较小的手写数字图片,由美国的高中生和美国人口调查局的职员手写而成。这相当于机器学习当中的“Hello World”,人们无论什么时候提出一个新的分类算法,都想知道该算法在这个数据集上的表现如何。机器学习的初学者迟早也会处理 MNIST 这个数据集。
1、下载数据集
Scikit-Learn 提供了许多辅助函数,以便于下载流行的数据集。MNIST 是其中一个。下面的代码获取 MNIST
from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original')
print(mnist)
运行结果如下:
{
'DESCR': 'mldata.org dataset: mnist-original', 'COL_NAMES': ['label', 'data'], 'target': array([0., 0., 0., ..., 9., 9., 9.]), 'data': array([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}
一般而言,由 sklearn 加载的数据集有着相似的字典结构,这包括:
DESCR 键描述数据集
data 键存放一个数组,数组的一行表示一个样例,一列表示一个特征
target 键存放一个标签数组
接下来,认真看看这些数组:
x, y = mnist['data'], mnist['target']
print('x的大小为;', x.shape, '\n','x的大小为;', y)
运行结果:
x的大小为; (70000, 784)
y的大小为; (70000,)
MNIST 有 70000 张图片,每张图片有 784 个特征。这是因为每个图片都是 28*28 像素的,并且每个像素的值介于 0~255 之间。让我们看一看数据集的某一个数字。你只需要将某个实例的特征向量, reshape 为 28*28 的数组,然后使用 Matplotlib 的 imshow 函数展示出来。
import matplotlib
import matplotlib.pyplot as plt
some_digit = X[36000]
some_digit_image = some_digit.reshape(28, 28)
plt.imshow(some_digit_image, cmap=matplotlib.cm.binary, interpolation="nearest")
plt.axis("off")
plt.show()
运行结果如下:
![53120515523](机器学习的‘hello world–手写数字识别MNIST.assets/1531205155236.png)
这看起来像