"机器学习的圣杯之一是将特征工程过程自动化到更高程度。" ― Pedro Domingos,《关于机器学习需要了解的几件有用的事》
Featuretools是一个用于自动化特征工程的Python库。更多信息请参阅文档。
安装
使用pip安装
python -m pip install featuretools
或从conda的Conda-forge频道安装:
conda install -c conda-forge featuretools
附加组件
您可以单独安装附加组件,也可以通过运行以下命令一次性安装所有组件:
python -m pip install "featuretools[complete]"
高级原语 - 使用premium-primitives仓库中的高级原语
python -m pip install "featuretools[premium]"
自然语言处理原语 - 使用nlp-primitives仓库中的自然语言处理原语
python -m pip install "featuretools[nlp]"
Dask支持 - 使用Dask运行DFS,njobs > 1
python -m pip install "featuretools[dask]"
示例
以下是使用深度特征合成(DFS)进行自动化特征工程的示例。在此示例中,我们将DFS应用于由带时间戳的客户交易组成的多表数据集。
>> import featuretools as ft
>> es = ft.demo.load_mock_customer(return_entityset=True)
>> es.plot()
Featuretools可以自动为任何"目标数据框"创建单个特征表
>> feature_matrix, features_defs = ft.dfs(entityset=es, target_dataframe_name="customers")
>> feature_matrix.head(5)
邮政编码 交易次数 会话次数 交易总额 最常用设备 最小交易额 最大交易额 加入年份 交易额偏度 加入日期 ... 会话最小交易额之和 会话交易额偏度最大值 会话最小交易额最大值 会话平均交易额之和 会话交易总额标准差 会话平均交易额标准差 会话平均交易额偏度 会话最大交易额标准差 会话开始日期唯一值数量 会话交易额偏度最小值
客户ID ...
1 60091 131 10 10236.77 桌面端 5.60 149.95 2008 0.070041 1 ... 169.77 0.610052 41.95 791.976505 175.939423 9.299023 -0.377150 5.857976 1 -0.395358
2 02139 122 8 9118.81 移动端 5.81 149.15 2008 0.028647 20 ... 114.85 0.492531 42.96 596.243506 230.333502 10.925037 0.962350 7.420480 1 -0.470007
3 02139 78 5 5758.24 桌面端 6.78 147.73 2008 0.070814 10 ... 64.98 0.645728 21.77 369.770121 471.048551 9.819148 -0.244976 12.537259 1 -0.630425
4 60091 111 8 8205.28 桌面端 5.73 149.56 2008 0.087986 30 ... 83.53 0.516262 17.27 584.673126 322.883448 13.065436 -0.548969 12.738488 1 -0.497169
5 02139 58 4 4571.37 平板端 5.91 148.17 2008 0.085883 19 ... 73.09 0.830112 27.46 313.448942 198.522508 8.950528 0.098885 5.599228 1 -0.396571
[5行 x 69列]
现在我们为每个客户生成了一个可用于机器学习的特征向量。有关更多示例,请参阅深度特征合成文档。
Featuretools包含许多不同类型的内置原语用于创建特征。如果您需要的原语未包含在内,Featuretools还允许您定义自己的自定义原语。
演示
预测下一次购买
在这个演示中,我们使用来自Instacart的300万个在线杂货订单的多表数据集来预测客户下一次会购买什么。我们展示了如何使用自动化特征工程生成特征,并使用Featuretools构建准确的机器学习流程,该流程可以用于多个预测问题。对于更高级的用户,我们展示了如何使用Dask将该流程扩展到大型数据集。
有关如何使用Featuretools的更多示例,请查看我们的演示页面。
测试与开发
Featuretools社区欢迎拉取请求。测试和开发说明可在此处获得。
支持
Featuretools社区很乐意为Featuretools用户提供支持。根据问题类型,项目支持可以在四个地方找到:
- 对于使用问题,请在Stack Overflow上使用
featuretools
标签。 - 对于错误、问题或功能请求,请启动Github问题。
- 对于有关核心库开发的讨论,请使用Slack。
- 对于其他所有内容,可以通过电子邮件open_source_support@alteryx.com联系核心开发人员。
引用Featuretools
如果您使用Featuretools,请考虑引用以下论文:
James Max Kanter, Kalyan Veeramachaneni. 深度特征合成:迈向自动化数据科学努力。 IEEE DSAA 2015。
BibTeX条目:
@inproceedings{kanter2015deep,
author = {James Max Kanter and Kalyan Veeramachaneni},
title = {Deep feature synthesis: Towards automating data science endeavors},
booktitle = {2015 {IEEE} International Conference on Data Science and Advanced Analytics, DSAA 2015, Paris, France, October 19-21, 2015},
pages = {1--10},
year = {2015},
organization={IEEE}
}
由Alteryx构建
Featuretools是由Alteryx维护的开源项目。要查看我们正在进行的其他开源项目,请访问Alteryx开源。如果构建有影响力的数据科学管道对您或您的业务很重要,请与我们联系。