有人提出了一种将数据集分成三组的解决方案。我想知道在这种情况下标签在哪里。或如何设置标签。
train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))])
答案 0 :(得分:4)
我将根据评论回答问题:
使用此方法进行拆分:
DoWorkEventArgs
您将获得3个不同的对象,它们由train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))])
的{{1}}的前60%数据组成,该数据对应于df
的60%和80%之间的间隔最后20%对应于train
中的80%-100%。标签在这些数据框中。
在validate
中,您传递了两个对象X和Y,这两个对象以前很可能是从原始数据集中拆分出来的,然后返回4个对象,其中2个对应于train,两个对应于test。请记住以下几点:首先将数据集拆分为test
和train_test_split
,然后将这两个对象拆分为train和test。
如果使用independent variables
,则要反过来,首先要将数据集分成3个对象,进行训练,验证和测试,然后将它们分别分成explained/target variable
(通常称为X和np.split
被称为Y。您正在执行相同的拆分,只是顺序相反。
但是,请记住,通过传递independent variables
的索引,这意味着拆分不是随机执行的,而使用target variable
则可以得到随机训练和测试子集。另一方面,np.split
可以提供更大的灵活性,例如,正如您通过示例所证明的那样,可以创建两个以上的子集。
答案 1 :(得分:1)
尝试一下。将train_test_split之一的输出输入到第二个中作为输入
import numpy as np
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4)
X_test, X_validate, y_test, y_validate = train_test_split(X_test, y_test, test_size=0.5)
该函数将2个数组随机拆分为4个数组,而test_size确定分配给测试输出与序列的拆分的大小。输入y是构建机器学习模型的目标,输入X是模型的特征。如果要将它们组合在一起,则只需合并等效的X和y输出。