从 sklearn 数据集下载 MNIST 数据会出现超时错误
MNIST data download from sklearn datasets gives Timeout error
我是 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
谁能帮我解决这个问题需要做什么?
这是问题所在,好心人建议了一些解决方法:
https://github.com/scikit-learn/scikit-learn/issues/8588
最简单的方法是通过此下载下载 MNIST 的 .mat 文件 link:
下载后将文件放入 ~/scikit_learn_data/mldata 文件夹,如果该文件夹不存在,请创建它并将 Mnist.mat 放入其中。当你在本地拥有它们时,scikit learn 不会下载它并使用该文件。
虽然我不确定您收到错误的原因,但您可以尝试以下可能的方法来纠正错误。
有时,数据可能会在第一次下载时损坏。在这种情况下,您需要清除缓存,您可以从 scikit 数据主目录 中删除该缓存。要获取此目录,您可以使用 -
from sklearn.datasets.base import get_data_home
print (get_data_home())
现在清理目录,重新下载。
- 如果问题仍然存在,您可以参考以下链接进行一些试错以检查您的问题。
https://github.com/ageron/handson-ml/issues/143
https://github.com/scikit-learn/scikit-learn/issues/8588
https://github.com/ageron/handson-ml/issues/8
如果您仍然遇到问题,我想请您提供详细的回溯以帮助我确定问题。
谢谢!!
由于 fetch_mldata 已被弃用,我们将不得不移至 fetch_openml。确保将您的 scikit-learn 更新到版本 0.20.0 或更高版本,以便 openml
正常工作。
- openml 目前有 5 个不同的数据集与 MNIST 数据集相关。
这是 sklearn's document 使用 mnist-784 数据集的一个示例。
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)
- 或者如果你不需要非常大的数据集,你可以使用
load_digits
:
from sklearn.datasets import load_digits
mnist = load_digits()
请注意,如果您正在阅读 Hands-On Machine Learning with Scikit-Learn and 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()
returns一张9而不是5的图片。我猜,可能是mnist-784和mnist original是nist数据的两个子集,或者数据顺序不同两个数据集。
PS: 我在尝试加载数据时遇到了一些关于 ssl 的错误,在我的情况下,我更新了 openssl 并且问题已经解决。
如果您的 sklearn 版本低于 .19,则“fetch_mldata”将不起作用。您需要将 sklearn 升级到版本 .23
我是 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
谁能帮我解决这个问题需要做什么?
这是问题所在,好心人建议了一些解决方法:
https://github.com/scikit-learn/scikit-learn/issues/8588
最简单的方法是通过此下载下载 MNIST 的 .mat 文件 link:
下载后将文件放入 ~/scikit_learn_data/mldata 文件夹,如果该文件夹不存在,请创建它并将 Mnist.mat 放入其中。当你在本地拥有它们时,scikit learn 不会下载它并使用该文件。
虽然我不确定您收到错误的原因,但您可以尝试以下可能的方法来纠正错误。
有时,数据可能会在第一次下载时损坏。在这种情况下,您需要清除缓存,您可以从 scikit 数据主目录 中删除该缓存。要获取此目录,您可以使用 -
from sklearn.datasets.base import get_data_home print (get_data_home())
现在清理目录,重新下载。
- 如果问题仍然存在,您可以参考以下链接进行一些试错以检查您的问题。
https://github.com/ageron/handson-ml/issues/143
https://github.com/scikit-learn/scikit-learn/issues/8588
https://github.com/ageron/handson-ml/issues/8
如果您仍然遇到问题,我想请您提供详细的回溯以帮助我确定问题。
谢谢!!
由于 fetch_mldata 已被弃用,我们将不得不移至 fetch_openml。确保将您的 scikit-learn 更新到版本 0.20.0 或更高版本,以便 openml
正常工作。
- openml 目前有 5 个不同的数据集与 MNIST 数据集相关。 这是 sklearn's document 使用 mnist-784 数据集的一个示例。
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)
- 或者如果你不需要非常大的数据集,你可以使用
load_digits
:
from sklearn.datasets import load_digits
mnist = load_digits()
请注意,如果您正在阅读 Hands-On Machine Learning with Scikit-Learn and 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()
returns一张9而不是5的图片。我猜,可能是mnist-784和mnist original是nist数据的两个子集,或者数据顺序不同两个数据集。
PS: 我在尝试加载数据时遇到了一些关于 ssl 的错误,在我的情况下,我更新了 openssl 并且问题已经解决。
如果您的 sklearn 版本低于 .19,则“fetch_mldata”将不起作用。您需要将 sklearn 升级到版本 .23