如何在Python中拆分数据集以进行训练,测试和验证?

问题描述

我有一个像这样的数据集

my_data= [['Manchester','23','80','CM','Manchester','22','79','RM','19','76','LB'],['Benfica','26','77','CF','Benfica','74','CDM','17','70','RB'],['Dortmund','24','75','Dortmund','18','AM','16','69','LM']
]

我知道使用sklearn.cross_validation中的train_test_split,并且我已经尝试过

from sklearn.model_selection import train_test_split
train,test = train_test_split(my_data,test_size = 0.2)

结果仅分为测试和训练。我希望将其分为具有随机数据的3个单独的集合。

预期: 测试,训练,有效

解决方法

您可以简单地使用train_test split两次

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

 X_train,X_val,y_val 
    = train_test_split(X_train,test_size=0.25,random_state=1)

还可以找到答案here

,

可以使用numpy + pandas来实现,请参见下面的脚本0.6 + 0.2 + 0.2

train_size = 0.6
validate_size = 0.2
train,validate,test = np.split(my_data.sample(frac=1),[int(train_size * len(my_data)),int((validate_size + train_size) * len(my_data))])