如何根据列值将数据拆分为训练和测试并混洗组合?

时间:2018-08-13 14:02:18

标签: python pandas dataframe

我有一个数据集,我想根据列值拆分数据集。在每次迭代中,训练集将包含所有数据,但属于2个值的数据除外,这些数据将保留给测试集。

例如,我们有一个列x,其值为abcde和{{1 }}。

目前,我正在进行手动选择,但由于我想尝试每种可能的组合,因此我不确定如何做到最好。

f

如何更改此代码以考虑所有可能的组合?

我还希望能够打印这些组合,以查看用于训练和测试集的组合。

2 个答案:

答案 0 :(得分:2)

未经测试,但是如何使用itertools.combinations,如:

for holdouts in itertools.combinations(df['x'].unique(), 2):
    print(holdouts)
    train = df[~df['x'].isin(holdouts)]
    test = df[df['x'].isin(holdouts)]

您可以通过执行mask = df['x'].isin(holdouts)

保存评估

请注意,对于布尔值建立索引,.loc不是必需的

答案 1 :(得分:0)

iteratetools.combinations应该可以工作。