ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生


优炫软件
优炫软件 2022-09-19 11:17:19 50969
分类专栏: 资讯

ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生

目录

基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生

设计思路

输出结果

实现代码


推荐文章
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生实现

基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生

设计思路

输出结果

  1. customer_id zip_code join_date date_of_birth
  2. 0 1 60091 2011-04-17 10:48:33 1994-07-18
  3. 1 2 13244 2012-04-15 23:31:04 1986-08-18
  4. 2 3 13244 2011-08-13 15:42:34 2003-11-21
  5. 3 4 60091 2011-04-08 20:08:14 2006-08-15
  6. 4 5 60091 2010-07-17 05:27:50 1984-07-28
  7. session_id customer_id device session_start
  8. 13 14 1 tablet 2014-01-01 03:28:00
  9. 6 7 3 tablet 2014-01-01 01:39:40
  10. 1 2 5 mobile 2014-01-01 00:17:20
  11. 28 29 1 mobile 2014-01-01 07:10:05
  12. 24 25 3 desktop 2014-01-01 05:59:40
  13. transaction_id session_id transaction_time product_id amount
  14. 74 232 5 2014-01-01 01:20:10 1 139.20
  15. 231 27 17 2014-01-01 04:10:15 2 90.79
  16. 434 36 31 2014-01-01 07:50:10 3 62.35
  17. 420 56 30 2014-01-01 07:35:00 3 72.70
  18. 54 444 4 2014-01-01 00:58:30 4 43.59
  19. zip_code ... NUM_UNIQUE(transactions.sessions.device)
  20. customer_id ...
  21. 1 60091 ... 3
  22. 2 13244 ... 3
  23. 3 13244 ... 3
  24. 4 60091 ... 3
  25. 5 60091 ... 3
  26. [5 rows x 77 columns]
  27. customer_id ... customers.YEAR(join_date)
  28. session_id ...
  29. 1 2 ... 2012
  30. 2 5 ... 2010
  31. 3 4 ... 2011
  32. 4 1 ... 2011
  33. 5 4 ... 2011
  34. [5 rows x 44 columns]
  35. <Feature: MODE(transactions.WEEKDAY(transaction_time))>
  36. The most frequently occurring value of the day of the week of the "transaction_time" of all instances of "transactions" for each "session_id" in "sessions".

实现代码

  1. import featuretools as ft
  2. 1、定义数据集
  3. data = ft.demo.load_mock_customer()
  4. '''
  5. 在这个玩具数据集中,有3个表。每个表在Featuretools中称为一个实体。
  6. customers:拥有会话的独特客户
  7. sessions:唯一的会话和相关属性
  8. transactions:此会话中的事件列表
  9. '''
  10. customers_df = data["customers"]
  11. sessions_df = data["sessions"]
  12. transactions_df = data["transactions"]
  13. print(customers_df)
  14. print(sessions_df.sample(5))
  15. print(transactions_df.sample(5))
  16. 2、DFS设计
  17. (1)、指定一个包含数据集中所有实体的字典
  18. entities = {"customers" : (customers_df, "customer_id"),
  19. "sessions" : (sessions_df, "session_id", "session_start"),
  20. "transactions" : (transactions_df, "transaction_id", "transaction_time")
  21. }
  22. (2)、指定实体间如何关联:当两个实体有一对多关系时,我们称之为“one”实体,即“parent entity”。
  23. 父类和子类之间的关系是这样定义的:
  24. (parent_entity, parent_variable, child_entity, child_variable)
  25. 在这个数据集中,我们有两个关系
  26. relationships = [("sessions", "session_id", "transactions", "session_id"),
  27. ("customers", "customer_id", "sessions", "customer_id")]
  28. 为了管理实体和关系的设置,我们建议使用EntitySet类,它为管理这样的数据提供了方便的api
  29. (3)、运行深度特征合成
  30. '''
  31. DFS的最小输入是一组实体、一组关系和计算特性的“target_entity”。DFS的输出是一个特征矩阵和相应的特征定义列表。
  32. 让我们首先为数据中的每个客户创建一个特性矩阵,那么现在有几十个新特性来描述客户的行为。
  33. '''
  34. feature_matrix_customers, features_defs = ft.dfs(entities=entities,
  35. relationships=relationships,
  36. target_entity="customers")
  37. print(feature_matrix_customers)
  38. (4)、改变目标的实体
  39. DFS如此强大的原因之一是它可以为我们的数据中的任何实体创建一个特征矩阵。例如,如果我们想为会话构建特性
  40. feature_matrix_sessions, features_defs = ft.dfs(entities=entities,
  41. relationships=relationships,
  42. target_entity="sessions")
  43. print(feature_matrix_sessions.head(5))
  44. (5)、理解特征输出
  45. '''
  46. 一般来说,Featuretools通过特性名称引用生成的特性。
  47. 为了让特性更容易理解,Featuretools提供了两个额外的工具,Featuretools .graph_feature()和Featuretools .describe_feature(),
  48. 来帮助解释什么是特性以及Featuretools生成特性的步骤。
  49. '''
  50. feature = features_defs[18]
  51. print(feature)
  52. (6)、特征谱系图
  53. 特征谱系图可视地遍历功能生成过程。从基本数据开始,它们一步一步地展示应用的原语和生成的中间特征,以创建最终特征。
  54. import matplotlib.pyplot as plt
  55. ft.graph_feature(feature)
  56. plt.show()
  57. (7)、特征描述
  58. '''
  59. 功能工具还可以自动生成功能的英文句子描述。特性描述有助于解释什么是特性,并且可以通过包含手动定义的自定义来进一步改进。
  60. 有关如何自定义自动生成的特性描述的详细信息,请参见生成特性描述。
  61. '''
  62. print(ft.describe_feature(feature))

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=2015
赞同 0
评论 0 条
优炫软件L2
粉丝 0 发表 26 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2672
【软件正版化】软件正版化工作要点  2637
统信UOS试玩黑神话:悟空  2532
信刻光盘安全隔离与信息交换系统  2216
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1092
grub引导程序无法找到指定设备和分区  743
WPS City Talk · 校招西安站来了!  15
看到某国的寻呼机炸了,就问你用某水果手机发抖不?  14
金山办公2024算法挑战赛 | 报名截止日期更新  14
有在找工作的IT人吗?  13
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!