Scikit-learn: ValueError: el formato continuo no es compatible con RidgeClassifierCV

Creado en 26 mar. 2016  ·  3Comentarios  ·  Fuente: scikit-learn/scikit-learn

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

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.

Todos 3 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones