Я столкнулся с проблемой, когда попытался создать отношения между наборами прав (используя мои собственные данные). Там нет ошибки, но он просто не создает функции для одной из моих сущностей (сущности "prods"), хотя все должно быть просто подключено.
Я не могу поделиться своими данными, но я создал минимальный пример с некоторыми фиктивными данными:
import pandas as pd
import featuretools as ft
Создание фиктивных данных
cust = pd.DataFrame([[1,50],[2,60]],
columns=['CUST_ID','AGE'])#
orders = pd.DataFrame([[1,1,50,33.0],[2,1,60,20],[3,2,66,999.9]],
columns=['ORD_ID','CUST_ID','QTY','PRICE'])
order_items = pd.DataFrame([[1,1,1,2,3.0],[2,2,2,8,5.0],[3,2,1,2,3.0],[4,3,3,2,3.0]],
columns=['ORD_ITM_ID','ORD_ID','PROD_ID','QTY','PRICE'])
prods = pd.DataFrame([[1,3.0],[2,5.0],[3,3.0]],
columns=['PROD_ID','PRICE'])
Определение набора сущностей
es = ft.EntitySet('test')
## Adding Customers Entity
es.entity_from_dataframe(dataframe=cust,
entity_id='cust',
index='CUST_ID')
## Adding Orders Entity
es.entity_from_dataframe(dataframe=orders,
entity_id='orders',
index='ORD_ID')
## Adding Order Items Entity
es.entity_from_dataframe(dataframe=order_items,
entity_id='order_items',
index='ORD_ITM_ID')
## Adding Products Entity
es.entity_from_dataframe(dataframe=prods,
entity_id='prods',
index='PROD_ID')
Создание отношений
customer_relationship = ft.Relationship(es["cust"]["CUST_ID"],
es["orders"]["CUST_ID"])
orderitems_relationship = ft.Relationship(es["orders"]["ORD_ID"],
es["order_items"]["ORD_ID"])
products_relationship = ft.Relationship(es["prods"]["PROD_ID"],
es["order_items"]["PROD_ID"])
### Add Relationships
es = es.add_relationship(customer_relationship)
es = es.add_relationship(orderitems_relationship)
es = es.add_relationship(products_relationship)
Создание функций
feature_defs = ft.dfs(entityset=es,
target_entity="cust",
agg_primitives=["count", "sum"],
verbose = True,
features_only = True)
## Show features
feature_defs
Выход:
Built 7 features
[<Feature: AGE>,
<Feature: COUNT(order_items)>,
<Feature: SUM(orders.QTY)>,
<Feature: SUM(orders.PRICE)>,
<Feature: SUM(order_items.QTY)>,
<Feature: COUNT(orders)>,
<Feature: SUM(order_items.PRICE)>]
Это должно показать мне функции для переменных продукта тоже, но это не так.
Так что я ожидаю, что SUM суммирует цену продукта на одного покупателя. Вместо этого ничего нет.
В конечном итоге я хотел создать функции для интересных значений. Но поскольку переменные продукта не отображаются, добавление интересных значений также не работает.
## Get All Product IDs
interesting_products = es["prods"].df.PROD_ID.unique()
es["prods"]["PROD_ID"].interesting_values=interesting_products
feature_defs = ft.dfs(entityset=es,
target_entity="cust",
agg_primitives=["count", "sum"],
where_primitives=["count", "sum"],
verbose = True,
features_only = True)
## Show features
feature_defs
Выход:
Built 7 features
[<Feature: AGE>,
<Feature: COUNT(order_items)>,
<Feature: SUM(orders.QTY)>,
<Feature: SUM(orders.PRICE)>,
<Feature: SUM(order_items.QTY)>,
<Feature: COUNT(orders)>,
<Feature: SUM(order_items.PRICE)>]
Надеюсь, кто-то может помочь:)