sklearn scikit make learn iris datasets create python numpy machine-learning

python - scikit - ¿Cómo usar datasets.fetch_mldata() en sklearn?



sklearn import mnist (7)

Eso es ''MNIST original''. Con una minúscula en "o".

Estoy intentando ejecutar el siguiente código para un breve algoritmo de aprendizaje automático:

import re import argparse import csv from collections import Counter from sklearn import datasets import sklearn from sklearn.datasets import fetch_mldata dataDict = datasets.fetch_mldata(''MNIST Original'')

En este fragmento de código, estoy tratando de leer el conjunto de datos ''MNIST Original'' presente en mldata.org a través de sklearn. Esto da como resultado el siguiente error (hay más líneas de código pero obtengo un error en esta línea en particular):

Traceback (most recent call last): File "C:/Program Files (x86)/JetBrains/PyCharm 2.7.3/helpers/pydev/pydevd.py", line 1481, in <module> debugger.run(setup[''file''], None, None) File "C:/Program Files (x86)/JetBrains/PyCharm 2.7.3/helpers/pydev/pydevd.py", line 1124, in run pydev_imports.execfile(file, globals, locals) #execute the script File "C:/Users/sony/PycharmProjects/Machine_Learning_Homework1/zeroR.py", line 131, in <module> dataDict = datasets.fetch_mldata(''MNIST Original'') File "C:/Anaconda/lib/site-packages/sklearn/datasets/mldata.py", line 157, in fetch_mldata matlab_dict = io.loadmat(matlab_file, struct_as_record=True) File "C:/Anaconda/lib/site-packages/scipy/io/matlab/mio.py", line 176, in loadmat matfile_dict = MR.get_variables(variable_names) File "C:/Anaconda/lib/site-packages/scipy/io/matlab/mio5.py", line 294, in get_variables res = self.read_var_array(hdr, process) File "C:/Anaconda/lib/site-packages/scipy/io/matlab/mio5.py", line 257, in read_var_array return self._matrix_reader.array_from_header(header, process) File "mio5_utils.pyx", line 624, in scipy.io.matlab.mio5_utils.VarReader5.array_from_header (scipy/io/matlab/mio5_utils.c:5717) File "mio5_utils.pyx", line 653, in scipy.io.matlab.mio5_utils.VarReader5.array_from_header (scipy/io/matlab/mio5_utils.c:5147) File "mio5_utils.pyx", line 721, in scipy.io.matlab.mio5_utils.VarReader5.read_real_complex (scipy/io/matlab/mio5_utils.c:6134) File "mio5_utils.pyx", line 424, in scipy.io.matlab.mio5_utils.VarReader5.read_numeric (scipy/io/matlab/mio5_utils.c:3704) File "mio5_utils.pyx", line 360, in scipy.io.matlab.mio5_utils.VarReader5.read_element (scipy/io/matlab/mio5_utils.c:3429) File "streams.pyx", line 181, in scipy.io.matlab.streams.FileStream.read_string (scipy/io/matlab/streams.c:2711) IOError: could not read bytes

He intentado investigar en Internet, pero apenas hay ayuda disponible. Cualquier ayuda experta relacionada con la solución de este error será muy apreciada.

TIA.


Pruébalo así:

dataDict = fetch_mldata(''MNIST original'')

Esto funcionó para mí. Como usaste la sintaxis from ... import ... , no deberías anteponer datasets cuando lo usas


Parece que los datos en caché están corruptos. Intenta eliminarlos y vuelve a descargarlos (lleva un momento). Si no se especifica de manera diferente, los datos para ''MINST original'' deberían estar en

~/scikit_learn_data/mldata/mnist-original.mat


Aquí hay un código de ejemplo de cómo preparar los datos de MNIST para sklearn:

def get_data(): """ Get MNIST data ready to learn with. Returns ------- dict With keys ''train'' and ''test''. Both do have the keys ''X'' (features) and''y'' (labels) """ from sklearn.datasets import fetch_mldata mnist = fetch_mldata(''MNIST original'') x = mnist.data y = mnist.target # Scale data to [-1, 1] - This is of mayor importance!!! x = x/255.0*2 - 1 from sklearn.cross_validation import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42) data = {''train'': {''X'': x_train, ''y'': y_train}, ''test'': {''X'': x_test, ''y'': y_test}} return data


También recibí un error fetch_mldata () "IOError: could not read bytes". Aquí está la solución; las líneas de código relevantes son

from sklearn.datasets.mldata import fetch_mldata mnist = fetch_mldata(''mnist-original'', data_home=''/media/Vancouver/apps/mnist_dataset/'')

... asegúrese de cambiar ''data_home'' para su ubicación preferida (directorio).

Aquí hay un script:

#!/usr/bin/python # coding: utf-8 # Source: # https://.com/questions/19530383/how-to-use-datasets-fetch-mldata-in-sklearn # ... modified, below, by Victoria """ pers. comm. (Jan 27, 2016) from MLdata.org MNIST dataset contactee "Cheng Ong:" The MNIST data is called ''mnist-original''. The string you pass to sklearn has to match the name of the URL: from sklearn.datasets.mldata import fetch_mldata data = fetch_mldata(''mnist-original'') """ def get_data(): """ Get MNIST data; returns a dict with keys ''train'' and ''test''. Both have the keys ''X'' (features) and ''y'' (labels) """ from sklearn.datasets.mldata import fetch_mldata mnist = fetch_mldata(''mnist-original'', data_home=''/media/Vancouver/apps/mnist_dataset/'') x = mnist.data y = mnist.target # Scale data to [-1, 1] x = x/255.0*2 - 1 from sklearn.cross_validation import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42) data = {''train'': {''X'': x_train, ''y'': y_train}, ''test'': {''X'': x_test, ''y'': y_test}} return data data = get_data() print ''/n'', data, ''/n''


Si no proporcionó el programa data_home, busque el $ {yourprojectpath} /mldata/minist-original.mat, puede descargar el programa y colocar el archivo en la ruta correcta.


Experimenté el mismo problema y encontré diferentes tamaños de archivo de mnist-original.mat en diferentes momentos mientras uso mi WiFi pobre. Cambié a LAN y funciona bien. Tal vez sea el tema de las redes.