首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >featuretools:为什么dfs()要做冗余计算?

featuretools:为什么dfs()要做冗余计算?
EN

Stack Overflow用户
提问于 2020-10-13 09:39:07
回答 1查看 56关注 0票数 1

以下是来自官方docs的示例代码

代码语言:javascript
复制
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会重复计算?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-14 04:16:37

谢谢你的问题!虽然它们看起来很相似,但它们实际上是不同的功能。MODE(sessions.device)是客户所有会话上的设备模式,而MODE(transactions.sessions.device)是客户所有事务上的设备模式。

作为演示差异的快速示例,假设客户有3个会话:

代码语言:javascript
复制
session_id        device
------------------------
         A        Mobile
         B            PC              
         C            PC

还有5个事务,每个事务都与以下会话之一相关联:

代码语言:javascript
复制
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)首先加入事务实体。即使按会话分组,也不会得到开始时的结果,因为每个事务现在都有自己的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64327308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档