как создавать функции, используя featuretools, для новых данных (по которым мы хотим сделать прогноз) - PullRequest
4 голосов
/ 05 февраля 2020

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

es = ft.EntitySet(id = 'obs_data')
es = es.entity_from_dataframe(entity_id = 'obs', dataframe = X_train,
                              variable_types = variable_types, make_index = True, index = "Id")
for feat in interaction:   # interaction columns are found using xgbfir
    es = es.normalize_entity(base_entity_id='obs', new_entity_id=feat, index=feat)
features, feature_names = ft.dfs(entityset = es, 
                                 target_entity = 'obs', 
                                 max_depth = 2)

Особенности его создания. Теперь я хочу сделать то же самое для X_test. Я читаю блоги по этому вопросу, и они предлагают объединить X_train и X_test, а затем сделать тот же процесс. Предположим, что в X_test есть 5 наблюдений, и если я объединю его с X_train, то каждое наблюдение (из X_test) будет иметь эффект и других 4 наблюдений (X_test), что не очень хорошая идея. Кто-нибудь может посоветовать, как сделать проектирование объектов с помощью featuretools для новых данных?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Это возможно с Calculate_Matrix_) в FeatureTools. Вы можете получить подробное руководство на его веб-странице: https://docs.featuretools.com/en/stable/guides/deployment.html#calculating -feature-matrix-for-new-data

Предположим, новые данные - X_test. Если это фрейм данных, вы должны создать для него набор сущностей.

es_test = es.entity_from_dataframe(entity_id = 'entity', dataframe = X_test)

В противном случае, если это уже сущность, вы можете пропустить предыдущий шаг. Предположим, что ваш тестовый объект - es_test, а имена сгенерированных объектов - feature_names. Используя имена элементов данных поезда, вы можете создать новую матрицу объектов для тестовых данных.

test_feat_generated= ft.calculate_feature_matrix(feature_names, es_test)

Для дальнейшего использования имен элементов вы можете посмотреть load_features(), save_features() функции.

Примечание: Обучающие и тестовые объекты должны иметь одинаковые entity_id, иначе вы получите ошибку.

0 голосов
/ 10 февраля 2020

Вы можете попробовать использовать время отсечки , которое указывает последний момент времени, когда наблюдение может использоваться для расчета объекта. Метки могут передаваться вместе со временем отсечения, чтобы гарантировать их соответствие матрице объектов. Затем можно разделить матрицу объектов на X_train и X_test.

. С новыми данными нормализация должна быть повторяемой, чтобы набор сущностей мог иметь ту же структуру. Затем вы можете рассчитать элементы с временами отсечки, как обычно. Вы также можете захотеть взглянуть на Compose , который автоматически генерирует время отсечки в зависимости от того, как вы определяете проблему прогнозирования. Если время отключения не работает в вашем случае использования, мне потребуется больше деталей, чтобы лучше понять, как каждое наблюдение повлияет на другие. Дайте мне знать, если это поможет.

...