我想用我拥有的数据集做一个天真的预测,我正在努力做到这一点。
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)
答案 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)
其中每个索引位置的值等于前一个索引位置的原始值。