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, dans
classifier.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')
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.
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.