以下是来自官方docs的示例代码
import featuretools as ft
es = ft.demo.load_mock_customer(return_entityset=True)
feature_matrix, feature_defs = ft.dfs(
entityset=es,
target_entity="customers",
agg_primitives=["sum", "mode"],
trans_primitives=["cum_max", "month", "cum_count"],
max_depth=2
)
feature_defs
>>
[<Feature: zip_code>,
....
<Feature: MODE(sessions.device)>,
<Feature: MODE(transactions.sessions.device)>,
...
]通过分析graph_feature()的计算,虽然MODE(sessions.device)和MODE(transactions.sessions.device)的计算方法不同,但它们看起来是相同的。如果我是对的,为什么dfs会重复计算?
发布于 2020-10-14 04:16:37
谢谢你的问题!虽然它们看起来很相似,但它们实际上是不同的功能。MODE(sessions.device)是客户所有会话上的设备模式,而MODE(transactions.sessions.device)是客户所有事务上的设备模式。
作为演示差异的快速示例,假设客户有3个会话:
session_id device
------------------------
A Mobile
B PC
C PC还有5个事务,每个事务都与以下会话之一相关联:
transaction_id session_id sessions.device
--------------------------------------------------
0 A Mobile
1 A Mobile
2 A Mobile
3 B PC
4 C PC在本例中,MODE(sessions.device)将是PC,但MODE(transactions.sessions.device)将是移动的,因为有更多事务与会话A相关联。在特征图中,关键区别是MODE(transactions.sessions.device)首先加入事务实体。即使按会话分组,也不会得到开始时的结果,因为每个事务现在都有自己的值。
https://stackoverflow.com/questions/64327308
复制相似问题