Uplift@k по результатам рандомизированной кампании
Напишите uplift_at_k(rows, k).
rows— список кортежей(score, treatment, outcome): прогноз uplift-модели, 1/0 — получил ли клиент воздействие (назначено случайно), 1/0 — целевое действие.- Отсортируйте клиентов по
scoreпо убыванию (при равенстве сохраните исходный порядок) и возьмите первыеceil(k × n)клиентов, гдеk— доля от 0 до 1. - Uplift@k = доля откликнувшихся среди получивших воздействие в топе − доля среди не получивших в топе. Округлите до 4 знаков.
- Если в топе нет клиентов одной из групп, верните
None.
заготовка решения
import math
def uplift_at_k(rows, k):
# ваш код
return None