featuretools
自动化多表特征工程:输入原始数据库,自动生成数百个可用于机器学习的特征变量
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
自动化多表特征工程:输入原始数据库,自动生成数百个可用于机器学习的特征变量
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Featuretools 可自动绘制多表关联关系图,帮助数据科学家直观理解数据模型结构。
想象你是一家连锁披萨店的老板,店里积累了大量数据:每天每家分店的订单流水、会员消费记录、外卖配送时间、原材料库存——足足有五六张表格,数据量加起来有好几个GB。
你想用机器学习预测"明天哪家分店需要多备多少面粉"。理论上,把这些表格喂给模型就行了。但实际操作中,你需要手工从每张表里提取特征:比如"这家店过去7天平均客单价"、"会员最近30天消费频次"、"高峰时段平均配送时长"……
人工做特征工程,耗时耗力,还容易遗漏。
2017年,美国数据科学公司 Feature Labs(后被 Alteryx 收购)的工程师们推出了 Featuretools——一个专门把"从原始数据中自动生成机器学习特征"这件事做好的 Python 库。它的核心目标只有一个:让你从繁琐的手工特征提取中解放出来。
Featuretools 的核心算法叫 Deep Feature Synthesis(DFS,深度特征合成)。这个名字听起来唬人,但原理并不复杂:
简单类比: 想象你在整理一份简历。DFS 就像一个智能助手,它知道:
Featuretools 做的是同样的事——只不过数据规模更大、特征类型更丰富。它的工作流程如下:
Step 1:定义 EntitySet(实体集合)
用户将所有相关表格加载到一个 EntitySet 对象中,并指定每张表的关联关系(外键)。调用 es.plot() 可以生成一张可视化的关系图,上图就是典型的多表关联结构,清晰展示 customers、sessions、transactions 等表之间的外键关联。
Step 2:调用 DFS 自动生成特征
import featuretools as ft
# 自动生成数百个特征
feature_matrix, features_defs = ft.dfs(
entityset=es,
target_dataframe_name="customers", # 以客户表为目标
max_depth=2 # 最多跨越2层关系
)
max_depth=2 时,Featuretools 会沿着关联路径自动计算:
age(年龄)、income(收入)COUNT(transactions)(客户总订单数)、SUM(transactions.amount)(累计消费金额)MAX(sessions.SUM(transactions.amount))(单次到店消费最高金额)代码结构: Featuretools 采用模块化设计,核心模块包括:
| 模块 | 职责 |
|---|---|
primitives/ | 内置特征原语(Aggregation/Transform),如 COUNT、SUM、MEAN、MONTH |
synthesis/ | DFS 核心算法实现 |
computational_backends/ | 并行计算后端(支持 Dask 分布式) |
entityset/ | 实体集合管理与数据加载 |
feature_base/ | 特征对象抽象与序列化 |
selection/ | 特征选择(去除冗余/低价值特征) |
技术栈: 纯 Python 实现,核心依赖包括 pandas、numpy、scipy,不依赖 PyTorch/TensorFlow 等深度学习框架。这意味着它是一个数据预处理工具,而非模型训练工具。
依赖规范(pyproject.toml):
代码质量: 项目有完整的 CI/CD(GitHub Actions)、pytest 测试套件、codecov 代码覆盖跟踪、pre-commit 规范检查。开发规范较为严格,代码注释清晰,适合作为生产级工具使用。
Featuretools 不是万能的,它有明确的适用场景:
适用场景:
不适用场景:
安装体验: pip install featuretools 即可安装,无需 Docker,依赖简单,部署门槛低。但不支持 Web UI,只适合 Python 编程环境使用。
Featuretools 的出现填补了自动化特征工程领域的开源工具空白。它的前身可以追溯到学术界的"Google Brain's Deep Feature Synthesis"论文(2015年),Feature Labs 将学术成果工程化落地后,推动了整个 AutoML 生态中"特征自动化"这一细分方向的发展。
截至目前,Featuretools 在 GitHub 获得 7651 颗星,被 Alteryx 收购后继续活跃维护,属于 Python 数据科学工具链中的基础设施工具。它与 AutoGluon、FLAML 等 AutoML 框架形成互补:那些框架解决"模型自动选择和超参调优",Featuretools 解决"输入特征自动构造",两者可以组合使用。

图2:Featuretools 的 Web Dashboard 界面(需额外安装),展示特征分析结果。