web-dev-qa-db-ja.com

sklearnを使用して「mnist-original」データセットを読み込めません

この質問は ここここ の質問に似ています。残念ながら、私の場合、提案された解決策では問題は解決しませんでした。

MNISTデータセットを操作する必要がありますが、scikit_learn_data/mldata/フォルダーのアドレスを指定してもフェッチできません(以下を参照)。どうすればこれを修正できますか?

それが役立つかもしれない場合に備えて、私はAnacondaを使用しています。

コード:

from sklearn.datasets.mldata import fetch_mldata

dataset = fetch_mldata('mnist-original', data_home='/Users/michelangelo/scikit_learn_data/mldata/')
mnist = fetch_mldata('MNIST original')

エラー:

---------------------------------------------------------------------------
IOError                                   Traceback (most recent call last)
<ipython-input-5-dc4d45bc928e> in <module>()
----> 1 mnist = fetch_mldata('MNIST original')

/Users/michelangelo/anaconda2/lib/python2.7/site-packages/sklearn/datasets/mldata.pyc in fetch_mldata(dataname, target_name, data_name, transpose_data, data_home)
    168     # load dataset matlab file
    169     with open(filename, 'rb') as matlab_file:
--> 170         matlab_dict = io.loadmat(matlab_file, struct_as_record=True)
    171 
    172     # -- extract data from matlab_dict

/Users/michelangelo/anaconda2/lib/python2.7/site-packages/scipy/io/matlab/mio.pyc in loadmat(file_name, mdict, appendmat, **kwargs)
    134     variable_names = kwargs.pop('variable_names', None)
    135     MR = mat_reader_factory(file_name, appendmat, **kwargs)
--> 136     matfile_dict = MR.get_variables(variable_names)
    137     if mdict is not None:
    138         mdict.update(matfile_dict)

/Users/michelangelo/anaconda2/lib/python2.7/site-packages/scipy/io/matlab/mio5.pyc in get_variables(self, variable_names)
    290                 continue
    291             try:
--> 292                 res = self.read_var_array(hdr, process)
    293             except MatReadError as err:
    294                 warnings.warn(

/Users/michelangelo/anaconda2/lib/python2.7/site-packages/scipy/io/matlab/mio5.pyc in read_var_array(self, header, process)
    250            `process`.
    251         '''
--> 252         return self._matrix_reader.array_from_header(header, process)
    253 
    254     def get_variables(self, variable_names=None):

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.array_from_header()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.array_from_header()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.read_real_complex()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.read_numeric()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.read_element()

streams.pyx in scipy.io.matlab.streams.FileStream.read_string()

IOError: could not read bytes
4
albus_c

同じ問題に直面したばかりで、問題を見つけるのに少し時間がかかりました。 1つの理由は、最初のダウンロード中にデータが破損する可能性があることです。キャッシュされたデータを削除します。次のようにscikitdata homedirを見つけます。

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

ディレクトリをクリーンアップし、データセットを再ダウンロードします。この解決策は私のために働きます。参考: https://github.com/ageron/handson-ml/issues/14

これは、次の質問にも関連しています: sklearnでdatasets.fetch_mldata()を使用する方法は?

ここでの質問のクイックアップデート:

mldata.orgはまだダウンしているようです。次に、scikit-learnはfetch_mldataを削除します。

現時点での解決策:上記の行を使用すると、data_homeの場所に空のフォルダーが作成されるため、ここでデータのコピーを見つけます: https://github.com/amplab/datascience-sp14/blob/master /lab7/mldata/mnist-original.mat そしてそれをダウンロードします。次に、空の〜/ sklearn_data/mldata /を配置します。

それは私のために働いた。

6
Golddy

残念ながら、fetch_mldata()は最新バージョンのsklearnでfetch_openml()に置き換えられました。

したがって、使用する代わりに:

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

使用する必要があります:

from sklearn.datasets import fetch_openml()
mnist = fetch_openml('mnist_784')
x = mnist.data
y = mnist.target

xの形状は=(70000,784)になります
yの形は=(70000、)になります

3
Saurabh Yadav

の代わりに :

from sklearn.datasets.mldata import fetch_mldata

使用する:

from sklearn.datasets import fetch_mldata

その後:

mnist = fetch_mldata('MNIST original')
X = mnist.data.astype('float64')
y = mnist.target

この例を参照してください。

3
Vivek Kumar

同じ問題を抱えている人にとって:それは接続の問題でした。同様のエラーが発生した場合は、@ vivek-kumarの提案に従って、mnist-original.matファイル全体があることを確認してください。現在のファイルサイズ:55.4MB。

3
albus_c

最新 sklearnバージョン(0.21)では、次を使用します。

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits

digits = load_digits()

X = digits.data
y = digits.target
2
makis

次の2行を使用してください:from sklearn.datasets import fetch_openml mnist = fetch_openml( 'mnist_784'、version = 1、cache = True)