[英]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.