自动化特征工程框架
featuretools-MV的Python项目详细描述
“机器学习的圣杯之一是使越来越多的特性工程过程自动化。”―Pedro Domingos,A Few Useful Things to Know about Machine Learning
Featuretools是用于自动特性工程的python库。有关详细信息,请参见documentation。
这是Featuretools的分叉版本。您可以找到原始源here
安装
使用pip安装
python -m pip install featuretools
或者从conda:
conda install -c conda-forge featuretools
示例
下面是使用深度特征合成(dfs)执行自动特征工程的示例。在本例中,我们将dfs应用于由带时间戳的客户事务组成的多表数据集。
>>importfeaturetoolsasft>>es=ft.demo.load_mock_customer(return_entityset=True)>>es
Entityset: transactions
Entities:
customers (shape = [5, 3])
sessions (shape = [35, 4])
products (shape = [5, 2])
transactions (shape = [500, 5])
Relationships:
transactions.product_id -> products.product_id
transactions.session_id -> sessions.session_id
sessions.customer_id -> customers.customer_id
FeatureTools可以为任何“目标实体”自动创建一个功能表
>>feature_matrix,features_defs=ft.dfs(entityset=es,target_entity="customers")>>feature_matrix.head(5)
zip_code COUNT(transactions) COUNT(sessions) SUM(transactions.amount) MODE(sessions.device) MIN(transactions.amount) MAX(transactions.amount) YEAR(join_date) SKEW(transactions.amount) DAY(join_date) ... SUM(sessions.MIN(transactions.amount)) MAX(sessions.SKEW(transactions.amount)) MAX(sessions.MIN(transactions.amount)) SUM(sessions.MEAN(transactions.amount)) STD(sessions.SUM(transactions.amount)) STD(sessions.MEAN(transactions.amount)) SKEW(sessions.MEAN(transactions.amount)) STD(sessions.MAX(transactions.amount)) NUM_UNIQUE(sessions.DAY(session_start)) MIN(sessions.SKEW(transactions.amount))
customer_id ...
1 60091 131 10 10236.77 desktop 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 mobile 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 desktop 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 desktop 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 tablet 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 rows x 69 columns]
我们现在为每个客户提供了一个特征向量,可用于机器学习。有关更多示例,请参见documentation on Deep Feature Synthesis。
演示
预测下一次购买
在这个演示中,我们使用instacart中300万个在线杂货订单的多表数据集来预测客户下一步将购买什么。我们展示了如何使用自动化特征工程生成特征,并使用特征工具构建一个精确的机器学习管道,该管道可用于多个预测问题。对于更高级的用户,我们将展示如何使用dask将管道扩展到大型数据集。
有关如何使用featuretools的更多示例,请查看我们的demos页面。
测试和开发
FeatureTools社区欢迎拉取请求。测试和开发说明是可用的here.
支架
FeatureTools社区很乐意为FeatureTools的用户提供支持。根据问题的类型,可以在四个位置找到项目支持:
- 对于用法问题,请使用带有
featuretools
标记的Stack Overflow。 - 对于bug、问题或功能请求,启动Github issue。
- 有关核心库开发的讨论,请使用Slack。
- 除此之外,核心开发人员可以通过电子邮件联系到help@featuretools.com。
引用功能工具
如果您使用FeatureTools,请考虑引用以下文章:
詹姆斯·马克斯·坎特,卡扬·维拉马切内尼。Deep feature synthesis: Towards automating data science endeavors.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}}
专题实验室
featuretools是由Feature Labs创建的开源项目。要查看我们正在开发的其他开源项目,请访问功能实验室Open Source。如果建立有影响力的数据科学管道对您或您的业务很重要,请get in touch。