Включая только определенные функции при выполнении глубокого синтеза функций? - PullRequest
1 голос
/ 22 марта 2019

Например, одна из моих сущностей имеет два набора идентификаторов.Тот, который является непрерывным (который очевидно необходим для создания EntitySet), и тот, который используется в качестве внешнего ключа при объединении с моей другой таблицей.

Это приводит к тому, что наборы функций включают идентификатор в наборе функций для агрегирования.SUM (ID) - не та функция, которая меня интересует.

Есть ли способ включить определенную функцию при выполнении глубокого синтеза функций?

1 Ответ

2 голосов
/ 25 марта 2019

Существует три способа исключения функций при вызове ft.dfs.

  • Используйте ignore_variables, чтобы указать переменные в объекте, которые не должны использоваться для создания объектов. Это словарь, отображающий идентификатор объекта в список имен переменных, которые следует игнорировать.

  • Используйте drop_contains для удаления объектов, содержащих любую из строк перечислены в этом параметре.

  • Используйте drop_exact для удаления объектов, которые точно соответствуют любой из строк, перечисленных в этом параметре.

Вот пример использования всех трех в ft.dfs вызове

ft.dfs(target_entity="customers"],
       ignore_variables={
           "transactions": ["amount"],
           "customers": ["age", "gender", "date_of_birth"]
       }, # ignore these variables
       drop_contains=["customers.SUM("],  # drop features that contain these strings
       drop_exact=["STD(transactions.quanity)"],  # drop features named exactly this
       ...
 )

Эти 3 параметра задокументированы здесь .

Последнее, что нужно учитывать, если вы получаете функции, которые вам не нужны, это переменные типы переменных в вашем наборе сущностей. Если вы видите сумму переменной ID, это должно означать, что featuretools думает, что переменная ID является числовым значением. Если вы скажете featuretools, что это идентификатор, он не будет применять к нему числовую агрегацию.

...