【问题标题】:Time series forecasting with scikit learn使用 scikit learn 进行时间序列预测
【发布时间】:2015-08-01 12:28:13
【问题描述】:

我是基于 SVM 的预测的完全新手,因此在这里寻求一些指导。我正在尝试使用 scikit-learn 的 SVM 库设置用于预测时间序列的 python 代码。

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

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

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

【问题讨论】:

    标签: python time-series scikit-learn forecasting


    【解决方案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

    编辑

    希望我能很好地理解您对 cme​​ts 的要求。

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

    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 值。
    • 时间序列中的下一个点,即时间t,我想预测t+1时的y值
    • 请解释您的要求。你的训练集和标签是什么,你想要预测什么?一个简单的例子可以帮助我回答你的问题,即使我怀疑你混淆了一些概念
    • 这是我的示例数据 - (10am,2.3), (10:30am,3.2),....(10pm,4.0)...所以在晚上 10 点,我想预测晚上 10 点 30 分。希望这可以澄清
    • @Raj,是的,它澄清了.. 我编辑了我的答案希望它会有所帮助
    猜你喜欢
    • 2017-05-09
    • 2014-01-17
    • 2020-05-07
    • 2021-10-26
    • 2013-05-31
    • 2021-08-03
    • 2018-01-14
    • 2018-01-09
    • 2020-11-05
    相关资源
    最近更新 更多