我有一个数据集,我想根据列值拆分数据集。在每次迭代中,训练集将包含所有数据,但属于2个值的数据除外,这些数据将保留给测试集。
例如,我们有一个列x
,其值为a
,b
,c
,d
,e
和{{1 }}。
目前,我正在进行手动选择,但由于我想尝试每种可能的组合,因此我不确定如何做到最好。
f
如何更改此代码以考虑所有可能的组合?
我还希望能够打印这些组合,以查看用于训练和测试集的组合。
答案 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应该可以工作。