2015-05-20 18 views
5

Jestem kompletnym początkującym dla prognozowania opartego na SVM i dlatego szukam tutaj wskazówek. Próbuję ustawić kod Pythona do prognozowania szeregów czasowych, przy użyciu bibliotek SVM nauki scikit.Prognozy szeregów czasowych z scikit uczą się

Moje dane zawierają wartości X w przedziale 30 minut w ciągu ostatnich 24 godzin i muszę przewidzieć y dla następnego znacznika czasu. Oto co mam założyć -

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

Ale za to przewidywania pracować, muszę wartość X dla następnego znacznika czasu, który nie jest dostępny. Jak ustawić to, aby przewidzieć przyszłe wartości y?

Odpowiedz

3

Należy użyć SVR ten sposób:

# 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) 

Więc tu jest problem, że masz szkolenie ustawiona, ale nie test ustawiony do pomiaru dokładności modelu. Jedynym rozwiązaniem jest użycie część treningu ustawiony jako testowy zestaw ex: 80% for train 20% for test

EDIT

nadzieję, że dobrze zrozumiał, co chcesz od swoich komentarzach.

Więc chcesz przewidzieć następną etykietę ostatniej godziny w pociągu, tutaj jest przykładem tego, co chcesz:

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

To nadal mi nie pomoże. Nawet jeśli podzielę swój zestaw treningowy, nie mam wartości X dla punktu, który chcę przewidzieć w przyszłości. – Raj

+0

Jaki jest cel, który chcesz przewidzieć w przyszłości? – farhawa

+1

Następny punkt w szeregach czasowych, tj. W czasie t, chcę przewidzieć wartość y w t + 1 – Raj