Python 从Kaggle生成验证集';s训练集

Python 从Kaggle生成验证集';s训练集,python,validation,data-science,kaggle,Python,Validation,Data Science,Kaggle,由于Kaggle提供了一个训练集和一个测试集,我想知道一种从这个训练集生成验证集(devset)的方法。 目标是有三套: -培训集+验证集=卡格尔的培训集 -测试集=卡格尔的测试集 事实上,验证集必须与测试集具有相同的分布。我想知道是否存在一种(简单的)方法来生成一个符合此属性的验证集。我正在用Python 3编写代码,如果这能帮助您回答我的问题的话 非常感谢将训练数据拆分为训练集和验证集的最简单方法是使用sklearn中的训练测试拆分方法 from sklearn.model_selectio

由于Kaggle提供了一个训练集和一个测试集,我想知道一种从这个训练集生成验证集(devset)的方法。 目标是有三套:
-培训集+验证集=卡格尔的培训集
-测试集=卡格尔的测试集

事实上,验证集必须与测试集具有相同的分布。我想知道是否存在一种(简单的)方法来生成一个符合此属性的验证集。我正在用Python 3编写代码,如果这能帮助您回答我的问题的话


非常感谢

将训练数据拆分为训练集和验证集的最简单方法是使用sklearn中的训练测试拆分方法

from sklearn.model_selection import train_test_split
train_set, val_set = train_test_split(train_data, test_size=0.2)
然而,数据的分割是随机的,不能保证类或其他特征的均匀分布。假设我们希望根据目标标签的分布进行拆分(例如-train_data['y'])。那么我们应该使用分层的shufflesplit

from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2)
for train_index, val_index in split.split(train_data, train_data['y']):
    strat_train_data = train_data.loc[train_index]
    strat_val_data = train_data.loc[val_index]

在这种情况下,训练数据将分为训练集和val集,并且“y”在
strat\u train\u data
strat\u val\u data
中的分布相似。如果我们希望根据特定特征(如性别、收入组等)进行分割,请相应地替换split()函数的y参数。

这是否有帮助?不是真的。功能训练测试分割允许我们随机生成训练集和验证集。但是谢谢你的回答。我不确定它是否允许我生成与测试集具有相同分布的验证集。也许我应该定义我对“拥有相同的分布”的理解。假设我们有N个特征x1,x2,…,xN。假设两个数据集A和B具有相同的分布,当且仅当A(xk)和B(xk)对于所有1具有相同的分布