У меня есть набор данных для двоичной классификации, который выглядит следующим образом:
group_id pos_in_group ... target
... ... ...
172 0 0
172 1 0
172 2 1
172 3 0
172 ... ...
172 719 0
Так получилось, что в группе только одна запись может иметь target == 1
, и они с большей вероятностью произойдут на первых позициях. Но модель, используемая для предсказания, не учитывает это. Таким образом, в одной группе может быть несколько записей с прогнозом target == 1
.
group_id pos_in_group ... target
... ... ...
172 0 0
172 1 0
172 2 1
172 3 0
172 4 1
172 5 0
172 ... ...
172 719 0
С df[df['target'] == 1].groupby(['group_id'])['pos'].min()
я могу получить первое вхождение target == 1
в каждой группе. Как я могу использовать это, чтобы назначить target == 0
всем записям с более высоким положением в каждой группе?
Кроме того, как с помощью 1 / df.groupby(['group_id'])['target'].sum()
можно масштабировать столбец в каждой группе по разному значению?