Этого можно добиться, сделав два вызова ft.calculate_feature_matrix
с разными training_windows
и объединив полученные матрицы объектов вместе.Например,
import featuretools as ft
import pandas as pd
entityset = ft.demo.load_retail()
cutoffs = pd.DataFrame({
'customer_name': ["Micheal Nicholson", "Krista Maddox"],
'cutoff_time': [pd.Timestamp('2011-10-14'), pd.Timestamp('2011-08-18')]
})
feature_defs = ft.dfs(entityset=entityset,
target_entity='customers',
agg_primitives=["sum"],
trans_primitives=[],
max_features=1,
features_only=True)
fm_60_days = ft.calculate_feature_matrix(entityset=entityset,
features=feature_defs,
cutoff_time=cutoffs,
training_window="60 days")
fm_30_days = ft.calculate_feature_matrix(entityset=entityset,
features=feature_defs,
cutoff_time=cutoffs,
training_window="30 days")
fm_60_days.merge(fm_30_days, left_index=True, right_index=True, suffixes=("__60_days", "__30_days"))
Приведенный выше код возвращает этот фрейм данных, в котором используется та же функция, рассчитанная с использованием данных для расчета за последние 60 и 30 дней.
SUM(order_products.quantity)__60_days SUM(order_products.quantity)__30_days
customer_name
Krista Maddox 466 306
Micheal Nicholson 710 539
Примечание: этот примерработает в последней версии Featuretools (v0.3.1), где мы обновили демонстрационный набор данных розничной торговли, чтобы иметь интерпретируемые имена в качестве идентификаторов клиентов.