微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FeatureTools:为什么dfs进行冗余计算?

如何解决FeatureTools:为什么dfs进行冗余计算?

下面是来自官方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会多余地计算呢?

解决方法

感谢您的提问!虽然它们看起来很相似,但实际上是不同的功能。 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相关的交易更多。在功能图中,关键区别在于{{1} }首先加入交易实体。即使按会话分组,您也不会以开始时就结束了,因为每笔交易现在都有自己的价值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?