Featuretools的介绍

1、简要介绍

Featuretools是一个执行自动特征工程的框架。它擅长于为深度学习把互相关联的数据集转换为特征矩阵。

2、快速开始

下面是一个使用DFS(深度特征综合体 Deep Feature Synthesis)来实施自动化特征工程的例子。在这个例子中,我们应用DFS到一个由时间戳客户事务组成的多维表数据集。

##导入Featuretools

In [1]: import featuretools as ft

##加载mock data

In [2]: data = ft.demo.load_mock_customer()

准备数据

在这个玩家数据集上,有3个表。在Featuretools里每个表成为entity

customers: 拥有会话的唯一客户

sessions: 唯一会话及关联属性

transactions: 会话的事件列表

In [3]: customers_df = data["customers"]

In [4]: customers_df
             Out[4]:
                customer_id zip_code join_date
                0 1 60091 2008-01-01
                1 2 02139 2008-02-20
                2 3 02139 2008-04-10
                3 4 60091 2008-05-30
                4 5 02139 2008-07-19

In [5]: sessions_df = data["sessions"]

In [6]: sessions_df.sample(5)
             Out[6]:
                session_id customer_id device session_start
                16 17 4 mobile 2014-01-01 04:02:40
                 34 35 1 desktop 2014-01-01 08:45:25
                4 5 2 tablet 2014-01-01 01:10:25
                0 1 1 desktop 2014-01-01 00:00:00
               29 30 4 desktop 2014-01-01 07:29:35

          In [7]: transactions_df = data["transactions"]

In [8]: transactions_df.sample(5)
             Out[8]:
               transaction_id session_id transaction_time product_id amount
              481 441 34 2014-01-01 08:41:05 1 81.15
              418 84 30 2014-01-01 07:32:50 4 149.02
              19 85 2 2014-01-01 00:20:35 4 148.14
              132 377 9 2014-01-01 02:23:00 4 112.07
              148 109 10 2014-01-01 02:40:20 4 18.40

           
         首先我们在数据集里指定一个带所有entity的字典
         In [9]: entities = {
               ...:    "customers" : (customers_df, "customer_id"),
               ...:    "sessions" : (sessions_df, "session_id", "session_start"),
               ...:    "transactions" : (transactions_df, "transaction_id", "transaction_time")
              ...: }
              ...:
          其次,我们指定entity怎样关联的。当2个entity有一对多关系时,我们称“one enitity“,”parent entity“。在parent and child的关系定义为如下:
           (parent_entity, parent_variable, child_entity, child_variable)
            在这个数据集里,有2个关联关系。
             In [10]: relationships = [("sessions", "session_id", "transactions", "session_id"),
                           ....:                  ("customers", "customer_id", "sessions", "customer_id")]
                          ....:
            
             运行DFS

对DFS的最小输入是entity集合,关系列表,计算特征的target_entity。DFS的输出是特征矩阵,特征定义的对应列表。

首先为数据里的每个客户创建一个特征矩阵。

In [11]: feature_matrix_customers, features_defs = ft.dfs(entities=entities,
                                                  ....:                                                  relationships=relationships,
                                                  ....:                                                  target_entity="customers")
                                                  ....:

In [12]: feature_matrix_customers
                           Out[12]:
                                    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]

现在我们有了许多描述客户的行为的新特征。

改变target entity

DFS强大的原因之一是它能创建特征矩阵,为数据里的任何entity。

In [13]: feature_matrix_sessions, features_defs = ft.dfs(entities=entities,
                                         ....:                                                 relationships=relationships,
                                         ....:                                                 target_entity="sessions")
                                          ....:

In [14]: feature_matrix_sessions.head(5)
              Out[14]:
                       customer_id device WEEKDAY(session_start) MONTH(session_start) MODE(transactions.product_id) MEAN(transactions.amount) customers.zip_code DAY(session_start) MIN(transactions.amount) NUM_UNIQUE(transactions.product_id) ... customers.MODE(sessions.device) customers.WEEKDAY(join_date) MODE(transactions.MONTH(transaction_time)) customers.COUNT(transactions) customers.MAX(transactions.amount) customers.MIN(transactions.amount) MODE(transactions.YEAR(transaction_time)) MODE(transactions.WEEKDAY(transaction_time)) NUM_UNIQUE(transactions.MONTH(transaction_time)) NUM_UNIQUE(transactions.DAY(transaction_time))
