2017-08-28 12 views
0

私が持っているデータセットで素朴な予測をしたいと思います。ナイーブ予測日前

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}に関する最後の列を比較したい時間単位のデータです。この素朴な予測と他の前向き予測とを比較したいので、私は実際の現れを予測するために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

答えて

2

これは、元のデータフレームがどのように見えるかをより明確に把握する必要があります。値の列と行は何ですか?

私はできる限りあなたの質問に答えるために刺すでしょう。ナイーブな予測は前の期間の単なる値です。オリジナルは、適切な時間インデックスにシフトして元のデータフレームと仮定すると、単に値になります

index 'original' 
    time1  x1 
    time2  x2 
    time3  x3 

ナイーブ予測の欄のように設定されています。 DF

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 

としては、1日でシフトの簡単な例では:

naive_prediction = df.shift(1, freq=datetime.timedelta(days=1)) 
    naive_prediction.columns = ['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 

今、私たちはただmergeこれら二つのデータフレームを必要とし、naive_prediction列が含まれています各インデックス位置の適切な値。各インデックス位置の値が以前のインデックス位置の元の値に等しい

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

のfinal_dfを返すべき

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