Загрузка данных MNIST из наборов данных sklearn дает ошибку тайм-аута - PullRequest
0 голосов
/ 01 ноября 2018

Я новичок в ML и пытаюсь загрузить данные MNIST. Код, который я использую:

from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original')

Но выдает ошибку, говорящую:

TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Может кто-нибудь помочь мне, что нужно сделать, чтобы исправить эту проблему?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Хотя я не уверен в причине, по которой вы получаете ошибку, вы можете попробовать ниже возможные способы исправить это.

  1. Иногда данные могут быть повреждены во время первой загрузки. И в этом случае, вам нужно очистить кеш, который вы можете удалить из домашнего каталога Scikit data dir . Чтобы получить этот каталог, вы можете использовать -

    from sklearn.datasets.base import get_data_home 
    print (get_data_home())
    

Теперь очистите каталог и загрузите заново.

  1. И если проблема не устранена, вы можете обратиться по следующим ссылкам, чтобы выполнить пробную ошибку, чтобы проверить вашу проблему.

https://github.com/ageron/handson-ml/issues/143

https://github.com/scikit-learn/scikit-learn/issues/8588

https://github.com/ageron/handson-ml/issues/8

И если вы по-прежнему сталкиваетесь с проблемой, я хотел бы попросить вас предоставить подробную информацию о трассировке, чтобы помочь мне определить проблему.

Спасибо !!

0 голосов
/ 03 февраля 2019

Поскольку fetch_mldata устарела, нам нужно перейти к fetch_openml. Обязательно обновите ваш scikit-learn до версии 0.20.0 или выше, чтобы получить openml work.

  1. 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)
  1. Или, если вам не нужен очень большой набор данных, вы можете использовать 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, и проблема была решена.

0 голосов
/ 01 ноября 2018

вот в чем проблема, и некоторые обходные пути предложили хорошие люди:

https://github.com/scikit-learn/scikit-learn/issues/8588

проще всего было загрузить .mat файл MNIST по этой ссылке:

скачать MNIST.mat

после загрузки поместите файл в папку ~ / scikit_learn_data / mldata, если эта папка не существует, создайте ее и поместите в нее Mnist.mat. когда они у вас есть, Scikit Learn не загружает их и использует этот файл.

...