调用 from sklearn.datasets import fetch_lfw_people 出现HTTPError 403错误

调用fetch_lfw_people()方法下载LFW(Labled Faces in the Wild)人脸数据集:


问题描述

在调用fetch_lfw_people()方法下载LFW(Labled Faces in the Wild)人脸数据集时出现HTTP Error 403: Forbidden 错误

原因分析:

出现403错误的原因是服务器接收到了客户的请求,但是拒绝回应。


解决方案:

Step1.首先我们在百度网盘来手动下载数据集
LFW数据集下载链接
提取码:1220
Step2.运行一遍如下命令,即使报错也不用管。

from sklearn.datasets import fetch_lfw_peoplelfw_people = fetch_lfw_people(data_home = "C:\\Users\\86151\\机器学习实践\\",download_if_missing=False)

参数介绍:
这里只介绍我们解决问题所使用到的参数,更多参数请参阅sklearn官方网站关于datasets.fetch_lfw_people的使用,连接如下:
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_lfw_people.html

data_home:str, 默认值=None为数据集指定另一个下载和缓存文件夹。默认情况下 所有Scikit-learn数据存储在“~/scikit_learn_data”子文件夹中。
download_if_missing:bool, 默认值=True如果为 False,则在数据在本地不可用时,引发 IOError错误, 而不是尝试从源站点下载数据

这时打开你参数“data_home”设置的路径下的文件,你会发现一个名为lfw_home的空文件夹:

然后将刚才在百度网盘下载的数据解压在这个文件夹里面

Step3.然后找到名为lfwfunneled.tgz压缩包,更名为lfw-funneled.tgz,如下图所示:

Step4.最后再回到Step2来运行那两行命令即可

如果进行到这一步那么数据集就导出成功啦! 不过比较麻烦的是每次读入数据的时候都需要加上“data_home”和“download_if_missing”参数。