关于scikit learn:ValueError:类的数量必须大于一(python)

ValueError: The number of classes has to be greater than one (python)

当传递x,yfit,我得到以下错误:

追踪(最新的呼叫负载):

File"C:/Classify/classifier.py", line 95, in

train_avg, test_avg, cms = train_model(X, y,"ceps", plot=True)
File"C:/Classify/classifier.py", line 47, in train_model

clf.fit(X_train, y_train) File"C:\Python27\lib\site-packages\sklearn\svm\base.py", line 676, in fit
raise ValueError("The number of classes has to be greater than" ValueError: The number of classes has to be greater than one.

下面是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def train_model(X, Y, name, plot=False):
"""
    train_model(vector, vector, name[, plot=False])

    Trains and saves model to disk.
"""
labels = np.unique(Y)

cv = ShuffleSplit(n=len(X), n_iter=1, test_size=0.3, indices=True, random_state=0)

train_errors = []
test_errors = []

scores = []
pr_scores = defaultdict(list)
precisions, recalls, thresholds = defaultdict(list), defaultdict(list), defaultdict(list)

roc_scores = defaultdict(list)
tprs = defaultdict(list)
fprs = defaultdict(list)

clfs = []  # for the median

cms = []

for train, test in cv:
    X_train, y_train = X[train], Y[train]
    X_test, y_test = X[test], Y[test]

    clf = LogisticRegression()
    clf.fit(X_train, y_train)
    clfs.append(clf)


您可能在培训集中只有一个唯一的班级标签。正如错误消息所指出的,数据集中至少需要有两个唯一的类。例如,可以运行np.unique(y)查看数据集中的唯一类标签是什么。