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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genauigkeit ist eine Klassifikation, die Metrik. Sie können es nicht verwenden, mit einer regression. Sehen die Dokumentation für Informationen über die verschiedenen Metriken.
clf.predict(X_test)
gibt mir unterschiedliche Leistung als das original, wie soll ich es selbst benutzen? Das hat mich verwirrt.Genauigkeit-score ist nur für die Einstufung Probleme. Für die regression Probleme, die Sie nutzen können: R2-Score, MSE (Mean Squared Error) RMSE (Root Mean Squared Error).