如何使用基于时间的拆分将数据拆分成列车并进行测试。
我知道火车测试是随机分开的,如何根据时间来分开。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
# this splits the data randomly as 67% test and 33% train
如何根据67%列车和33%试验的时间分割相同的数据集?
数据集具有列时间戳。
我试着寻找类似的问题,但不确定方法。
有人能简单解释一下吗
如果您有一个简单的数据集,其中每一行都是一个观测值(例如,分类问题的非时间序列数据集),并且您希望将其拆分为train和test,则此函数将基于一列日期拆分为train和test:
参数
dates
实际上可以是任何类型的数组或序列,您可以使用它们对数据进行排序。在您的例子中,您应该调用:
X_train, X_test, y_train, y_test = train_test_split_sorted(X, y, 0.333, TimeStamp)
,其中TimeStamp
是数组或列,您可以在其中获得有关每个观察的时间戳的信息。在时间序列数据集上,数据分割以不同的方式进行。See this link了解更多信息。或者,您可以从scikit学习包中尝试TimeSeriesSplit。所以主要的想法是,假设根据时间戳有10个数据点。现在分裂将如下:
等等等等。您可以查看上面链接中显示的示例,以更好地了解TimeSEriesSPlit在sklearn中的工作方式
更新 如果您有一个单独的时间列,您可以简单地基于该列对数据进行排序,并应用上面提到的timeSeriesSplit来获取拆分。
为了确保最终拆分中67%的培训和33%的测试数据,请指定拆分次数如下:
示例
输出:
一个简单的方法。。
第一:按时间排序
第二:
这使得列车设置了前67%的数据,而测试设置了其余33%的数据。
相关问题 更多 >
编程相关推荐