簡體   English   中英

如何拆分時間數據(格式為yyyy-mm-dd hh:mm:ss)以測試和訓練集合?

[英]How to split time data (in format of yyyy-mm-dd hh:mm:ss) to test and train sets?

我有一個時間序列數據,其時間格式為“ yyyy-mm-dd hh:mm:ss ”。 我想將行分為訓練和測試集。 但是我嘗試執行此操作的所有方法都失敗了。

如何將以下數據拆分為測試集和訓練集:

DATE-TIME          TEMP     PRE
2018-08-4 15:18:49 209.3851 4045.4414
2018-08-4 15:18:50 209.3851 4045.4314
2018-08-4 15:18:51 209.3581 4045.4268
2018-08-4 15:18:52 209.3553 4045.4343
2018-08-4 15:18:53 209.3553 4045.4307
...

下面的代碼不起作用:

...
split_date = pd.Timestamp('2018-08-4 15:18:52')

train = data.loc[:split_date]
test = data.loc[split_date:]
...

我認為您的時間戳是經過排序的,因此您可以使用

split_date = pd.Timestamp('2018-08-4 15:18:52')

train = df[df['DATE-TIME'] < split_date]
test = df[df['DATE-TIME'] > split_date]

結果:

培養:

DATE-TIME   TEMP    PRE
0   2018-08-04 15:18:49 209.3851    4045.4414
1   2018-08-04 15:18:50 209.3851    4045.4314
2   2018-08-04 15:18:51 209.3581    4045.4268

測試:

DATE-TIME   TEMP    PRE
4   2018-08-04 15:18:53 209.3553    4045.4307

也許您必須先將columntype轉換為datetime格式:

df['DATE-TIME'] = pd.to_datetime(df['DATE-TIME'])

如果您的時間戳記是索引而不是數據幀的列,只需將df['DATE-TIME']替換為df.index

df.index = pd.to_datetime(df.index)

split_date = pd.Timestamp('2018-08-4 15:18:52')

train = df[df.index < split_date]
test = df[df.index > split_date]

或者,您可以查看sklearn TimeSeriesSplit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM