簡體   English   中英

Python ValueError: n_splits=3 不能大於每個 class 中的成員數

[英]Python ValueError: n_splits=3 cannot be greater than the number of members in each class

我正在做人臉識別項目,我有兩個人,每個人有 2 張臉

1. personA
    image1.jpg
    image2.jpg


2. personB
    image1.jpg
    image2.jpg

我正在嘗試在上述數據集的面部嵌入上訓練 model,如下所示:

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)

其中data["embeddings"]labels的長度為4 data["embeddings']包含 personA, personB 的人臉嵌入的 ndarray

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(data["embeddings"], labels)處遇到錯誤:

ValueError: n_splits=3 cannot be greater than the number of members in each class.

我無法理解這個錯誤。 誰能解釋一下這個問題,我該如何解決?

仔細閱讀,錯誤信息清晰且不言自明; 它只是告訴您,由於您的每個班級總共只有兩 (2) 個樣本,因此您不能進行 3 折交叉驗證。 這將需要您的每個班級至少3 個樣本。

我想它應該與cv=2一起工作而不會引發任何錯誤,但是您的整個方法(即只有 4 個樣本的數據集)似乎非常值得懷疑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM