对于新数据(我们要对其进行预测的数据),如何使用功能工具制作特征


狗头军师
2025-04-08 12:36:53 (4天前)

我只有一个数据框,并且想将Featuretools用于自动要素工程部分。我能够使用规范化实体功能来做到这一点。代码段如下:


  1. 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)的效果,这不是一个好主意。任何人都可以建议如何使用Featuretools对新数据进行特征工程?

2 条回复
  1. 1# v-star*위위 | 2020-08-23 15-04

    通过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否则会出错。

登录 后才能参与评论