Si ejecuta el siguiente código:
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)
Obtiene la excepción: _ValueError: el formato continuo no es compatible_ con stacktrace:
Archivo "E: /myfolder/cv_issue.py", línea 7, en
classifier.fit (x, y)
Archivo "E: Anaconda2libsite-packagessklearnlinear_modelridge.py", línea 1258, en forma
_BaseRidgeCV.fit (self, X, Y, sample_weight = sample_weight)
Archivo "E: Anaconda2libsite-packagessklearnlinear_modelridge.py", línea 1022, en forma
estimator.fit (X, y, sample_weight = sample_weight)
Archivo "E: Anaconda2libsite-packagessklearnlinear_modelridge.py", línea 965, en forma
para i en rango (len (self.alphas))]
Archivo "E: Anaconda2libsite-packagessklearnmetricsscorer.py", línea 159, en __call__
subir ValueError ("El formato {0} no es compatible" .format (y_type))
ValueError: no se admite el formato continuo
Pero, obviamente, proporcioné una salida binaria, así que no espero tal error aquí. Y si reemplaza RidgeClassifierCV(scoring='roc_auc')
con RidgeClassifierCV(scoring='roc_auc', cv=2)
, el código funciona correctamente.
Mis versiones:
Windows-8.1-6.3.9600
('Python', '2.7.11 | Anaconda 2.5.0 (64 bits) | (predeterminado, 29 de enero de 2016, 14:26:21) [MSC v.1500 64 bit (AMD64)]')
('NumPy', '1.10.4')
('Ciencia ficción', '0.17.0')
('Scikit-Learn', '0.17')
Hola, parece que los valores que se pasan al anotador aquí son y
y cv_values[:,i]
se pasan como y_true
y y_score
por roc_auc_score
, pero en el marcador, _ThresholdScorer
toma argumentos X
y y
que ahora corresponden a y_true
y y_score
en su caso son
[ 1. -1. 1. -1. 1. -1.]
[ 0.45824999 -1.64622488 0.6707735 -0.74680963 0.07694918 0.49169546]
Por tanto, la comprobación de y_type
genera un error del tipo continuous
. No estoy seguro de si este es el comportamiento esperado aquí, ya que el marcador de umbral se diseñó con esta intención. Lo siento, no puedo ser de mucha ayuda aquí.
"roc_auc" es una métrica de clasificación o ranking, no una métrica de regresión. Entonces no acepta y continua.
Creo que el OP declaró que sus objetivos eran discretos, no continuos. También obtengo el mismo error con los objetivos discretos, solo 0 y 1.
Comentario más útil
"roc_auc" es una métrica de clasificación o ranking, no una métrica de regresión. Entonces no acepta y continua.