0
グループ(grp列)に基づいて時系列クロスバリデーションを行いたい。以下のサンプルデータでは、温度が、私はこのコードを使用してGRPに基づいていくつかのラグの機能を追加するために滑走していますtimeseriesデータの階層化されたクロス検証
import numpy as np
import pandas as pd
timeS=pd.date_range(start='1980-01-01 00:00:00', end='1980-01-01 00:00:05',
freq='S')
df = pd.DataFrame(dict(time=timeS, grp=['A']*3 + ['B']*3, material=[1,2,3]*2,
temperature=['2.4','5','9.9']*2))
grp material temperature time
0 A 1 2.4 1980-01-01 00:00:00
1 A 2 5 1980-01-01 00:00:01
2 A 3 9.9 1980-01-01 00:00:02
3 B 1 2.4 1980-01-01 00:00:03
4 B 2 5 1980-01-01 00:00:04
5 B 3 9.9 1980-01-01 00:00:05
変数の私の目標です。私はsklearn sklearn.model_selection.TimeSeriesSplitからこの機能を使用することができ、クロス検証を行う際に
df.groupby("grp")['temperature'].shift(-1)
0 5
1 9.9
2 NaN
3 5
4 9.9
5 NaN
Name: temperature, dtype: object
私は今の問題はあるが、それはグループの影響を考慮に入れていません。誰も私はどのようにグループごとのCV分割を行うことができます(層別分割のような)私に教えてもらえますか? xvboost.cvを使ってcvを使ってみましょう。
編集:グループごとに時間が変更されます。グループ