Pandas 时间序列分割显示出差距

问题描述 投票:0回答:1

我将连续的时间序列(按小时计算的功耗)分割为训练/验证/测试,但在分割的数据帧中发现了意外的间隙。可能是什么原因?

train_split_end = round(len(df) * (1 - val_ratio))
val_split_end = len(df)

train = df.iloc[:train_split_end]
val = df.iloc[train_split_end:val_split_end]

分割本身是连续的

train.index[-1]
Out[26]: Timestamp('2014-07-26 23:00:00')
val.index[0]
Out[27]: Timestamp('2014-07-27 00:00:00')

但是这些图显示了 train['MW'].plot() 和 val['MW'].plot() 内部的间隙,这些间隙在原始 df 中不存在。 数据集是https://www.kaggle.com/datasets/robikscube/hourly-energy-conclusion - AEP_hourly.csv

感谢您的建议!

python pandas dataframe datetime
1个回答
0
投票

我似乎没有找到差距。您可能想尝试 sklearns 训练/测试分割方法。为此,我们首先导入必要的包并读取数据集。

from sklearn.model_selection import train_test_split

df = pd.read_csv('AEP_hourly.csv', index_col=[0])

下一步是将数据分为训练集和测试集。简单地使用随机状态值,以便结果可以重现。您可以在 https://scikit-learn.org/stable/modules/ generated/sklearn.model_selection.train_test_split.html 阅读有关参数的更多信息。这里的测试大小已设置为数据帧的 20%。

X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)

如果您想进一步拆分训练和测试以包含验证集,那么您可以在训练数据集上重复上述步骤。下面将从训练集中另外取出 20% 来创建另一个验证集。

X_train, X_val = train_test_split(X_train, test_size=0.2, random_state=42)

然后您可以使用

X_train.shape
X_val.shape
X_test.shape

检查每组的大小

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.