【问题标题】:How to add multiple relationships to a new entity?如何将多个关系添加到新实体?
【发布时间】:2020-05-11 22:47:17
【问题描述】:

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

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,我认为这是正确的)还是我遗漏了什么?

【问题讨论】:

    标签: featuretools


    【解决方案1】:

    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,
    )
    

    如果这有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2011-01-08
      • 1970-01-01
      • 2018-01-01
      相关资源
      最近更新 更多