You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Featuretools Deep Feature Synthesis无法生成新特征求助排查

问题原因及解决方案

核心问题1:未定义实体间的关联关系

你只将三个数据集加入了EntitySet,但没有建立它们之间的关联(Relationship)。Deep Feature Synthesis的聚合特征(agg_primitives)需要跨实体的关联才能生成——比如从player_data或players表聚合统计到season_stats表。没有关联的话,DFS无法跨表计算聚合特征。

核心问题2:转换原语与数据类型不匹配

默认的trans_primitives依赖特定数据类型的字段:

  • day/year/month/weekday 需要datetime类型的字段
  • haversine 需要经纬度数值字段
  • num_words/num_characters 需要文本类型的字段
    如果你的三个数据集里没有对应类型的字段,这些转换原语不会生成任何新特征。

修复步骤

1. 添加实体关联

根据你的数据集逻辑,通过add_relationship建立表之间的关联。比如假设season_stats的name字段关联到players的name,players的name关联到player_data的name,代码如下:

entity_set = ft.EntitySet("basketball_players")

# 添加数据集
entity_set.add_dataframe(dataframe_name="player_data", dataframe=player_data, index='name')
entity_set.add_dataframe(dataframe_name="players", dataframe=players, index='name')
entity_set.add_dataframe(dataframe_name="season_stats", dataframe=season_stats, index='name')

# 添加关联关系
entity_set.add_relationship(ft.Relationship(entity_set["players"]["name"], entity_set["season_stats"]["name"]))
entity_set.add_relationship(ft.Relationship(entity_set["player_data"]["name"], entity_set["players"]["name"]))

# 重新运行DFS
feature_matrix, features = ft.dfs(target_dataframe_name="season_stats", entityset=entity_set, max_depth=3)

2. 匹配转换原语的字段类型

  • 检查数据集里是否有datetime、文本或经纬度字段,若没有,要么补充对应数据,要么显式指定通用的转换原语(比如针对数值字段的"absolute"、"divide"等),示例:
feature_matrix, features = ft.dfs(
    target_dataframe_name="season_stats",
    entityset=entity_set,
    max_depth=3,
    trans_primitives=["absolute", "divide"]  # 显式指定通用转换原语
)

内容的提问来源于stack exchange,提问作者idunskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:01:02