gpt4 book ai didi

python - 手动定义种子特征的 "where clause"?

转载 作者:行者123 更新时间:2023-11-30 08:58:40 28 4
gpt4 key购买 nike

当使用ft.dfs获取特征定义时,where_primitives参数根据实体的有趣变量过滤值。是否也可以手动定义种子特征的“where 子句”?

最佳答案

是的,可以使用 where 参数基于聚合原语为任何种子特征手动定义 where 子句。

假设您想要定义“计算金额大于 15 的客户的交易次数”。您可以执行以下操作:

import featuretools as ft
from featuretools.primitives import Count, NumTrue
es = ft.demo.load_mock_customer(return_entityset=True)
print(es)
Entityset: transactions
Entities:
customers (shape = [5, 3])
sessions (shape = [35, 4])
products (shape = [5, 2])
transactions (shape = [500, 5])
Relationships:
transactions.product_id -> products.product_id
transactions.session_id -> sessions.session_id
sessions.customer_id -> customers.customer_id

然后我们可以如下定义 where 子句:

greater_15 = ft.Feature(es['transactions']['amount']) > 15
count_greater_15 = Count(es['transactions'][‘transaction_id’],
parent_entity=es[‘customers’],
where=greater_15)

首先,我们创建一个 bool 特征来确定交易金额是否大于 15。然后,我们使用 Count 原语并指定 where 子句。在幕后,Featuretools 会在计算 Count 之前删除 where 功能评估为 false 的所有行。

现在我们准备好计算特征了:

fm = ft.calculate_feature_matrix(features=[count_greater_15],
instance_ids=[1, 2, 3])
print(fm)
             COUNT(transactions WHERE amount > 15)
customer_id
1 121
2 112
3 72

为了验证这是否符合我们的预期,让我们使用 NumTrue 原语来计算 True 值的数量。我们可以看到它相当于 count_greater_15

num_greater_15 = NumTrue(greater_15, parent_entity=es["customers"])
fm = ft.calculate_feature_matrix(features=[num_greater_15],
instance_ids=[1, 2, 3])
print(fm)
             NUM_TRUE(transactions.amount > 15)
customer_id
1 121
2 112
3 72

关于python - 手动定义种子特征的 "where clause"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49556680/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com