2016-05-21 4 views
0

Ich versuche, einige Daten mit SGDClassifier zu modellieren, aber aus irgendeinem Grund bekomme ich schreckliche Genauigkeit. Ich bin ziemlich neu, also verstehe ich nicht wirklich warum.SciKit Learn - Schlechte SGDClassifier Genauigkeit

Hier ist mein Code:

from sklearn.preprocessing import StandardScaler 
import numpy as np 
from sklearn.linear_model import SGDClassifier 
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() 

scaler = StandardScaler() 
scaler.fit(X) 
X = scaler.transform(X) 
X_test = scaler.transform(X_test) 

clf = SGDClassifier(loss="hinge", alpha=0.01, n_iter=1000, fit_intercept=True) 
clf.fit(X, y)  

predictions = clf.predict(X_test) 
print "Accuracy:", ms.accuracy_score(y_test,predictions) 

Die Genauigkeit gedruckt ist etwa 0,38, was wirklich schlecht ist. Meine Daten sehen so aus:

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

Und ich habe 200 000 + Zeilen von Daten.

Was soll ich sonst tun? Die Daten sind skaliert, so dass dies kein Problem darstellen sollte, und das Modell sollte auch nach 1000 Iterationen konvergieren. Vielen Dank!

+0

Vielleicht sind Ihre Daten schwer vorherzusagen. Was lässt Sie glauben, dass Sie eine höhere Genauigkeit erreichen können? – BrenBarn

Antwort

1

Sie können GridSearchCV verwenden, um die Parameter Ihres SGD-Klassifizierers zu optimieren. Gehen Sie auch durch sklearn.feature_selection, um die besten Funktionen zu erhalten.

Verwandte Themen