FeatureTools GroupВыдача исключая сущности - PullRequest
0 голосов
/ 05 ноября 2019

Этот вопрос является продолжением этой публикации :

Я мог бы решить первую часть сомнения, но после этого возникла другая.

У меня естьследующий набор объектов Featuretools: enter image description here

И я хотел бы получить groupby_trans_primitives: Diff и TimeSincePrevious (дни), но только в объекте записей,исключая другие объекты: 'vendedores','produtos',cliente','produto_cliente'

Я попытался следующий код, чтобы безуспешно исключить эти объекты:

from featuretools.primitives import TimeSincePrevious
time_since_previous = TimeSincePrevious(unit = "days")

fm, features = ft.dfs(entityset=es, 
                      target_entity='recordings',
                      trans_primitives = [],
                      agg_primitives = [],
                      max_depth=2,
                      verbose=True,
                      groupby_trans_primitives=['Diff',time_since_previous],
                      primitive_options={'time_since_previous': {'ignore_groupby_entities': ['vendedores','produtos','cliente']}})

Поскольку код возвращал следующие функции:

Built 38 features
Elapsed: 00:38 | Progress: 100%|██████████
[<Feature: CODIGO_CLIENTE>,
 <Feature: NOME_VENDEDOR>,
 <Feature: CODIGO_PRODUTO>,
 <Feature: QUANTIDADE>,
 <Feature: VALOR_TOTAL>,
 <Feature: PRODUTO_CLIENTE>,
 <Feature: DIFF(QUANTIDADE) by PRODUTO_CLIENTE>,
 <Feature: DIFF(QUANTIDADE) by CODIGO_PRODUTO>,
 <Feature: DIFF(QUANTIDADE) by NOME_VENDEDOR>,
 <Feature: DIFF(QUANTIDADE) by CODIGO_CLIENTE>,
 <Feature: DIFF(VALOR_TOTAL) by PRODUTO_CLIENTE>,
 <Feature: DIFF(VALOR_TOTAL) by CODIGO_PRODUTO>,
 <Feature: DIFF(VALOR_TOTAL) by NOME_VENDEDOR>,
 <Feature: DIFF(VALOR_TOTAL) by CODIGO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(DATA_NOTA, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(DATA_NOTA, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(DATA_NOTA, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(DATA_NOTA, unit=days) by CODIGO_CLIENTE>,
 <Feature: cliente.CLASSIFICACAO>,
 <Feature: cliente.REDE>,
 <Feature: cliente.CIDADE>,
 <Feature: cliente.UF>,
 <Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by CODIGO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by CODIGO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by CODIGO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by CODIGO_CLIENTE>]

И я не знаю, почему в моем коде были указаны следующие функции, исключающие эти объекты:

<Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(vendedores.first_recordings_time, unit=days) by CODIGO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(produto_cliente.first_recordings_time, unit=days) by CODIGO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(cliente.first_recordings_time, unit=days) by CODIGO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by PRODUTO_CLIENTE>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by CODIGO_PRODUTO>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by NOME_VENDEDOR>,
 <Feature: TIME_SINCE_PREVIOUS(produtos.first_recordings_time, unit=days) by CODIGO_CLIENTE>]

Буду признателен за любую помощь! Спасибо!

1 Ответ

3 голосов
/ 06 ноября 2019

На самом деле есть ошибка, связанная с тем, что primitive_options игнорирует сущности, которые будут исправлены в следующем выпуске FeatureTools, но сейчас вы можете отфильтровать эти функции, сохранив эти примитивные опции и добавив drop_contains filter

fm, features = ft.dfs(entityset=es, 
                      target_entity='recordings',
                      trans_primitives = [],
                      agg_primitives = [],
                      max_depth=2,
                      verbose=True,
                      groupby_trans_primitives=['Diff',time_since_previous],
                      drop_contains=["TIME_SINCE_PREVIOUS(produtos.", "TIME_SINCE_PREVIOUS(cliente.", "TIME_SINCE_PREVIOUS(produto_cliente.", "TIME_SINCE_PREVIOUS(vendedores."],
                      primitive_options={'time_since_previous': {'ignore_groupby_entities': ['vendedores','produtos','cliente']}})

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

...