Набор данных MNIST в Python - базовый импорт и построение
Добро пожаловать в этот учебник по набору данных MNIST. В этом руководстве мы узнаем, что такое набор данных MNIST, как импортировать его в Python и как построить его с помощью matplotlib.
Что такое набор данных MNIST?
Набор MNIST - это большая коллекция рукописных цифр. Это очень популярный набор данных в области обработки изображений. Он часто используется для тестирования алгоритмов машинного обучения.
MNIST - это сокращение от модифицированной базы данных Национального института стандартов и технологий.
MNIST содержит коллекцию из 70 000 изображений 28 x 28 рукописных цифр от 0 до 9.
Набор данных уже разделен на наборы для обучения и тестирования. Мы увидим это позже в руководстве.
Дополнительные сведения о MNIST на его странице в Википедии. Мы собираемся импортировать набор данных из Keras.
Начнем с загрузки набора данных в наш блокнот на Python.
Загрузка MNIST из Keras
Сначала нам нужно импортировать набор данных MNIST из модуля Keras.
Мы можем сделать это, используя следующую строку кода:
from keras.datasets import mnist
Теперь загрузим обучающий и тестовый наборы в отдельные переменные.
(train_X, train_y), (test_X, test_y) = mnist.load_data()
Давайте узнаем, сколько изображений есть в обучающем и тестовом наборах. Другими словами, давайте попробуем выяснить коэффициент разделения этого набора данных.
Чтобы найти коэффициент разделения, мы собираемся распечатать формы всех векторов.
print('X_train: ' + str(train_X.shape))
print('Y_train: ' + str(train_y.shape))
print('X_test: ' + str(test_X.shape))
print('Y_test: ' + str(test_y.shape))
Результат:
X_train: (60000, 28, 28)
Y_train: (60000,)
X_test: (10000, 28, 28)
Y_test: (10000,)
Мы видим, что в обучающей выборке 60 тысяч изображений, а в тестовой - 10 тысяч.
Размерность нашего обучающего вектора составляет (60000, 28, 28), это потому, что имеется 60 000 изображений в градациях серого с размером 28X28.
Полный код для загрузки набора данных MNIST
Вот полный код из этого раздела:
from keras.datasets import mnist
#loading the dataset
(train_X, train_y), (test_X, test_y) = mnist.load_data()
#printing the shapes of the vectors
print('X_train: ' + str(train_X.shape))
print('Y_train: ' + str(train_y.shape))
print('X_test: ' + str(test_X.shape))
print('Y_test: ' + str(test_y.shape))
Давайте узнаем, как построить этот набор данных.
Построение набора данных MNIST с использованием matplotlib
Всегда полезно построить график набора данных, над которым вы работаете. Это даст вам хорошее представление о том, с какими данными вы имеете дело.
Как ответственный специалист по данным, вы должны всегда строить набор данных как нулевой шаг.
Чтобы построить набор данных, используйте следующий фрагмент кода:
from matplotlib import pyplot
for i in range(9):
pyplot.subplot(330 + 1 + i)
pyplot.imshow(train_X[i], cmap=pyplot.get_cmap('gray'))
pyplot.show()
Результат:
Вот как выглядят наши данные!
Представьте себе 70 000 изображений, подобных этим. Это то, что находится внутри набора данных. Большой объем - одна из причин популярности набора данных.
Проблема распознавания почерка, сколь бы банальной она ни была, сейчас устарела. Возникла потребность в более сложной версии набора данных MNSIT, которая могла бы служить его заменой.
Есть ли более сложная версия набора данных MNIST?
Да, есть. Набор данных Fashion MNIST.