2016-11-24 2 views
0

При прохождении x,y в fit, я получаю следующее сообщение об ошибке:ValueError: Количество классов должно быть больше, чем один (питон)

Traceback (самый последний вызов последний):

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.

Ниже приведен мой код:

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) 
+0

scikit learn version 0.15.2 –

ответ

6

Возможно, у вас есть только один уникальный ярлык класса в установленном учебном наборе. Как отмечалось в сообщениях об ошибках, в наборе данных необходимо иметь как минимум два уникальных класса. Например, вы можете запустить np.unique(y), чтобы узнать, что представляют собой уникальные метки классов в вашем наборе данных.

+1

Где и как следует использовать np.unique (y)? –

+1

просто проверьте его. Независимо от того, где ... – MMF

+0

Как видите, у вас уже есть 'меток = np.unique (Y)' в вашем примере кода. Просто на 'print', например,' labels = np.unique (Y); печать (этикетки) ' – Sebastian

Смежные вопросы