手动定义“其中条款”种子特征



使用ft.dfs获取特征定义时,where_primitives参数基于实体的有趣变量过滤值。是否也可以手动定义种子特征的" were"子句?

是的,可以使用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

然后,我们可以定义以下内容:

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

首先,我们创建一个布尔值,该功能确定事务数量是否大于15。然后,我们使用Count原始词并指定WHERE子句。在幕后,tematureTools删除了在计算Count之前,其中的功能评估为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原始词。我们可以看到它等效于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

最新更新