使用 scikit learn 进行时间序列预测

问题描述 投票:0回答:1

我正在尝试使用 scikit-learn 的 SVM 模型来设置 Python 代码来预测时间序列。

我的数据包含过去 24 小时内以 30 分钟为间隔的 X 值,我需要预测下一个时间戳的 y。这是我设置的 -

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

但是为了使这个预测发挥作用,我需要下一个时间戳的 X 值,但该值不可用。我如何设置它来预测未来的 y 值?

python scikit-learn time-series svm forecasting
1个回答
4
投票

你应该这样使用

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)

所以,这里的问题是你有一个训练集,但没有一个测试集来衡量你的模型准确性。唯一的解决方案是使用训练集的一部分作为测试集,例如80% 用于训练,20% 用于测试。

编辑(评论后)

因此,您想预测训练集中最后一小时的下一个标签,以下是您想要的示例:

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
© www.soinside.com 2019 - 2024. All rights reserved.