如何在featuretools中计算自上次以来的时间?

2024-05-29 05:53:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试复制featuretools教程(请参见下面的链接)。我正在使用软件包中提供的模拟数据。它们包括客户表和会话表。每个客户都有许多会议。每个会话都有一个会话启动时间戳。我使用featuretools和b)手动计算功能会话启动的基本时间\u的平均值。但是我得到了不同的结果,我错在哪里

a)使用功能工具进行计算:

import featuretools as ft

es = ft.demo.load_mock_customer(return_entityset=True)
feature_matrix, features_defs = ft.dfs(
    entityset=es,
    target_entity='customers',
    agg_primitives=['mean'],
    trans_primitives=['time_since_previous'])

客户3的平均值(自上次(会话开始)以来的会话时间)为888.333333

b)人工计算:

time_since_previous(sessions[sessions.customer_id == 3].session_start).tolist()
[nan, 10075.0, 3900.0, 1625.0, 8710.0, 1170.0]
statistics.mean([ 10075.0, 3900.0, 1625.0, 8710.0, 1170.0])
5096.0

Snapshot1Snapshot2

https://docs.featuretools.com/en/stable/automated_feature_engineering/primitives.html


Tags: 功能客户estime时间customermeanfeature
1条回答
网友
1楼 · 发布于 2024-05-29 05:53:29

要为每个客户应用time_since_previous,可以在DFS中使用groupby_trans_primitives

fm, fd = ft.dfs(
    entityset=es,
    target_entity='customers',
    agg_primitives=['mean'],
    groupby_trans_primitives=['time_since_previous'],
)

fm.filter(regex='sessions.TIME_SINCE_PREVIOUS')
             MEAN(sessions.TIME_SINCE_PREVIOUS(session_start) by customer_id)
customer_id                                                                  
5                                                  5577.000000               
4                                                  2516.428571               
1                                                  3305.714286               
3                                                  5096.000000               
2                                                  4907.500000               

让我知道这是否有帮助

相关问题 更多 >

    热门问题