机器学习特征工程3-自动特征构造(FeatureTools)

FeatureTools 介绍

Featuretools是一个执行自动特征工程的框架。它擅长于为深度学习把互相关联的数据集转换为特征矩阵。我们可以将特征构造的操作分为两类:「转换」和「聚合」。我们通过下面的例子来了解FeatureTools使用方法。
代码示例地址:
https://github.com/scottlinlin/auto_feature_demo.git

安装

pip install featuretools

快速入门

1、导入feauretool

import featuretools as ft

2、加载数据

#加载数据
clients = pd.read_csv('data/clients.csv', parse_dates = ['joined'])
loans = pd.read_csv('data/loans.csv', parse_dates = ['loan_start', 'loan_end'])
payments = pd.read_csv('data/payments.csv', parse_dates = ['payment_date'])

输出:



3、创建实体和实体集

#创建实体
es = ft.EntitySet(id = 'clients')

#添加clients实体
es = es.entity_from_dataframe(entity_id = 'clients', dataframe = clients, 
                              index = 'client_id', time_index = 'joined')

#添加loads实体
es = es.entity_from_dataframe(entity_id = 'loans', dataframe = loans, 
                              variable_types = {'repaid': ft.variable_types.Categorical},
                              index = 'loan_id', 
                              time_index = 'loan_start')


#添加pyments实体
es = es.entity_from_dataframe(entity_id = 'payments', 
                              dataframe = payments,
                              variable_types = {'missed': ft.variable_types.Categorical},
                              make_index = True,
                              index = 'payment_id',
                              time_index = 'payment_date')
#打印实体集
es

输出:



4、添加实体关系

# 通过client_id 关联clients和loans实体
r_client_previous = ft.Relationship(es['clients']['client_id'],
                                    es['loans']['client_id'])
es = es.add_relationship(r_client_previous)

# 通过loan_id 关联payments和loans实体
r_payments = ft.Relationship(es['loans']['loan_id'],
                             es['payments']['loan_id'])
es = es.add_relationship(r_payments)

#打印实体集
es

输出:



5、聚合特征,并生成新特征

#聚合特征,并生成新特征
features, feature_names = ft.dfs(entityset = es, target_entity = 'clients')
features.head()

输入:



6、聚合特征,通过指定聚合和转换函数生成新特征

#聚合特征,通过指定聚合agg_primitives和转换trans_primitives生成新特征
features, feature_names = ft.dfs(entityset = es, target_entity = 'clients', 
                                 agg_primitives = ['mean', 'max', 'percent_true', 'last'],
                                 trans_primitives = ['years', 'month', 'subtract', 'divide'])
features.head()

输出:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,853评论 18 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,008评论 2 89
  • ini配置文件默认取src目录下的shiro.ini anon拦截器表示匿名访问(即不需要登录即可访问)authc...
    年轻人Moriarty阅读 701评论 0 0
  • 孕26+4,失眠,被宝宝折腾的睡不着……苦恼
    毛毛虫爱小木木阅读 170评论 0 0
  • 我发现儿子一到休息早上就睡不着,六点就起床了,打扫一下卫生,就开始和儿子一起练字,先从简单的开始练习,我出去接电话...
    天宇嘛嘛阅读 140评论 0 1