Python/Scikit-Learn - Kann damit nicht umgehen Mischung aus multiclass und kontinuierliche

Ich versuche fit ein SGDRegressor auf meine Daten und dann überprüfen Sie die Genauigkeit. Der Beschlag funktioniert gut, aber dann die Vorhersagen sind nicht in den gleichen Datentyp(?) als das ursprüngliche Ziel-Daten, und ich bekomme die Fehlermeldung

ValueError: Can't handle mix of multiclass and continuous

Beim Aufruf print "Accuracy:", ms.accuracy_score(y_test,predictions).

Den Daten sieht so aus (nur 200 tausend + Zeilen):

Product_id/Date/product_group1/Price/Net price/Purchase price/Hour/Quantity/product_group2
0   107 12/31/2012  10  300 236 220 10  1   108

Der code ist wie folgt:

from sklearn.preprocessing import StandardScaler
import numpy as np
from sklearn.linear_model import SGDRegressor
import numpy as np
from sklearn import metrics as ms

msk = np.random.rand(len(beers)) < 0.8

train = beers[msk]
test = beers[~msk]

X = train [['Price', 'Net price', 'Purchase price','Hour','Product_id','product_group2']]
y = train[['Quantity']]
y = y.as_matrix().ravel()

X_test = test [['Price', 'Net price', 'Purchase price','Hour','Product_id','product_group2']]
y_test = test[['Quantity']]
y_test = y_test.as_matrix().ravel()

clf = SGDRegressor(n_iter=2000)
clf.fit(X, y)
predictions = clf.predict(X_test)
print "Accuracy:", ms.accuracy_score(y_test,predictions)

Was sollte ich anders machen? Danke!

  • Können Sie erwägen, die Umwandlung der kontinuierlichen Werte in diskrete durch Rundung der kontinuierlichen Werte auf die nächste ganze Zahl mit der Funktion round. Finden Sie in diesem link für eine ähnliche Frage beantwortet von natbusa
  • Dutse richtig ist. Oder Sie können y_preds = y_preds > 0.5 zu ändern, zu diskrete. Hier können Sie Ihre eigene Schwelle.
InformationsquelleAutor lte__ | 2016-05-21
Schreibe einen Kommentar