如何向新实体添加多个关系?

How to add multiple relationships to a new entity?

我正在尝试将多个关系同时添加到我创建的实体集中。我使用以下代码:

import featuretools as ft

data = ft.demo.load_mock_customer()
customers_df = data["customers"]
sessions_df = data["sessions"]
transactions_df = data["transactions"]

entities = {
    "customers" : (customers_df, "customer_id"),
    "sessions" : (sessions_df, "session_id", "session_start"),
    "transactions" : (transactions_df, "transaction_id", "transaction_time")}

es = ft.EntitySet('es',entities=entities)

relationships = [("sessions", "session_id", "transactions", "session_id"),
    ("customers", "customer_id", "sessions", "customer_id")]

es.add_relationships(relationships)

它抛出 AttributeError: 'tuple' object has no attribute 'child_entity'。这种将多个实体添加到实体集的方法是否正确(我认为如果我正确阅读 official doc 是正确的)还是我遗漏了什么?

add_relationships 的输入必须是关系对象列表。这是将关系添加到实体集的方式:

relationships = []

parent = es["sessions"]["session_id"]
child = es["transactions"]["session_id"]
relationship = ft.Relationship(parent, child)
relationships.append(relationship)

parent = es["customers"]["customer_id"]
child = es["sessions"]["customer_id"]
relationship = ft.Relationship(parent, child)
relationships.append(relationship)

es.add_relationships(relationships)

作为替代方案,您可以直接构建具有关系的实体集。

relationships = [(
    "sessions",
    "session_id",
    "transactions",
    "session_id",
), (
    "customers",
    "customer_id",
    "sessions",
    "customer_id",
)]
es = ft.EntitySet(
    id='es',
    entities=entities,
    relationships=relationships,
)

如果有帮助请告诉我。