2015-05-20 18 views
5

Sono un novizio completo delle previsioni basate su SVM e quindi ho bisogno di una guida qui. Sto cercando di impostare un codice Python per la previsione di serie temporali, usando le librerie SVM di scikit-learn.Previsione delle serie temporali con scikit learn

I miei dati contengono valori X a intervalli di 30 minuti per le ultime 24 ore e devo prevedere y per il timestamp successivo. Ecco quello che ho creato -

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

Ma per questa previsione di lavorare, ho bisogno del valore X per la prossima timestamp, che non è disponibile. Come faccio a impostare questo per prevedere i futuri valori y?

risposta

3

È necessario utilizzare SVR questo modo:

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

Quindi, il problema qui è che avete un training set, ma non un insieme di test per misurare la precisione del modello. L'unica soluzione è quella di utilizzare una parte della vostra formazione impostato come prova impostato ex: 80% for train 20% for test

EDIT

Spero bene capito cosa vuoi da tuoi commenti.

Così si vuole prevedere la prossima etichetta per l'ultima ora nel vostro set treno, qui è un esempio di ciò che si vuole:

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

Che ancora non mi aiuta. Anche se ho diviso il mio set di allenamento, non ho un valore X per il punto che voglio prevedere in futuro. – Raj

+0

qual è il punto che vuoi pronosticare in futuro? – farhawa

+1

Il prossimo punto delle serie temporali, cioè al tempo t, voglio pronosticare il valore y in t + 1 – Raj