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

5
我是一名完全不了解基于SVM的预测的新手,所以在这里寻求一些指导。我正在尝试使用scikit-learn的SVM库设置Python代码来预测时间序列。
我的数据包含过去24小时每30分钟的X值,并且我需要预测下一个时间戳的y值。这是我设置的内容 -
SVR(kernel='linear', C=1e3).fit(X, y).predict(X)

但是要让这个预测起作用,我需要下一个时间戳的X值,但这些值目前不可用。我该如何设置以预测未来的Y值?

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

那仍然不能帮助我。即使我分割了我的训练集,我也没有未来要预测的点的X值。 - Raj
1
时间序列中的下一个点,即在时间t,我想预测t+1时刻的y值。 - Raj
1
请解释一下您的请求。您的训练集和标签是什么?您想要预测什么?即使我怀疑您可能混淆了一些概念,但一个简单的例子可以帮助我回答您的问题。 - farhawa
这是我的样本数据 - (上午10点,2.3),(上午10:30,3.2),....(晚上10点,4.0)...所以在晚上10点,我想预测10:30pm的值。希望这样能澄清。 - Raj
@Raj,是的,它澄清了...我编辑了我的答案,希望它能有所帮助。 - farhawa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接