Sklearn导入数据集20newsgroups报错-no handlers could be fetch_20newsgroups

来源:互联网 发布:如何复制淘宝上的图片 编辑:程序博客网 时间:2024/06/05 09:50

最近做一个垃圾信息过滤项目,用到sklearn机器学习库,导入20newsgroup数据集总是报错,

no handlers could be fetch_20newsgroups,另外就是urllib2.URLError: <urlopen error [Errno 10060] >

折腾了大半天,网上找了一些答案都没能解决,无奈直接查看源码,修改了几个地方,最后成功了。


首先手动下载 http://qwone.com/~jason/20Newsgroups/20news-bydate.tar.gz 这个包,

在C:\User\账户名\目录新建目录scikit_learn_data,将下载的包放在该目录下,

之后进入C:\Python27\Lib\site-packages\sklearn\datasets,找到twenty_newsgroups.py文件,该数据集

主要通过这个包来在线下载,我们这里手动下载,然后注释相关代码即可。

找到这个函数 download_20newsgroups,注释以下代码

if os.path.exists(archive_path):
        # Download is not complete as the .tar.gz file is removed after
        # download.
        logger.warn("Download was incomplete, downloading again.")
        os.remove(archive_path)


    logger.warn("Downloading dataset from %s (14 MB)", URL)
    opener = urlopen(URL)
    open(archive_path, 'wb').write(opener.read())


观察以下代码,是将下载的文件解压,所以我们注释掉上面在线下载即可

logger.info("Decompressing %s", archive_path)
tarfile.open(archive_path, "r:gz").extractall(path=target_dir)
os.remove(archive_path)


保存,执行相关导入数据集程序,最终可以发现C:\User\账户名\scikit_learn_data目录下只剩下

20news-bydate.pkz文件,以后在执行程序就不需要重新下载了。

1 1
原创粉丝点击