Scikit-learn: ValueError : le format continu n'est pas pris en charge dans RidgeClassifierCV

Créé le 26 mars 2016  ·  3Commentaires  ·  Source: scikit-learn/scikit-learn

Si vous exécutez le code suivant :

import numpy as np
from sklearn.linear_model.ridge import RidgeClassifierCV

classifier = RidgeClassifierCV(scoring='roc_auc')
x = np.array([[1, 2, 3], [3, 4, 9], [4, 9, 1], [8, 0, 4], [1, 1, 4], [1.1, 2, 4]])
y = np.array([True, False, True, False, True, False])
classifier.fit(x, y)

Vous obtenez l'exception : _ValueError : le format continu n'est pas pris en charge_ avec le stacktrace :

Fichier "E:/myfolder/cv_issue.py", ligne 7, dansclassifier.fit(x, y)
Fichier "E:Anaconda2libsite-packagessklearnlinear_modelridge.py", ligne 1258, en forme
_BaseRidgeCV.fit(self, X, Y, sample_weight=sample_weight)
Fichier "E:Anaconda2libsite-packagessklearnlinear_modelridge.py", ligne 1022, en forme
estimateur.fit(X, y, sample_weight=sample_weight)
Fichier "E:Anaconda2libsite-packagessklearnlinear_modelridge.py", ligne 965, en forme
for i in range(len(self.alphas))]
Fichier "E:Anaconda2libsite-packagessklearnmetricsscorer.py", ligne 159, dans __call__
augmenter ValueError("{0} le format n'est pas pris en charge".format(y_type))
ValueError : le format continu n'est pas pris en charge

Mais, évidemment, j'ai fourni une sortie binaire, donc je ne m'attends pas à une telle erreur ici. Et si vous remplacez RidgeClassifierCV(scoring='roc_auc') par un RidgeClassifierCV(scoring='roc_auc', cv=2) , le code fonctionne correctement.

Mes versions :

Windows-8.1-6.3.9600
('Python', '2.7.11 |Anaconda 2.5.0 (64 bits)| (par défaut, 29 janvier 2016, 14:26:21) [MSC v.1500 64 bits (AMD64)]')
('NumPy', '1.10.4')
('SciPy', '0.17.0')
('Scikit-Apprendre', '0.17')

Commentaire le plus utile

"roc_auc" est une métrique de classification ou de classement, pas une métrique de régression. Il n'accepte donc pas le y continu.

Tous les 3 commentaires

Bonjour, il semble que les valeurs transmises au marqueur ici soient y et cv_values[:,i] soient transmises comme y_true et y_score pour roc_auc_score , mais dans le marqueur, _ThresholdScorer prend les arguments X et y qui correspondent maintenant à y_true et y_score dans votre cas sont

[ 1. -1.  1. -1.  1. -1.] 
[ 0.45824999 -1.64622488  0.6707735  -0.74680963  0.07694918  0.49169546]

Ainsi la vérification de y_type génère une erreur de type continuous . Je ne sais pas si c'est le comportement attendu ici puisque le marqueur de seuil a été conçu dans cette intention. Désolé ne peut pas être d'une grande aide ici.

"roc_auc" est une métrique de classification ou de classement, pas une métrique de régression. Il n'accepte donc pas le y continu.

Je crois que le PO a déclaré que ses cibles étaient discrètes et non continues. J'obtiens également la même erreur avec des cibles discrètes, des 0 et des 1 uniquement.

Cette page vous a été utile?
0 / 5 - 0 notes