提前预测天真

时间:2017-08-28 20:42:18

标签: python pandas statistics

我想用我拥有的数据集做一个天真的预测,我正在努力做到这一点。

    values = DataFrame(dataset.iloc[:, -1])
    Y_naive = pd.concat([values.shift(24), values], axis=1)
    Y_naive.columns = ['t', 't+1']
    x = Y_naive.values

我基本上拥有的是每小时数据,我想比较关于其表现形式{0,1}的最后一栏。由于我想将这个天真的预测与其他日前​​预测因子进行比较,我想使用前一天的数据(轮班(24))来预测实际的表现形式。 天真的预测:

    def naive_forecast(x):
        return x
    predictions = list()
    for x in test_x:
        yhat = naive_forecast(x)
        predictions.append(yhat)

对我来说,目前还不清楚如何进行映射过程。这意味着如何放弃这样的论点,即对于二进制分类测试,我想使用24小时前的数据来迭代地将数据映射到整个数据集的数据上。 (https://en.wikipedia.org/wiki/Forecasting#Na.C3.AFve_approach

1 个答案:

答案 0 :(得分:2)

如果没有更清晰地了解原始数据帧的外观,这将很难回答。什么是值的列和行?

我会尽可能地回答你的问题。天真的预测只是前一时期的价值。假设您的原始数据框设置为

with-block

朴素预测列将只是原始值转移到适当的时间索引。用df作为

的简单例子
    index   'original'
    time1     x1
    time2     x2
    time3     x3

转移一天:

    index                            'original'
    2017-08-19 17:49:08.102868         0
    2017-08-20 17:49:08.109869         1
    2017-08-21 17:49:08.109869         2
    2017-08-22 17:49:08.109869         3

返回

    naive_prediction = df.shift(1, freq=datetime.timedelta(days=1))
    naive_prediction.columns = ['naive_prediction']

现在我们只需要merge这两个数据帧,而naive_prediction列将包含每个索引位置的相应值。

    index                       'naive_prediction'
    2017-08-20 17:49:08.102868         0
    2017-08-21 17:49:08.109869         1
    2017-08-22 17:49:08.109869         2
    2017-08-23 17:49:08.109869         3

哪个应返回

的final_df
    final_df = df.merge(naive_prediction, how="outer", left_index=True, right_index=True)

其中每个索引位置的值等于前一个索引位置的原始值。