数量 类

Number of classes

我正在根据本教程将以下代码应用到我自己的数据中 http://scikit-learn.org/stable/modules/learning_curve.html

from sklearn.model_selection import learning_curve
from sklearn.svm import SVC
train_sizes, train_scores, valid_scores = learning_curve(SVC(kernel='linear'), X, y, train_sizes=[50, 80, 110], cv=5)

但是,我得到以下错误ValueError: The number of classes has to be greater than one; got 1

这是我的 X 和 y:

X.shape (2163, 8891)

y.shape (2163,)

type(X) <class 'numpy.ndarray'>

type(y) <class 'numpy.ndarray'>

使用 print(set(y)) 产生两个 类 {'R', 'N'}

对导致此错误的原因有何想法?

可能是由于 cv = 5 而发生的。由于您使用的是整数,因此将使用一个简单的 K-Fold 迭代器,它可能会以这样一种方式拆分数据:在给定的训练折叠中,只有一个 class 存在。

请尝试使用 StratifiedKFold

from sklearn.model_selection import StratifiedKFold
skf = StratifiedKFold(n_splits=5)
train_sizes, train_scores, valid_scores = learning_curve(SVC(kernel='linear'), 
                                                     X, y, 
                                                     train_sizes=[50, 80, 110], 
                                                     cv=skf)