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

问题描述 投票:0回答:3

x,y
中传递
fit
时,出现以下错误:

回溯(最近一次调用最后一次):

文件“C:/Classify/classifier.py”,第 95 行,位于

train_avg,test_avg,cms = train_model(X,y,“ceps”,plot = True)
文件“C:/Classify/classifier.py”,第 47 行,train_model

clf.fit(X_train, y_train) 文件“C:\Python27\lib\site-packages\sklearn\svm ase.py”,第 676 行,适合 raise ValueError("类的数量必须大于" ValueError: 类的数量必须大于 1。

下面是我的代码:

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)
python-2.7 scikit-learn classification svm
3个回答
28
投票

您的训练集中可能只有一个唯一的类别标签。正如错误消息所述,数据集中至少需要有两个唯一的类。例如,您可以运行

np.unique(y)
来查看数据集中的唯一类标签是什么。


2
投票

完全正确。您的最后一列(标签)只有一种类型(分类)。你应该至少有两个。例如;如果你的标签决定你是否必须卸载,标签列应该有卸载和不卸载或(0或1)。


0
投票

就我而言,这是获取标签的错误代码

[![enter image description here][1]][1]

所以列表

labels
如下enter image description here

所以列表中有一个标签

labels

© www.soinside.com 2019 - 2024. All rights reserved.