实例教程:使用Flatten()函数对MNIST手写数字数据集进行预处理
MNIST是一个经典的机器学习数据集,由手写数字的灰度图像组成。每张图像都是28x28像素,代表了0到9之间的一个数字。在进行机器学习任务之前,通常需要对数据进行预处理,以便更好地适应模型的需求。在本教程中,我们将使用Flatten()函数对MNIST手写数字数据集进行预处理。
首先,我们需要导入所需的库。我们将使用Keras库来加载MNIST数据集和进行数据预处理。
import numpy as np from keras.datasets import mnist from keras.utils import to_categorical
接下来,我们将加载MNIST数据集并进行预处理:
(x_train, y_train), (x_test, y_test) = mnist.load_data()
MNIST数据集包含60000张训练图像和10000张测试图像。训练图像的输入数据x_train的形状为(60000, 28, 28),训练图像的标签数据y_train的形状为(60000, )。同样,测试图像的输入数据x_test的形状为(10000, 28, 28),测试图像的标签数据y_test的形状为(10000, )。
接下来,我们将对输入数据进行预处理。我们需要将图像从二维数组(28, 28)转换为一维数组(784, ),以便更好地适应模型的需求。我们可以使用Flatten()函数来实现这一转换:
x_train = x_train.reshape((60000, 28 * 28)) x_test = x_test.reshape((10000, 28 * 28))
在上述代码中,我们使用reshape()函数来改变图像的形状。对于训练图像,我们将其形状从(60000, 28, 28)改变为(60000, 784),对于测试图像,我们将其形状从(10000, 28, 28)改变为(10000, 784)。
最后,我们将对标签数据进行预处理。由于标签是0到9之间的数字,我们可以将其转换为对应的one-hot编码。我们可以使用to_categorical()函数来实现这一转换:
y_train = to_categorical(y_train) y_test = to_categorical(y_test)
在上述代码中,我们使用to_categorical()函数将标签数据从整数转换为对应的one-hot编码。对于训练标签,我们将其形状从(60000, )改变为(60000, 10),对于测试标签,我们将其形状从(10000, )改变为(10000, 10)。
最终,我们可以使用预处理后的数据进行机器学习任务。
这是一个完整的使用Flatten()函数对MNIST手写数字数据集进行预处理的示例。通过使用Flatten()函数,我们将图像数据从二维数组转换为一维数组,以便更好地适应模型的需求。同时,我们还对标签数据做了one-hot编码的处理,以便更好地适应分类任务。预处理后的数据可以用于各种机器学习模型的训练和评估。
