Pythonで1:1の成層サンプリングを実行するにはどうすればよいですか?
Pandas Dataframedf
が非常に不均衡であると想定します。これには、バイナリ グループとカテゴリ サブグループの複数の列が含まれます。
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()
メインのメンバーごとに、withgroup==1
の 1 つの一致を見つける必要がありますgroup==0
。
scikit-learn からの AStratifiedShuffleSplit
は、1:1 の一致ではなく、データのランダムな部分のみを返します。