Scikit学习系列分体式列车测试

时间:2016-09-27 06:03:31

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

我的数据包含排序顺序的日期。

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

请看一下给定的例子:

假设我们按日期提供数据:

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"])

对我不起作用!

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

如果您坚持所有测试数据都比所有训练数据更新,那么只有一种方法可以实现所需的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):]

并没有随意的事情。