我将连续的时间序列(按小时计算的功耗)分割为训练/验证/测试,但在分割的数据帧中发现了意外的间隙。可能是什么原因?
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
我似乎没有找到差距。您可能想尝试 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
检查每组的大小
希望这有帮助。