You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Python代码下载20 Newsgroups数据集,如何使用手动下载文件?

解决20 Newsgroups分类演示的网络超时问题

我最近在跑基于20 Newsgroups的文本分类演示,从scikit-learn官方示例页面下载了代码文件,用Python 3.6 + Anaconda 5.0.1运行时,碰到了网络连接超时错误。有意思的是,我手动访问数据文件的链接完全能正常下载,这就让我犯了难——能不能直接用手动下载好的数据来跑代码呢?

当然可以用本地手动下载的数据!

scikit-learn的fetch_20newsgroups函数其实支持指定本地数据路径,不需要再从网络拉取,具体操作步骤如下:

1. 确认本地文件位置

你已经下载了20news-bydate.tar.gz文件,把它放到一个你容易找到的目录下,比如./local_data/20news-bydate.tar.gz。

2. 修改代码中的数据加载逻辑

找到代码里调用fetch_20newsgroups的代码块,添加两个关键参数:

  • data_home:指定你存放下载文件的目录路径
  • download_if_missing=False:告诉函数不要尝试从网络下载,直接用本地文件

修改后的代码示例:

from sklearn.datasets import fetch_20newsgroups

# 替换成你实际存放文件的目录
local_data_path = "./local_data"

# 加载训练集
newsgroups_train = fetch_20newsgroups(
    subset='train',
    data_home=local_data_path,
    download_if_missing=False,
    # 保留你原来的其他参数,比如categories、remove等
)

# 加载测试集
newsgroups_test = fetch_20newsgroups(
    subset='test',
    data_home=local_data_path,
    download_if_missing=False,
    # 保留你原来的其他参数
)

小贴士:不需要手动解压tar.gz文件,scikit-learn会自动在data_home指定的目录下完成解压操作。

3. 验证加载结果

运行修改后的代码,如果没有抛出错误,并且能正常获取到newsgroups_train.data和newsgroups_test.data,就说明本地数据已经成功加载了。

关于超时问题的小排查

如果好奇为什么代码下载超时但手动能正常下载,可能是这几个原因:

  • 你手动下载时用了代理,但代码的请求没有配置代理
  • scikit-learn默认的下载源在你的网络环境下访问不稳定,而你手动用的是镜像源
  • 代码内置的下载超时时间较短,浏览器会自动重试但代码不会

内容的提问来源于stack exchange,提问作者crazyseabiscuit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:26:39