WindowFraction
WindowFraction(*, days: int)
Доля событий с выбранным условием в окне.
Использование
transactions — обучающая таблица событий с бинарным target, одинаковым внутри каждого клиента.
from featminer import RelativeTime, one_to_many_pipeline
from featminer.formulas import WindowFraction
features = one_to_many_pipeline(
df=transactions,
aggregation_key="client_id",
target_col="target",
event_times=("age_days",),
relative_time_columns=(
RelativeTime("age_days", unit="day", ascending=False),
),
formulas=(WindowFraction(days=30),),
)
WindowFraction(days=30) задаёт способ расчёта; pipeline подбирает совместимые колонки и условия. features содержит признаки, прошедшие отбор по таргету. age_days — возраст события в днях; меньший возраст означает более позднее событие (ascending=False).
Пример результата
Таблица событий df: client_id — ключ объекта, age_days — возраст события в днях относительно момента прогноза (0 — этот момент). Расчёт без дополнительной фильтрации строк. status — статус платежа.
| client_id | age_days | status | |
|---|---|---|---|
| 0 | 1 | 40 | paid |
| 1 | 1 | 30 | paid |
| 2 | 1 | 10 | failed |
| 3 | 1 | 0 | paid |
Значение этого кандидата по клиентам:
| WindowFraction | |
|---|---|
| client_id | |
| 1 | 0.666667 |
Эквивалентный расчёт на pandas
days — размер окна; обе границы включены. window — строки внутри окна. flag — индикатор условия status = 'paid': True или False. В знаменателе — все события клиента в окне, включая flag=False.
Параметры
| Параметр | Описание |
|---|---|
days |
Размер окна, положительное целое число дней. Обязательный. |
| Стандартные значения | 1, 7, 30, 90, 365, 730, 1095 дней. |
Обязательные параметры не имеют значения по умолчанию; стандартные значения используются в готовых наборах.
Условия генерируются автоматически: min_category_fraction=0.01 отсеивает редкие категории и условия по доле строк во всей таблице; derived_columns.max_condition_columns=1 ограничивает число колонок в условии. Подробнее об условиях.