我是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
任何人都可以帮助我,以解决此问题吗?
答案 0 :(得分:2)
这是问题所在,建议一些好的人解决:
https://github.com/scikit-learn/scikit-learn/issues/8588
最简单的方法是使用此下载链接下载MNIST的.mat文件:
下载后,将文件放入〜/ scikit_learn_data / mldata文件夹中,如果该文件夹不存在,请创建该文件并将Mnist.mat放入其中。当您在本地拥有scikit时,learn学习将不会下载它并使用该文件。
答案 1 :(得分:2)
由于不建议使用fetch_mldata,因此我们将不得不移至fetch_openml。请确保将scikit学习版本更新为0.20.0或更高版本,以使openml
正常工作。
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()
请注意,如果您遵循的是使用Scikit-Learn和TensorFlow进行动手机器学习和 mnist-784 数据集,您可能会注意到代码< / p>
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()
返回一张9而不是5的图片。我想,可能是mnist-784和mnist原始图像是nist数据的两个子集,或者两个数据集之间的数据顺序是不同的。>
PS:当我尝试加载数据时遇到了关于ssl的错误,就我而言,我更新openssl并已解决问题。
答案 2 :(得分:0)
尽管我不确定出现错误的原因,但是您可以尝试以下可能的方法来纠正该错误。
有时,首次下载时数据可能会损坏。在这种情况下,您需要清除可从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
如果您仍然遇到问题,我想请您提供详细的追溯信息,以帮助我识别问题。
谢谢!
答案 3 :(得分:0)
如果您的sklearn版本小于.19,则“ fetch_mldata”将不起作用。您需要将sklearn升级到.23版