Как добавить несколько отношений в новую сущность? - PullRequest
1 голос
/ 26 января 2020

Я пытаюсь добавить несколько связей одновременно в набор сущностей, который я создал. Я использую следующий код:

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 do c) или я что-то упустил?

1 Ответ

0 голосов
/ 27 января 2020

Входные данные для 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,
)

Пусть я знаю, поможет ли это.

...