Python ValueError:n_splits=3不能大于每个类中的成员数

Python ValueError:n_splits=3不能大于每个类中的成员数,python,machine-learning,scikit-learn,cross-validation,Python,Machine Learning,Scikit Learn,Cross Validation,我在做人脸识别项目,我有两个人,每个人有两张脸 1. personA image1.jpg image2.jpg 2. personB image1.jpg image2.jpg 我正在尝试对上述数据集的人脸嵌入模型进行培训,如下所示: params = {"C": [0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0], "gamma": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0

我在做人脸识别项目,我有两个人,每个人有两张脸

1. personA
    image1.jpg
    image2.jpg


2. personB
    image1.jpg
    image2.jpg
我正在尝试对上述数据集的人脸嵌入模型进行培训,如下所示:

params = {"C": [0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0], "gamma": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]}
model = GridSearchCV(SVC(kernel="rbf", gamma="auto", probability=True), params, cv=3, n_jobs=-1)
model.fit(data["embeddings"], labels)
其中
数据[“嵌入”]
标签的长度为
4
<代码>数据[“嵌入”]
包含人物角色、人物B的面部嵌入数据

data['embeddings'] = [
                         [0.02331057, -0.01995077, ..], 
                         [-0.00034041,  0.02753334, ..], 
                         [0.02454563, -0.03797123, ...], 
                         [0.10561685, -0.08444008, ...]
                     ]

labels = [0 0 1 1]
但是我在
model.fit(数据[“嵌入”],标签)
中得到以下错误:


我无法理解这个错误。有谁能解释一下这个问题以及我如何解决它吗?

仔细阅读,错误信息是清楚的,可以自我解释;它只是告诉您,因为您总共只有两(2)个对于每个类的样本,您不能进行3次交叉验证。这将要求每个类至少有3个样本


我想它应该在不抛出任何错误的情况下使用
cv=2
,但是您的整个方法(即只有4个样本的数据集)似乎非常值得怀疑。

仔细阅读,错误信息是明确的,可以自我解释的;它只是告诉您,因为您总共只有两(2)个样本对于每个类的样本,您不能进行3次交叉验证。这将要求每个类至少有3个样本


我想它应该在不抛出任何错误的情况下使用
cv=2
,但是您的整个方法(即只有4个样本的数据集)似乎非常可疑。

只有4个样本会让kfolds交叉验证有点可疑。也许你想漏掉一个?只有4个样本会让kfolds交叉验证有点可疑。也许你想漏掉一个?
ValueError: n_splits=3 cannot be greater than the number of members in each class.