LoginSignup
9
4

More than 3 years have passed since last update.

scikit-learn(sklearn)のfetch_mldataのエラーの解決法

Posted at

目的

scikit-learn(sklearn)でデータセットをダウンロードする際に使われるfetch_mldata関数(sklearn.datasets.fetch_mldata)のエラーを解決する。

エラー例

urllib.error.URLError: <urlopen error [WinError 10060] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。>

環境

sklearn(scikit-learn):version 0.21.2

解決法

fetch_mldataが非推奨となり、代わりにfetch_openmlが作成されたため、fetch_openmlを使用します。

なお、fetch_mldataはversion 0.22で削除されます。

sklearn.datasets.fetch_mldata to be removed in version 0.22.

具体例

scikit-learnは様々なデータセットをダウンロードできますが、ここではmnistのデータセットをダウンロードする例を示します。
また、言語はPythonを使用しています。

エラー時のソースコード

fetch_mldata.py
from sklearn.datasets import fetch_mldata

mnist = fetch_mldata("MNIST original", data_home=".")

x_all = mnist['data'].astype(np.float32) / 255
y_all = mnist['target'].astype(np.int32)

修正後のソースコード

fetch_openmlでは、fetch_mldataで使用していたデータセット名と異なっている場合があるため、注意してください。

fetch_openml.py
from sklearn.datasets import fetch_openml

mnist_X, mnist_y = fetch_openml('mnist_784', version=1, data_home=".", return_X_y=True)

x_all = mnist_X.astype(np.float32) / 255
y_all = mnist_y.astype(np.int32)
9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4