【问题标题】:Scikit learn split train test for seriesScikit 学习系列拆分训练测试
【发布时间】:2017-02-04 15:19:27
【问题描述】:

我有一个数据,其中包含按排序顺序排列的日期。

我想将给定的数据拆分为训练集和测试集。 但是,我必须以测试必须比训练集更新的方式拆分数据。

请看给定的例子:

假设我们有按日期排列的数据:

1, 2, 3, ..., n.

从 1 到 n 的数字代表天数。

我想将其分成 20% 的数据作为训练集和 80% 的数据作为测试集。

Good results:

1) train set = 1, 2, 3, ..., 20

   test set = 21, ..., 100


2) train set = 101, 102, ... 120

    test set = 121, ... 200

我的代码:

train_size = 0.2
train_dataframe, test_dataframe = cross_validation.train_test_split(features_dataframe, train_size=train_size)                          

train_dataframe = train_dataframe.sort(["date"])
test_dataframe = test_dataframe.sort(["date"])

不适合我!

有什么建议吗?

【问题讨论】:

    标签: pandas scikit-learn cross-validation sklearn-pandas


    【解决方案1】:

    如果您坚持所有测试数据都比所有训练数据更新,那么只有一种方法可以实现所需的 20/80 拆分。

    n = features_dataframe.shape[0]
    train_size = 0.2
    
    features_dataframe = features_dataframe.sort_values('date')
    train_dataframe = features_dataframe.iloc[:int(n * train_size)]
    test_dataframe = features_dataframe.iloc[int(n * train_size):]
    

    而且它没有任何随机性。

    【讨论】:

      猜你喜欢
      • 2016-12-03
      • 2015-06-08
      • 2019-04-10
      • 2020-07-24
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2021-07-26
      • 2021-06-20
      相关资源
      最近更新 更多