Scikit-learn: ValueError: kontinuierliches Format wird in RidgeClassifierCV nicht unterstützt

Erstellt am 26. März 2016  ·  3Kommentare  ·  Quelle: scikit-learn/scikit-learn

Wenn Sie den folgenden Code ausführen:

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)

Sie erhalten die Ausnahme: _ValueError: Continuous Format wird nicht unterstützt_ mit dem Stacktrace:

Datei "E:/myfolder/cv_issue.py", Zeile 7, inKlassifikator.fit(x, y)
Datei "E:Anaconda2libsite-packagessklearnlinear_modelridge.py", Zeile 1258, in fit
_BaseRidgeCV.fit(self, X, Y, sample_weight=sample_weight)
Datei "E:Anaconda2libsite-packagessklearnlinear_modelridge.py", Zeile 1022, in fit
estimator.fit(X, y, sample_weight=sample_weight)
Datei "E:Anaconda2libsite-packagessklearnlinear_modelridge.py", Zeile 965, in fit
für i im Bereich(len(self.alphas))]
Datei "E:Anaconda2libsite-packagessklearnmetricsscorer.py", Zeile 159, in __call__
raise ValueError("{0} Format wird nicht unterstützt".format(y_type))
ValueError: Endlosformat wird nicht unterstützt

Aber offensichtlich habe ich eine binäre Ausgabe bereitgestellt, daher erwarte ich hier keinen solchen Fehler. Und wenn Sie RidgeClassifierCV(scoring='roc_auc') durch ein RidgeClassifierCV(scoring='roc_auc', cv=2) ersetzen, läuft der Code einwandfrei.

Meine Versionen:

Windows-8.1-6.3.9600
('Python', '2.7.11 |Anaconda 2.5.0 (64-Bit)| (Standard, 29. Januar 2016, 14:26:21) [MSC v.1500 64 Bit (AMD64)]')
('AnzahlPy', '1.10.4')
('SciPy', '0.17.0')
('Scikit-Lernen', '0.17')

Hilfreichster Kommentar

"roc_auc" ist eine Klassifizierungs- oder Ranking-Metrik, keine Regressions-Metrik. Es akzeptiert also kein kontinuierliches y.

Alle 3 Kommentare

Hallo, so scheint es , dass die Werte in den Torschützen weitergegeben werden hier sind y und cv_values[:,i] wird als übergeben y_true und y_score für roc_auc_score , aber im Scorer nimmt _ThresholdScorer die Argumente X und y die in Ihrem Fall jetzt y_true und y_score entsprechen

[ 1. -1.  1. -1.  1. -1.] 
[ 0.45824999 -1.64622488  0.6707735  -0.74680963  0.07694918  0.49169546]

Somit löst die Prüfung von y_type einen Fehler vom Typ continuous . Ich bin mir nicht sicher, ob dies das erwartete Verhalten hier ist, da der Schwellenwert-Scorer mit dieser Absicht entwickelt wurde. Sorry kann hier nicht viel weiterhelfen.

"roc_auc" ist eine Klassifizierungs- oder Ranking-Metrik, keine Regressions-Metrik. Es akzeptiert also kein kontinuierliches y.

Ich glaube, das OP hat angegeben, dass seine Ziele diskret und nicht kontinuierlich waren. Ich erhalte auch den gleichen Fehler, wenn Ziele diskret sind, nur 0s und 1s.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen