Инструменты инструментов - временные отсечки не регистрируют переменную индекса времени - PullRequest
0 голосов
/ 06 марта 2019

Я использую функциональные инструменты для создания ежемесячных агрегаций.

У меня есть игрушечные данные, состоящие из заявок на кредит (1000 ID_APPLICATION; 1000 TIME_APPLICATION) и транзакций 200 000 (-> ~ 200 транзакций на 1 человека; 1 транзакция имеет такую ​​информацию, как AMOUNT, TIME и другие, не требуется для этого примера).Столбец TIME состоит из ~ 200 раз для одного человека, в предыдущем году или более.

constants.py
____________
ID_APPLICATION_COLUMN = "ID_APPLICATION"
ID_TRANSACTIONS_COLUMN = "ID_TRANSACTION"
TIME_COLUMN = "TIME"
TIME_APPLICATION_COLUMN = "TIME_APPLICATION"
ENTITY_SET_NAME = "clients"
TRANSACTIONS_ENTITY_NAME = "transactions"
APPLICATIONS_ENTITY_NAME = "applications"
creation
____________
# we fill the entity_set with the dataframes, and say, which IDs are relevant for given DF
entity_set.entity_from_dataframe(entity_id=cnst.TRANSACTIONS_ENTITY_NAME,
                                    dataframe=transactions,
                                    index=cnst.ID_TRANSACTIONS_COLUMN,
                                    time_index=cnst.TIME_COLUMN)
entity_set.entity_from_dataframe(entity_id=cnst.APPLICATIONS_ENTITY_NAME,
                                    dataframe=applications,
                                    index=cnst.ID_APPLICATION_COLUMN,
                                    time_index=cnst.TIME_APPLICATION_COLUMN)

# Specification of the relationship between entities
r_transactions_applications = ft.Relationship(
    parent_variable=entity_set[cnst.APPLICATIONS_ENTITY_NAME][cnst.ID_APPLICATION_COLUMN],
    child_variable=entity_set[cnst.TRANSACTIONS_ENTITY_NAME][cnst.ID_APPLICATION_COLUMN])
entity_set.add_relationship(r_transactions_applications)

Однако у меня есть проблема с временными отсечками.

при созданииих и применить их:

default_agg_primitives =  ["count", "sum", "std", "max", "mode", "mean"]
default_trans_primitives =  ['month', 'day', 'time_since_previous']
temporal_cutoffs = ft.make_temporal_cutoffs(
    instance_ids=applications[cnst.ID_APPLICATION_COLUMN],
    cutoffs=applications[cnst.TIME_APPLICATION_COLUMN],
    window_size='1m',
    num_windows=6)
transformed_data = ft.dfs(entityset=entity_set,
                          target_entity=cnst.APPLICATIONS_ENTITY_NAME,
                          cutoff_time=temporal_cutoffs,
                          cutoff_time_in_index=True,
                          trans_primitives=default_trans_primitives,
                          agg_primitives=default_agg_primitives,
                          max_depth=2)

Поскольку я агрегирую для уровня приложения, я получаю 1000 строк без временных срезов.Когда я применяю их, я получаю 6000 строк, однако 5000 строк (все месяцы раньше, кроме последнего) равны 0 или NaN, а остальное точно так же, как если бы я вообще не использовал временные обрезки.

Мне кажется, что столбец TIME не зарегистрирован и набор данных не разделен.

Где я могу установить это?

...