数量 类
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)
我正在根据本教程将以下代码应用到我自己的数据中 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)