Прогнозирование временных рядов с помощью scikit learn

Я - новичок в прогнозировании на основе SVM и поэтому ищу здесь несколько советов. Я пытаюсь настроить код Python для прогнозирования временных рядов, используя SVM-библиотеки scikit-learn.

Мои данные содержат значения X с 30-минутным интервалом за последние 24 часа, и мне нужно предсказать y для следующей отметки времени. Вот что я настроил -

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

Но чтобы это предсказание сработало, мне нужно значение X для следующей временной метки, которая недоступна. Как мне установить это, чтобы предсказать будущие значения y?

1 ответ

Вы должны использовать SVR сюда:

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

Итак, проблема здесь в том, что у вас есть тренировочный набор, а не тестовый набор для измерения точности вашей модели. Единственное решение - использовать часть вашего тренировочного набора в качестве тестового набора. ex: 80% for train 20% for test

РЕДАКТИРОВАТЬ

Надеюсь, я хорошо понял, что вы хотите от ваших комментариев.

Итак, вы хотите предсказать следующую метку за последний час в вашем наборе поездов, вот пример того, что вы хотите:

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
Другие вопросы по тегам