ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生-阿里云开发者社区

开发者社区> 一个处女座的程序猿> 正文

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

简介: ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
+关注继续查看

设计思路

image.png



输出结果


image.png



  customer_id zip_code           join_date date_of_birth

0            1    60091 2011-04-17 10:48:33    1994-07-18

1            2    13244 2012-04-15 23:31:04    1986-08-18

2            3    13244 2011-08-13 15:42:34    2003-11-21

3            4    60091 2011-04-08 20:08:14    2006-08-15

4            5    60091 2010-07-17 05:27:50    1984-07-28

   session_id  customer_id   device       session_start

13          14            1   tablet 2014-01-01 03:28:00

6            7            3   tablet 2014-01-01 01:39:40

1            2            5   mobile 2014-01-01 00:17:20

28          29            1   mobile 2014-01-01 07:10:05

24          25            3  desktop 2014-01-01 05:59:40

    transaction_id  session_id    transaction_time product_id  amount

74              232           5 2014-01-01 01:20:10          1  139.20

231              27          17 2014-01-01 04:10:15          2   90.79

434              36          31 2014-01-01 07:50:10          3   62.35

420              56          30 2014-01-01 07:35:00          3   72.70

54              444           4 2014-01-01 00:58:30          4   43.59

           zip_code  ...  NUM_UNIQUE(transactions.sessions.device)

customer_id           ...                                          

1              60091  ...                                         3

2              13244  ...                                         3

3              13244  ...                                         3

4              60091  ...                                         3

5              60091  ...                                         3

[5 rows x 77 columns]

           customer_id  ... customers.YEAR(join_date)

session_id               ...                          

1                     2  ...                      2012

2                     5  ...                      2010

3                     4  ...                      2011

4                     1  ...                      2011

5                     4  ...                      2011

[5 rows x 44 columns]

<Feature: MODE(transactions.WEEKDAY(transaction_time))>

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".




实现代码


import featuretools as ft

# 1、定义数据集

data = ft.demo.load_mock_customer()

'''

在这个玩具数据集中,有3个表。每个表在Featuretools中称为一个实体。

customers:拥有会话的独特客户

sessions:唯一的会话和相关属性

transactions:此会话中的事件列表

'''

customers_df = data["customers"]

sessions_df = data["sessions"]

transactions_df = data["transactions"]

print(customers_df)

print(sessions_df.sample(5))

print(transactions_df.sample(5))

# 2、DFS设计

# (1)、指定一个包含数据集中所有实体的字典

entities = {"customers" : (customers_df, "customer_id"),

           "sessions" : (sessions_df, "session_id", "session_start"),

           "transactions" : (transactions_df, "transaction_id", "transaction_time")

           }

# (2)、指定实体间如何关联:当两个实体有一对多关系时,我们称之为“one”实体,即“parent entity”。

# 父类和子类之间的关系是这样定义的:

# (parent_entity, parent_variable, child_entity, child_variable)

# 在这个数据集中,我们有两个关系

relationships = [("sessions", "session_id", "transactions", "session_id"),

                ("customers", "customer_id", "sessions", "customer_id")]

# 为了管理实体和关系的设置,我们建议使用EntitySet类,它为管理这样的数据提供了方便的api

# (3)、运行深度特征合成

'''

DFS的最小输入是一组实体、一组关系和计算特性的“target_entity”。DFS的输出是一个特征矩阵和相应的特征定义列表。

让我们首先为数据中的每个客户创建一个特性矩阵,那么现在有几十个新特性来描述客户的行为。

'''

feature_matrix_customers, features_defs = ft.dfs(entities=entities,

                                                relationships=relationships,

                                                target_entity="customers")

print(feature_matrix_customers)

# (4)、改变目标的实体

# DFS如此强大的原因之一是它可以为我们的数据中的任何实体创建一个特征矩阵。例如,如果我们想为会话构建特性

feature_matrix_sessions, features_defs = ft.dfs(entities=entities,

                                               relationships=relationships,

                                               target_entity="sessions")

print(feature_matrix_sessions.head(5))

# (5)、理解特征输出

'''

一般来说,Featuretools通过特性名称引用生成的特性。

为了让特性更容易理解,Featuretools提供了两个额外的工具,Featuretools .graph_feature()和Featuretools .describe_feature(),

来帮助解释什么是特性以及Featuretools生成特性的步骤。

'''

feature = features_defs[18]

print(feature)

# (6)、特征谱系图

#特征谱系图可视地遍历功能生成过程。从基本数据开始,它们一步一步地展示应用的原语和生成的中间特征,以创建最终特征。

import matplotlib.pyplot as plt

ft.graph_feature(feature)

plt.show()

# (7)、特征描述

'''

功能工具还可以自动生成功能的英文句子描述。特性描述有助于解释什么是特性,并且可以通过包含手动定义的自定义来进一步改进。

有关如何自定义自动生成的特性描述的详细信息,请参见生成特性描述。

'''

print(ft.describe_feature(feature))




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
38 0
使用容器编排工具docker swarm安装clickhouse多机集群
1.首先需要安装docker最新版,docker 目前自带swarm容器编排工具 2.选中一台机器作为master,执行命令sudo docker  swarm init [options] 3,再需要加入集群的集群上执行此命令   4.
3195 0
Docker编排工具Docker-compose
当然我们已经了解了Docker基础使用,当然我们要全面Docker化还有一段路要走,今天给大家带来的是编排工具,应为复杂度使用docker run 容器的时候需要配置很多内容比如端口映射,磁盘挂载,环境变量等,全部在命令中格式麻烦也不好保存,并且如果多个容器之前需要关联也特别麻烦,所以有了Docker三剑客之一的Docker-compose出面来解决这个问题.
97 0
AI平台-NeuronBlocks【NLP工具】
NeuronBlocks是一个模块化NLP深度学习建模工具包,可以帮助工程师/研究者们快速构建NLP任务的神经网络模型。 该工具包的主要目标是将NLP中深度神经网络模型构建的开发成本降到最低,包括训练阶段和推断阶段。
1162 0
poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
/** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @ClassName: CreateExcel * @Description: TODO() * @author www.xiongge.club *
2008 0
Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
概 述 MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器。它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ORM层代码,典型地包括我们日常需要手写的 POJO、mapper xml 以及 mapper 接口等。
1839 0
《自己动手写docker》之namespace部门实验
动手写一遍,印象不一样! package main import ( "log" "os" "os/exec" "syscall" ) func main() { cmd := exec.
1114 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载