Как можно выполнить стратифицированную выборку 1: 1 в python?
Предположим, что кадр данных Pandas df
сильно несбалансирован. Он содержит бинарную группу и несколько столбцов категориальных подгрупп.
df = pd.DataFrame({'id':[1,2,3,4,5], 'group':[0,1,0,1,0], 'sub_category_1':[1,2,2,1,1], 'sub_category_2':[1,2,2,1,1], 'value':[1,2,3,1,2]})
display(df)
display(df[df.group == 1])
display(df[df.group == 0])
df.group.value_counts()
Для каждого члена основного group==1
мне нужно найти единственное совпадение group==0
с.
StratifiedShuffleSplit
от scikit-learn вернет только случайную часть данных, а не совпадение 1:1.