Fraction
Fraction()
Доля строк объекта, удовлетворяющих условию. В знаменателе — все строки объекта, включая не прошедшие условие.
Использование
transactions — обучающая таблица событий с бинарным target, одинаковым внутри каждого клиента.
from featminer import one_to_many_pipeline
from featminer.formulas import Fraction
features = one_to_many_pipeline(
df=transactions,
aggregation_key="client_id",
target_col="target",
formulas=(Fraction(),),
)
Fraction() задаёт способ расчёта; pipeline подбирает совместимые колонки и условия. features содержит признаки, прошедшие отбор по таргету.
Пример результата
Таблица платежей df; client_id — ключ объекта.
| client_id | status | |
|---|---|---|
| 0 | 1 | paid |
| 1 | 1 | failed |
| 2 | 1 | paid |
| 3 | 2 | failed |
| 4 | 2 | None |
mask — результат условия WHERE status = 'paid': True для подходящих строк, иначе False. Неопределённый результат считается False.
Значение этого кандидата по клиентам:
| Fraction | |
|---|---|
| client_id | |
| 1 | 0.666667 |
| 2 | 0.000000 |
Эквивалентный расчёт на pandas
Условия
Pipeline создаёт условия автоматически:
min_category_fraction=0.01— минимальная доля категории и строк, соответствующих условию, во всей таблице.derived_columns.max_condition_columns=1— максимум колонок в условии. При2допускается, например,status = 'paid' AND channel = 'web'.
Без условия mask равен True для всех строк.