0Pricing
Learn AI with Python · 课时

使用 Featuretools 自动进行特征工程

EntitySet、DFS(深度特征合成)、特征原语和聚合堆叠。

使用 Featuretools 自动进行特征工程 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

自动创建特征

手动进行特征工程速度慢,而且很容易遗漏组合。Featuretools使用一种称为深度特征合成的方法,根据关系数据自动构建大量候选特征。

关系数据与实体

真实数据通常分布在多个相互关联的表中:客户、订单和产品。Featuretools 会对这些关系进行建模,并自动生成跨关系聚合的特征。

创建 EntitySet

EntitySet是用于存放数据框及其关系的容器。首先创建一个空的 EntitySet。

import featuretools as ft

es = ft.EntitySet(id="customers_data")

添加 DataFrames

es.add_dataframe会注册一个表。您需要指定其index(唯一键),还可以选择为时间数据指定time_index。

import featuretools as ft

es = es.add_dataframe(
    dataframe_name="customers",
    dataframe=customers_df,
    index="customer_id",
)
es = es.add_dataframe(
    dataframe_name="orders",
    dataframe=orders_df,
    index="order_id",
    time_index="order_date",
)

定义关系

请使用add_relationship告诉 Featuretools 各个表如何连接:父键连接到子表的外键(一个客户拥有多个订单)。

es = es.add_relationship(
    "customers", "customer_id",
    "orders", "customer_id",
)

深度特征合成

DFS(ft.dfs)是其引擎。它会沿着关系叠加操作,创建“每位客户的平均订单金额”等特征,而无需您为每个特征分别编写代码。

import featuretools as ft

feature_matrix, feature_defs = ft.dfs(
    entityset=es,
    target_dataframe_name="customers",
)

聚合原语

聚合原语会将子表行汇总到父表:SUM、MEAN、COUNT、MAX、STD。它们会把许多订单转换为按客户划分的统计量。

feature_matrix, defs = ft.dfs(
    entityset=es,
    target_dataframe_name="customers",
    agg_primitives=["mean", "sum", "count", "max"],
)

转换原语

转换原语在单行或单个表内执行操作:从日期中提取月份、计算经过的时间,或获取绝对值。

feature_matrix, defs = ft.dfs(
    entityset=es,
    target_dataframe_name="customers",
    trans_primitives=["month", "weekday", "time_since_previous"],
)

使用 max_depth 控制深度

max_depth限制原语可以叠加的层数。深度为 1 时执行直接聚合;深度为 2 时先进行转换,再进行聚合(例如计算订单工作日的均值)。深度越高,生成的特征越多,但风险也越高。

feature_matrix, defs = ft.dfs(
    entityset=es,
    target_dataframe_name="customers",
    max_depth=2,
)

使用特征矩阵

生成的feature_matrix是一个以目标实体为索引的整洁数据框,可以直接输入模型。feature_defs会记录每个生成的特征。

print(feature_matrix.shape)
print(feature_matrix.head())

X = feature_matrix.fillna(0)
# now train any sklearn model on X

优势与注意事项

Featuretools 可以快速生成大量特征,并发现关系数据中的信号。但它可能生成数百列,因此应结合特征选择使用。对于时间数据,请设置恰当的cutoff_time,以防止数据泄漏。

快速检查

请测试您对 Featuretools 的了解。

回顾

回顾:Featuretools可以自动完成特征工程。请构建一个EntitySet,使用es.add_dataframe注册表,定义关系,然后使用max_depth运行ft.dfs。聚合原语会将子表行汇总到父表;转换原语在行内执行操作。feature_matrix可以直接用于模型,应与特征选择结合使用。

常见问题解答

「使用 Featuretools 自动进行特征工程」课时是免费的吗?

是的 — 「使用 Featuretools 自动进行特征工程」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「使用 Featuretools 自动进行特征工程」这节课中我会学到什么?

EntitySet、DFS(深度特征合成)、特征原语和聚合堆叠。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「使用 Featuretools 自动进行特征工程」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 特征选择方法
  2. 创建交互特征与多项式特征
  3. 目标编码与高级分类变量处理
  4. 使用 Featuretools 自动进行特征工程
← 返回 Learn AI with Python