【问题标题】:Number of classes班级数
【发布时间】:2018-07-08 07:11:09
【问题描述】:

我正在根据本教程 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'}

关于如何导致此错误的任何想法?

【问题讨论】:

  • Xy 是什么?
  • 我更新了我的代码

标签: python validation scikit-learn svm


【解决方案1】:

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

尝试改用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)

【讨论】:

    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多