Featuretools 学习2 - 使用EntitySets表示数据

EntitySet

EntitySet是实体及其之间关系的集合。它们对为特征工程准备原始结构化的数据集很有用。虽然Featuretools中很多函数将entities和relationships作为单独的参数,但建议创建一个EntitySet,以便自己可以更轻松地操作数据。

原始数据

两个与客户交易相关的数据表(表示为Pandas DataFrames)
第一个是transactions,sessions和customers的合并,视觉效果如下:
在这里插入图片描述
第二个DataFrame是这些transactions包含的一系列产品。
在这里插入图片描述

创建一个EntitySet

首先,初始化一个EntitySet。如果想为其命名,就可以选择向构造函数提供一个id。
在这里插入图片描述

添加entities

首先将transactions dataframe作为一个entity load。
在这里插入图片描述
这种方法load的dataframe中的每一列看作一个variable。
在这里插入图片描述
调用entity_from_dataframe时,指定了3个重要参数:
index:指定列,该列能够唯一标识dataframe中的行;
time_index:告知Featuretools何时创建数据;
variable_types:指定“product_id”应解释为分类变量,即便它是基础数据中的整数。
同样,也可以对products dataframe做同样操作。
在这里插入图片描述
以上,在当前的entity set中有两个entities,可以在它们之间建立关系。

添加关系

希望通过每个entity中“product_id”列来关联两个实体。每个product都有与其关联的多个transactions,因此将product实体称为父实体,transaction实体称为子实体。当指定关系时,首先在父实体中列出变量。注意: ft.Relationship必须表示一对多的关系,而不是一对一或者多对多关系。
在这里插入图片描述

从现有表中创建实体

处理原始数据时,通常有足够的信息来证明创建新实体的合理性。为了sessions创建新的实体和关系,将transaction实体“normalize”。
在这里插入图片描述
上面呈现了两步操作,第一步是基于transactions中的“session_id”和“session_start”变量,创建了一个名为“sessions”的新实体;第二步是增加了transactions和sessions之间的关联。通过查看transactions中的变量和新的sessions实体,可以发现其他两个自动执行的操作。
在这里插入图片描述
第一个操作是从transactions中删除了“device”、“customer_id”、“zip_code”、
“join_date”,并在sessions实体中创建了一个新变量。这减少了冗余信息,因为sessions的那些属性在transactions之间不会更改。
第二个操作是将“session_start”作为时间索引变量复制并标记到新的sessions实体中,以指示session的开始。如果基础实体具有时间索引,并且没有设置make_time_index,则规范化实体将为新实体创建时间索引。在这种情况下,它将使用每个会话的第一个事务的时间创建一个称为“first_transactions_time”的新时间索引。如果我们不希望创建此时间索引,则可以设置make_time_index=False。可视化数据如下:
在这里插入图片描述
为了完整准备数据集,以相同的方式创建customers实体。
在这里插入图片描述

使用EntitySet

最后,就可以调用Featuretools中的任何functionality使用EntitySet了。比如,为数据集中的每个product创建一个特征矩阵。
在这里插入图片描述
DFS生成的特征使用了实体集合中的关系结构。因此,仔细考虑生成的实体是很重要的。
参考官方链接:Representating Data with EntitySets

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值