如何将数据集分为训练,测试和验证目的

时间:2019-05-30 10:16:53

标签: python scikit-learn

我的数据框包括442亿行。我想将其分为3组(训练,测试和验证)。这样就不会重叠任何点。

我已经完成(第一个过程)-

train, valid, test = np.split(df.sample(frac=1), [int(.8*len(df)), int(.95*len(df))])

检查是否存在任何值-

len(valid[valid.id.isin(test.id)])
len(train[train.id.isin(test.id)])

第二个过程-

train = df[(np.random.rand(len(df)) < 0.8)]
valid = df[(np.random.rand(len(df)) > 0.8) & (np.random.rand(len(df)) < 0.95)]
test = df[(np.random.rand(len(df)) > 0.95) & (np.random.rand(len(df)) < 1)]

但是据我的理解,以上两种方法并不完美。谁能帮我

1 个答案:

答案 0 :(得分:1)

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=1)

X_val, X_test, y_val, y_test = train_test_split(X_test, y_test, test_size=0.25, random_state=1)

第一行将数据集分成80:20的比例。您可以使用相同的功能将20%的数据分成15:5。