【问题标题】:how to make features using featuretools, for the new data(on which we want to make prediction)如何使用特征工具为新数据(我们要对其进行预测)制作特征
【发布时间】:2020-05-21 08:59:34
【问题描述】:

我有一个单独的数据框,并且想将特征工具用于自动特征工程部分。我可以使用规范化实体功能来做到这一点。代码sn-p如下:

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 个 obs,如果我将它与 X_train 结合,那么每个观察(来自 X_test)也会对其他 4 个观察(X_test)产生影响,这不是一个好主意。 任何人都可以建议如何使用特征工具对新数据进行特征工程?

【问题讨论】:

    标签: python feature-engineering featuretools


    【解决方案1】:

    您可以尝试使用cutoff times,它指定观察可用于特征计算的最后时间点。标签可以与截止时间一起传递,以确保它们与特征矩阵保持对齐。然后,您可以将特征矩阵拆分为X_trainX_test

    对于新数据,规范化应该是可重复的,以便实体集可以具有相同的结构。然后,您可以像往常一样计算具有截止时间的特征。您可能还想查看Compose,它会根据您定义预测问题的方式自动生成截止时间。如果截止时间在您的用例中不起作用,我将需要更多细节来更好地了解每个观察结果将如何影响其他观察结果。让我知道这是否有帮助。

    【讨论】:

      【解决方案2】:

      可以在 featuretools 中使用 calculate_feature_matrix()。您可以从其网页获取详细指南: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)
      

      以后使用feature_names,可以查看load_features()save_features()函数。

      注意:训练和测试实体应该具有相同的entity_id,否则会出现错误。

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      猜你喜欢
      • 2020-02-20
      • 1970-01-01
      • 2020-09-11
      • 2017-07-20
      • 2020-09-04
      • 2018-08-28
      • 1970-01-01
      • 2020-11-25
      • 2018-11-15
      相关资源
      最近更新 更多