Перейти к содержанию

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
mask = df["status"].eq("paid").fillna(False)
result = mask.astype(int).groupby(df["client_id"]).mean()

Условия

Pipeline создаёт условия автоматически:

  • min_category_fraction = 0.01 — минимальная доля категории и строк, соответствующих условию, во всей таблице.
  • derived_columns.max_condition_columns = 1 — максимум колонок в условии. При 2 допускается, например, status = 'paid' AND channel = 'web'.

Без условия mask равен True для всех строк.

Каталог формул · Count