Поскольку fetch_mldata устарела, нам нужно перейти к fetch_openml. Обязательно обновите ваш scikit-learn до версии 0.20.0 или выше, чтобы получить openml
work.
- openml в настоящее время имеет 5 различных наборов данных, связанных с набором данных MNIST.
Вот один пример из документа sklearn с использованием набора данных mnist-784.
from sklearn.datasets import fetch_openml
# Load data from https://www.openml.org/d/554
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
- Или, если вам не нужен очень большой набор данных, вы можете использовать
load_digits
:
from sklearn.datasets import load_digits
mnist = load_digits()
Обратите внимание, что если вы следуете книге Практическое машинное обучение с Scikit-Learn и TensorFlow , с набором данных mnist-784 , вы можете заметить, что код
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()
возвращает изображение 9 вместо 5. Я думаю, это может быть либо то, что mnist-784 и оригинал mnist являются двумя подмножествами данных nist, либо порядок данных между двумя наборами данных отличается.
PS: я столкнулся с некоторой ошибкой в ssl, когда пытался загрузить данные, в моем случае я обновляю openssl, и проблема была решена.