2016-07-14 7 views
0

ich etwas ähnliches wie dies hatte:logistische Regression funktioniert nicht nach Update auf v.0.17

linear_model.LogisticRegression(penalty='l2').fit(X_train, y_train) 

wo X_train

array([[ 2500. , 5000. , 5000. , ..., 4697.2,  3. , 10600. ], 
     ..., 
     [ 2500. , 3500. , 3500. , ..., 3072. ,  3. , 12800. ]]) 

und y_train:

array([ 4.865146, 12.309128, 1.469881, ..., 5.248941, 11.84231 , 
     2.178483]) 

Das funktionierte ohne alle Fehler oder Warnungen in v.0.16.1, aber nach dem Upgrade auf v.0.17.1 es fehlschlägt wi einen Fehler th:

ValueError: Unknown label type: my y_train array. 

die Dokumentation für v16 und v17 Lesen habe ich nicht anders gefunden nichts. Die einzige verdächtige Sache ist diese:

Logistic Regression (aka logit, MaxEnt) classifier.

die Art deuten darauf hin, dass dies nicht wirklich ein Regressionsmodell ist, aber Klassifikationsmodell, so sollte die y_train Kategorien (aber die gleiche Erklärung war in v16, also bin ich nicht sicher, ob das der Fall ist).

Wie auch immer, ich würde gerne wissen, warum das passiert und wie kann ich es zum Laufen bringen.


A runnable, in sich geschlossene Beispiel das Problem

X_train_1 = np.array([[ 2500., 5000.], [ 4500., 4500.]]) 
y_train_1 = np.array([ 4.865146, 12.309128]) 
linear_model.LogisticRegression(penalty='l2').fit(X_train_1, y_train_1) 
+0

Können Sie ein ausführbares, eigenständiges Beispiel für das Problem bereitstellen? – BrenBarn

+0

@BrenBarn Ich habe bereits alles entfernt, was nicht benötigt wurde. Ich reduzierte das ganze Problem auf im Grunde eine Zeile und enthielt auch teilweise die Eingabe, auf der es fehlschlägt. Nicht sicher, wie runnable und in sich geschlossen kann es sein. Wie auch immer, hier sind 3 Zeilen, die das Problem demonstrieren. –

+0

Was erwarten Sie von Ihrem Modell? Eine logistische Regression sagt eine binäre Ausgabevariable voraus, daher sind Werte wie 4.865146 als Y-Werte nicht sinnvoll. Es könnte sein, dass frühere Versionen von Scikit fälschlicherweise solche Y-Werte akzeptierten und etwas falsch mit ihnen machten, und dass sie es reparierten, weil diese Werte keinen Sinn ergeben. – BrenBarn

Antwort

3

Ich glaube, Sie wollen eine LinearRegression demonstriert; Logistische Regression ist eigentlich ein Klassifikationsmodell (trotz des irreführenden Namens). Sie sind sich nicht sicher, was Ihr Code in der vorherigen Version gemacht hat, vielleicht hat er jeden Float-Wert als Label behandelt?

+0

Ja, logistische Regression ist ein Klassifikationsmodell. Das äquivalente Regressionsmodell ist jedoch keine lineare Regression. In der klassischen linearen Regression ist die Ausgabe irgendeine Zahl auf der realen Linie und daher funktioniert sie nicht gut zur Vorhersage von Wahrscheinlichkeiten. Was OP will, ist ein verallgemeinertes lineares Modell mit einer Logit-Link-Funktion. – cel

+2

@cel ich glaube nicht, das OP prognostiziert Wahrscheinlichkeiten obwohl, die y Werte zwischen 0 und 13 – maxymoo

+0

Messepunkt. Verpasst das! – cel

Verwandte Themen