Scikit-learn — Не удается загрузить исходный набор данных MNIST с помощью fetch_openml в Python

Я пытаюсь загрузить исходный набор данных MNIST в Python. Функция sklearn.datasets.fetch_openml, похоже, не работает для этого.

Вот код, который я использую-

from sklearn.datasets import fetch_openml
dataset = fetch_openml("MNIST Original") 

Я получаю эту ошибку-

File "generateClassifier.py", line 11, in <module>
  dataset = fetch_openml("MNIST Original")
  File "/home/inglorion/.local/lib/python3.5/site- 
packages/sklearn/datasets/openml.py", line 526, in fetch_openml
data_info = _get_data_info_by_name(name, version, data_home)
  File "/home/inglorion/.local/lib/python3.5/site- 
packages/sklearn/datasets/openml.py", line 302, in 
_get_data_info_by_name
    data_home)
  File "/home/inglorion/.local/lib/python3.5/site- 
packages/sklearn/datasets/openml.py", line 169, in 
_get_json_content_from_openml_api
    raise error
  File "/home/inglorion/.local/lib/python3.5/site- 
packages/sklearn/datasets/openml.py", line 164, in 
_get_json_content_from_openml_api
    return _load_json()
  File "/home/inglorion/.local/lib/python3.5/site- 
packages/sklearn/datasets/openml.py", line 52, in wrapper
    return f()
  File "/home/inglorion/.local/lib/python3.5/site- 
packages/sklearn/datasets/openml.py", line 160, in _load_json
    with closing(_open_openml_url(url, data_home)) as response:
  File "/home/inglorion/.local/lib/python3.5/site- 
packages/sklearn/datasets/openml.py", line 109, in _open_openml_url
with closing(urlopen(req)) as fsrc:
  File "/usr/lib/python3.5/urllib/request.py", line 163, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.5/urllib/request.py", line 472, in open
    response = meth(req, response)
  File "/usr/lib/python3.5/urllib/request.py", line 582, in 
http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.5/urllib/request.py", line 510, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.5/urllib/request.py", line 444, in 
_call_chain
    result = func(*args)
  File "/usr/lib/python3.5/urllib/request.py", line 590, in 
http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
        urllib.error.HTTPError: HTTP Error 400: Bad Request

Как я могу это исправить? С другой стороны, есть ли другой способ загрузить набор данных MNIST в Python?

Я использую версию 0.20.2 scikit-learn.

Я относительно новичок в программировании в целом, поэтому был бы признателен, если бы я мог получить простой ответ. Спасибо!


person Inglorion    schedule 25.01.2019    source источник
comment
Попробуйте fetch_mldata('MNIST original')   -  person charley    schedule 25.01.2019
comment
Это тоже не сработало для меня; Я думаю, что fetch_mldata в любом случае скоро устареет.   -  person Inglorion    schedule 25.01.2019
comment
Ты прав. Попробуйте «оригинал MNIST», а не «оригинал MNIST».   -  person charley    schedule 25.01.2019
comment
Я сделал, и получил ту же ошибку.   -  person Inglorion    schedule 25.01.2019
comment
ознакомьтесь с ответами в этой теме .com/questions/47324921/   -  person DrBwts    schedule 25.01.2019
comment
@DrBrwts: Да, похоже, это проблема, не связанная с тем, с чем я столкнулся, так как я получил совершенно другую ошибку...   -  person Inglorion    schedule 25.01.2019
comment
from sklearn import datasets data = datasets.load_digits() Надеюсь, вам достаточно исходных данных MNIST   -  person charley    schedule 25.01.2019


Ответы (5)


Пытаться

mnist = fetch_openml('mnist_784')

Я нашел его через https://www.openml.org/ под https://www.openml.org/d/554

person bav av    schedule 05.03.2019

ты можешь использовать:

mist = fetch_openml('mnist_784', version=1)
person bforblack    schedule 22.03.2020

fetch_mldata устарела, начиная с scikit-learn v0.20

Тестовая версия sklearn

import sklearn
sklearn.__version__

Импорт набора данных

from sklearn.datasets import fetch_openml
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)

Пример

person Cédric Dromzée    schedule 28.02.2020

Я также столкнулся с подобной проблемой. Обновление версии sklearn у меня сработало

Я только что выполнил следующую команду

conda update scikit-learn

Затем, чтобы проверить версию, вы можете сделать что-то вроде этого

import nltk
import sklearn

print('nltk version: {}.'.format(nltk.__version__))
print('scikit-learn version: {}.'.format(sklearn.__version__))

Не забудьте перезапустить ядро ​​после обновления версии sklearn.

person Sarwan Pasha    schedule 05.04.2021

Метод fetch_openml() загружает набор данных с сайта mldata.org, который нестабилен и не может подключиться. Альтернативный способ — вручную загрузить набор данных из исходных данных. Вы можете скачать данные с Kaggle(данные mnist) и запустить следующий код.

from scipy.io import loadmat
mnist = loadmat("../input/mnist-original.loadmat")
mnist_data = mnist["data"].T
mnist_label = mnist["label"][0]
person daz    schedule 23.05.2021