Scikit-learn: ValueError: formato contínuo não é compatível com RidgeClassifierCV

Criado em 26 mar. 2016  ·  3Comentários  ·  Fonte: scikit-learn/scikit-learn

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

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.

Todos 3 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações