如何基于python中的条件创建train_test_split

问题描述

我知道如何利用基本的train_test_split

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=123)

但是,如果我想将训练和测试集除以变量(在这种情况下为year),该怎么办。我希望所有year==2019都是我的测试集,而year<2019是我的训练集。我该如何更改上面的代码以实现这一目标?

解决方法

让我举例说明:
如果您的语料库有1000个数据点,并且您希望700/300用于训练/测试,请使用year == 2019查找数据点,将其移至语料库末尾,然后将其视为具有以下内容的测试数据:(假设200个数据点满足year == 2019条件)

X_test,y_test = X[800:1000],y[800:1000]

,例如,将300个数据点移到顶部后,就拥有year < 2019

X_train,y_train = X[0:300],y[0:300]

现在剩下的语料库(从300到800)重新定义X和Y,就像这样:

X = data.iloc[301:799]
Y = label.iloc[301:799]

,然后将train_test_split用于新的X和Y,并将新的X_test,y_test,X_train,y_train与先前的连接。