web-dev-qa-db-ja.com

sklearnデータセットからMNISTデータをダウンロードするとタイムアウトエラーが発生する

私は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
Swaraj Shekhar

ここに問題があり、良い人々が提案した回避策がいくつかあります:

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

最も簡単な方法は、次のダウンロードリンクを使用してMNISTの.matファイルをダウンロードすることでした。

MNIST.matをダウンロード

ダウンロード後、ファイルを〜/ scikit_learn_data/mldataフォルダー内に配置します。このフォルダーが存在しない場合は、ファイルを作成してMnist.matをその中に配置します。それらをローカルに持っている場合、scikitlearnはそれをダウンロードせずにそのファイルを使用します。

5
leo

Fetch_mldataは非推奨になっているため、fetch_openmlに移動する必要があります。 openmlを機能させるには、scikit-learnをバージョン0.20.0以降に更新してください。

  1. openml 現在、MNISTデータセットに関連する5つの異なるデータセットがあります。これは、mnist-784データセットを使用した sklearnのドキュメント の1つの例です。
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()

5ではなく9の画像を返します。おそらく、mnist-784とmnist originalがnistデータの2つのサブセットであるか、2つのデータセット間でデータの順序が異なる可能性があります。

PS:データを読み込もうとしたときに、sslに関するエラーが発生しました。私の場合、opensslを更新すると、問題は解決しました。

5
Madmint

エラーが発生する理由はわかりませんが、以下の方法でエラーを修正できます。

  1. 場合によっては、最初のダウンロード時にデータが破損する可能性があります。その場合、scikitデータのホームディレクトリから削除できるキャッシュをクリアする必要があります。このディレクトリを取得するには、次を使用できます-

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

次に、ディレクトリをクリーンアップして、再ダウンロードします。

  1. それでも問題が解決しない場合は、次のリンクを参照して試行エラーを実行し、問題を確認できます。

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

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

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

それでも問題が発生する場合は、問題の特定に役立つ詳細なトレースバックを提供するようにお願いします。

ありがとう!

0
Sukriti Sarkar