ValueError: Le nombre de classes doit être supérieur à un (python)
Lors du passage de x,y
dans fit
, j'obtiens l'erreur suivante:
Traceback (most recent call last):
Fichier "C:/Classify/classifier.py", la ligne 95, dans
train_avg, test_avg, cms = train_model(X, y, "ceps", plot=True)
Fichier "C:/Classify/classifier.py", ligne 47, dans train_modelde la fcf.ajustement(X_train, y_train) Fichier "C:\Python27\lib\site-packages\sklearn\svm\base.py" de ligne, 676, dans l'ajustement
raise ValueError("Le nombre de classes doit être supérieure à" ValueError: Le nombre de classes doit être supérieur à un.
Ci-dessous mon code:
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)
- scikit learn version 0.15.2
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement seulement une seule et unique classe de l'étiquette dans l'ensemble de la formation actuelle. Comme les messages d'erreur noté, vous devez avoir au moins deux classes uniques dans le jeu de données. E. g., vous pouvez exécuter
np.unique(y)
pour voir ce que l'unique étiquettes de classe dataset sont.labels = np.unique(Y)
dans votre exemple de code. Juste à unprint
, par exemple,labels = np.unique(Y); print(labels)
print
dans une ligne avant de vous rencontrez l'erreur sinonprint(labels)
ne sera pas exécuté et vous ne serait pas maintenant ce que la variablelabels
contient.