session_id ...
1 1 desktop 2 1 2 77.846250 60091 1 5.60 5 ... desktop 1 1 131 149.95 5.60 2014 2 1 1
2 1 desktop 2 1 3 89.533000 60091 1 8.67 4 ... desktop 1 1 131 149.95 5.60 2014 2 1 1
3 5 mobile 2 1 5 67.130000 02139 1 20.91 5 ... tablet 5 1 58 148.17 5.91 2014 2 1 1
4 3 mobile 2 1 1 82.172800 02139 1 8.70 5 ... desktop 3 1 78 147.73 6.78 2014 2 1 1
5 2 tablet 2 1 1 65.031818 02139 1 6.29 5 ... mobile 2 1 122 149.15 5.81 2014 2 1 1

[5 rows x 40 columns]

后续更新。

Featuretools介绍相关推荐

  1. 特征工程之自动特征生成(自动特征衍生)工具Featuretools介绍

    源文件地址:https://docs.featuretools.com/ 参考内容:https://blog.csdn.net/q337100/article/details/80804887 Fea ...

  2. Featuretools快速使用指南--看这一篇就够了

    Featuretools简单攻略 Featuretools介绍 Featuretools快速开始 Featuretools介绍 人工特性工程是一项冗长乏味的任务,并且受到人类想象力的限制--我们可以思 ...

  3. 手把手教你用Python实现自动特征工程

    任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...

  4. python特征工程插件_手把手教你用Python实现自动特征工程

    任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...

  5. 【特征工程】特征衍生+案例

    问:特征衍生上千.万的变量,是怎么做的? 问:大家是如何衍生出成千上万个变量的?衍生变量是怎么生成的? 研习社-上海-桂浩: 请教一个问题,大家是如何衍生出成千上万个变量的?衍生变量是怎么生成的 云何 ...

  6. 独家 | 用Python Featuretools库实现自动化特征工程(附链接)

    作者:Prateek Joshi 翻译:张玲 校对:李润嘉 本文约4000字,建议阅读10分钟. 本文简要介绍特征工程的基本组成部分,并用直观的示例理解它们,最后给出使用Python Featuret ...

  7. 机器学习实战 | 自动化特征工程工具Featuretools应用

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/article-d ...

  8. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  9. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

最新文章

  1. python爬虫——随机生成headers
  2. Rundll32.exe文件详解(显示我的电脑 取消自动登录)
  3. 如何制作cab包(解决不能注册的问题)
  4. [:zh]<界面编程>任务二 用户注册界面设计[:]2018-01-24
  5. 如何通过DBLINK取REMOTE DB的DDL
  6. 专业音频如何把电平转换成dbu_谭俊峰|录课、买麦,你应该了解的音频常识
  7. CF935D Fafa and Ancient Alphabet 概率dp(递推)
  8. IDEA使用PlantUML构建类图,时序图等
  9. 2019年老电脑E5450+硬改775 无故死机故障排除记录
  10. Java核心技术 基础知识网盘下载
  11. 盖洛普Q12测评法(转载)
  12. sys matlab,matlab中sys什么意思
  13. Android studio 分渠道打包,引用不同的moudle
  14. 金融行业网络架构与技术探讨
  15. OWASP WebGoat---安全测试学习笔记(一)
  16. 万象网管重启计算机,万象网管客户端改了密码没用?重启就不对了?
  17. 关于汽车隔音和音响改装,难听,但确是实话
  18. 1-1 MySQL数据库的基本操作 【增删改查】
  19. 《人工智能原理》读书笔记:第2章 体系论
  20. 基于过程的软件测试全景图 (2)

热门文章

  1. 大数据关键技术:自然语言处理入门篇
  2. UNIDRV.HLP文件路径,装打印机时,复制过去就解决了
  3. php-fpm 超时,nginx和php-fpm连接超时之解决方法
  4. 三国风云辅助工具——乌鸦的机器人
  5. 如何删除GitHub中的项目
  6. 北达科他州证券监管机构针对3家ICO提出终止令
  7. 训练软件类项目投标文件示例
  8. 第8章第28节:完成企业业绩幻灯片的制作 [PowerPoint精美幻灯片实战教程]
  9. C语言实现三子棋(不是人工智障哈哈哈)
  10. 多功能脂质体的构建实现主动靶向性和定制服务