Прогнозирование временных рядов с помощью 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