时间序列分析的训练和测试拆分

数据挖掘 Python 时间序列 熊猫
2022-03-08 16:24:19

我需要以下代码的帮助:

dataset.tail(4)

                Date    Close
    1274    1/24/2019   4871.96
    1275    1/25/2019   4925.82
    1276    1/28/2019   4888.58
    1277    1/29/2019   4928.18

我想使用以下方法将我的数据集拆分为训练和测试:

training_data=dataset[dataset.Date<datetime(2018, 1, 1)]

但我收到以下错误:

TypeError                                 
Traceback (most recent call last)
<ipython-input-74-904bd8b45617> in <module>()
----> 1 training_data=dataset[dataset.Date<datetime(2018, 1, 1)]
      2 training_data.tail(4)

TypeError: 'module' object is not callable
3个回答

您的代码看起来不完整,但您绝对可以尝试以下方法来拆分数据集:

X_train, X_test, y_train, y_test = train_test_split(dataset, 
                                                    y,
                                                    test_size=0.3, 
                                                    shuffle=False)

注意:y 将是您的因变量的系列对象。

由于这个原因,使用train_test_splitwithshuffle=True不是一个好的做法,应该严格避免。

或者,对于时间序列,您可以使用并在此处TimeSeriesSplit()查找实现

看来您正在导入datetime模块,然后使用它来比较日期。无法应用模块本身,而是必须访问其功能之一,例如:

training_data=dataset[dataset.Date<datetime.datetime(2018, 1, 1)]

另一种选择是:

training_data=dataset[pd.to_datetime('2018-01-01')]

您可以保持代码不变,只需更改导入:

from datetime import datetime
training_data=dataset[dataset.Date<datetime(2018, 1, 1)]