我在官方scikit-learn网站上练习使用特征脸和SVM的面部识别示例。
但是当我在这里跑:
from __future__ import print_function
from time import time
import logging
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import fetch_lfw_people
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.decomposition import PCA
from sklearn.svm import SVC
print(__doc__)
# Display progress logs on stdout
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s')
# #############################################################################
# Download the data, if not already on disk and load it as numpy arrays
lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
但我收到的错误告诉我:
Traceback (most recent call last):
File "D:\神经网络与深度学习\麦子学院-深度学习\(Part One)深度学习基础\代码与素材
\代码与素材(1)\03SVM\plot_face_recognition.py", line 54, in <module>
lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
File "D:\Program Files\Python36\lib\site-packages\sklearn\datasets\lfw.py", line 335, in fetch_lfw_people
min_faces_per_person=min_faces_per_person, color=color, slice_=slice_)
File "D:\Program Files\Python36\lib\site-packages\sklearn\externals\joblib\memory.py", line 562, in __call__
return self._cached_call(args, kwargs)[0]
File "D:\Program Files\Python36\lib\site-packages\sklearn\externals\joblib\memory.py", line 510, in _cached_call
out, metadata = self.call(*args, **kwargs)
File "D:\Program Files\Python36\lib\site-packages\sklearn\externals\joblib\memory.py", line 744, in call
output = self.func(*args, **kwargs)
File "D:\Program Files\Python36\lib\site-packages\sklearn\datasets\lfw.py", line 231, in _fetch_lfw_people
min_faces_per_person)
ValueError: min_faces_per_person=70 is too restrictive
我不明白为什么?我的python版本是3.6.2,scikit-learn版本是v0.19.0
答案 0 :(得分:0)
此错误消息是红色鲱鱼:
ValueError: min_faces_per_person=70 is too restrictive
您的堆栈跟踪显示此错误来自... sklearn \ datasets \ lfw.py&#34;,第231行,_fetch_lfw_people
查看_fetch_lfw_people中的代码,它会显示何时生成此错误
n_faces = len(file_paths)
if n_faces == 0:
raise ValueError("min_faces_per_person=%d is too restrictive" %
min_faces_per_person)
如果找不到要处理的任何(图像)文件,就会发生这种情况。
当我在互联网代理服务器后面时出现此错误,这个Python代码不会为我下载该文件。
为了解决这个问题,我手动下载了这5个文件并将其放在〜/ scikit_learn_data / lfw_home文件夹中。您可以通过查找RemoteFileMetadata(在lfw.py。
中找到这些URL)https://ndownloader.figshare.com/files/5976018 #lfw.tgz
https://ndownloader.figshare.com/files/5976015 #lfw-funneled.tgz
https://ndownloader.figshare.com/files/5976012 #pairsDevTrain.txt
https://ndownloader.figshare.com/files/5976009 #pairsDevTest.txt
https://ndownloader.figshare.com/files/5976006 #pairs.txt
请记得在2个tgz文件上运行tar -xvf来提取图像文件。
答案 1 :(得分:0)
那么错误就解决了。
原因: 由于您的 Internet 连接性较低,运行时无法正常工作。这就是为什么您必须出厂重置运行时并执行所有单元。 它对我有用,错误消失了,然后数据集被下载了。
答案 2 :(得分:-1)
我也遇到了这个例外。我发现它可能是因为你运行了这个python程序,但是当它运行并下载数据时,你就会破坏它,并且已经完成了这个目录。
我通过删除maden dir.Its route:~/scikit_learn_data/lfw_home.
删除dir lfw_funneled和lfw-funneled.tgz,然后再次运行程序,数据将再次下载。