Se você executar o seguinte 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)
Você obtém a exceção: _ValueError: o formato contínuo não é suportado_ com o stacktrace:
Arquivo "E: /myfolder/cv_issue.py", linha 7, em
classifier.fit (x, y)
Arquivo "E: Anaconda2libsite-packagessklearnlinear_modelridge.py", linha 1258, em ajuste
_BaseRidgeCV.fit (self, X, Y, sample_weight = sample_weight)
Arquivo "E: Anaconda2libsite-packagessklearnlinear_modelridge.py", linha 1022, em ajuste
estimator.fit (X, y, sample_weight = sample_weight)
Arquivo "E: Anaconda2libsite-packagessklearnlinear_modelridge.py", linha 965, em ajuste
para i no intervalo (len (self.alphas))]
Arquivo "E: Anaconda2libsite-packagessklearnmetricsscorer.py", linha 159, em __call__
raise ValueError ("formato {0} não é suportado" .format (y_type))
ValueError: formato contínuo não é compatível
Mas, obviamente, forneci uma saída binária, então não espero esse erro aqui. E se você substituir RidgeClassifierCV(scoring='roc_auc')
por um RidgeClassifierCV(scoring='roc_auc', cv=2)
, o código funcionará bem.
Minhas versões:
Windows-8.1-6.3.9600
('Python', '2.7.11 | Anaconda 2.5.0 (64 bits) | (padrão, 29 de janeiro de 2016, 14:26:21) [MSC v.1500 64 bits (AMD64)]')
('NumPy', '1.10.4')
('SciPy', '0.17.0')
('Scikit-Learn', '0,17')
Olá, parece que os valores passados para o marcador aqui são y
e cv_values[:,i]
são passados como y_true
e y_score
para roc_auc_score
, mas no marcador, _ThresholdScorer
leva os argumentos X
e y
que agora correspondem a y_true
e y_score
no seu caso são
[ 1. -1. 1. -1. 1. -1.]
[ 0.45824999 -1.64622488 0.6707735 -0.74680963 0.07694918 0.49169546]
Assim, a verificação de y_type
está gerando um erro do tipo continuous
. Não tenho certeza se esse é o comportamento esperado aqui, já que o marcador de limite foi projetado com essa intenção. Desculpe, não posso ajudar muito aqui.
"roc_auc" é uma métrica de classificação ou classificação, não uma métrica de regressão. Portanto, não aceita y contínuo.
Acredito que o OP declarou que suas metas eram discretas, não contínuas. Também estou recebendo o mesmo erro com alvos sendo discretos, 0s e 1s apenas.
Comentários muito úteis
"roc_auc" é uma métrica de classificação ou classificação, não uma métrica de regressão. Portanto, não aceita y contínuo.