2015-05-20 7 views
5

Ich bin ein Neuling auf SVM-basierte Prognosen und so auf der Suche nach einigen Leitlinien hier. Ich versuche, einen Python-Code für die Vorhersage einer Zeitreihe einzurichten, indem ich SVM-Bibliotheken von scikit-learn verwende.Zeitreihenprognose mit scikit lernen

Meine Daten enthalten X-Werte im 30-Minuten-Intervall für die letzten 24 Stunden, und ich muss Y für den nächsten Zeitstempel vorhersagen. Hier ist, was ich aufgebaut -

SVR(kernel='linear', C=1e3).fit(X, y).predict(X) 

Aber für diese Prognose zu arbeiten, ich brauche den X-Wert für den nächsten Zeitstempel, die nicht verfügbar ist. Wie stelle ich das ein, um zukünftige y-Werte vorherzusagen?

Antwort

3

sollten Sie SVR auf diese Weise verwenden:

# prepare model and set parameters 
svr_model = SVR(kernel='linear', C=1e3) 
# fit your model with the training set 
svr_model.fit(TRAINIG_SET, TAINING_LABEL) 
#predict on a test set 
svr_model.predict(TEST_SET) 

So, hier das Problem ist, dass Sie eine Ausbildung haben festgelegt, aber keinen Test, geben Sie Ihre Modellgenauigkeit zu messen. Die einzige Lösung ist, einen Teil Ihrer Ausbildung gesetzt zu verwenden als Test ex: 80% for train 20% for test

EDIT

Hoffnung setzte ich gut verstanden, was Sie von Ihren Kommentaren mögen.

So Sie das nächste Etikett für die letzte Stunde im Zugverband vorhersagen wollen, hier ist ein Beispiel dafür, was Sie wollen:

from sklearn.svm import SVR 
import random 
import numpy as np 

''' 
data: the train set, 24 elements 
label: label for each time 
''' 

data = [10+y for y in [x * .5 for x in range(24)]] 
label = [z for z in [random.random()]*24] 

# reshaping the train set and the label ... 

DATA = np.array([data]).T 
LABEL = np.array(label) 

# Declaring model and fitting it 

clf = SVR(kernel='linear', C=1e3) 
clf.fit(DATA, LABEL) 

# predict the next label 

to_predict = DATA[DATA[23,0]+0.5] 

print clf.predict(to_predict) 

>> 0.94407674 
+0

Das noch hilft mir nicht. Selbst wenn ich meinen Trainingssatz aufspalte, habe ich keinen X-Wert für den Punkt, den ich in der Zukunft vorhersagen möchte. – Raj

+0

Was ist der Punkt, den Sie in der Zukunft vorhersagen möchten? – farhawa

+1

Der nächste Punkt in der Zeitreihe, dh zum Zeitpunkt t, ich möchte y-Wert bei t + 1 – Raj