簡體   English   中英

下載代理背后的 sklearn 數據集

[英]Download sklearn datasets behind a proxy

我在我的環境中安裝了 sklearn 並現在在 Windows 上的 jupyter notebook 上運行它。

我怎樣才能避免錯誤:

URLError: urlopen 錯誤 [Errno 11004] getaddrinfo 失敗

我正在運行以下代碼:

import sklearn
import sklearn.ensemble
import sklearn.metrics
from sklearn.datasets import fetch_20newsgroups
categories = ['alt.atheism', 'soc.religion.christian']
newsgroups_train = fetch_20newsgroups(subset='train', categories=categories)

這給出了第 5 行的錯誤:

----> 3 newsgroups_train = fetch_20newsgroups(subset='train', Categories=categories)

我在工作計算機上的代理后面,是否有任何選項可以避免此錯誤並能夠使用示例數據集?

根據源代碼,scikit-learn 將從以下位置下載文件:

https://ndownloader.figshare.com/files/5975967

我假設您無法從代理后面到達此位置。

您可以通過其他方式訪問數據集嗎? 如果是,那么您可以手動下載它,然后在其上運行以下腳本:

並將其保存在以下位置:

~/scikit_learn_data/

這里~指的是用戶主文件夾。 您可以使用以下代碼根據您的系統了解該文件夾的默認位置。

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

更新:完成后,使用以下腳本使其成為 scikit-learn 保留其緩存的形式

import codecs, pickle, tarfile, shutil
from sklearn.datasets import load_files

data_folder = '~/scikit_learn_data/'
target_folder = data_folder+'20news_home/'

tarfile.open(data_folder+'20newsbydate.tar.gz', "r:gz").extractall(path=target_folder)
cache = dict(train=load_files(target_folder+'20news-bydate-train', encoding='latin1'),
             test=load_files(target_folder+'20news-bydate-test', encoding='latin1'))

compressed_content = codecs.encode(pickle.dumps(cache), 'zlib_codec')

with open(data_folder+'20news-bydate_py3.pkz', 'wb') as f:
    f.write(compressed_content)

shutil.rmtree(target_folder)

在嘗試從互聯網下載之前,Scikit-learn 將始終檢查數據集是否存在於本地。 為此,它將檢查上述位置。

之后就可以正常運行導入了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM