Featuretools中的Woodwork类型系统详解

Featuretools中的Woodwork类型系统详解

featuretools featuretools 项目地址: https://gitcode.com/gh_mirrors/fea/featuretools

概述

Featuretools是一个强大的自动化特征工程工具,它依赖于一套完整的类型系统来确保在创建实体集(EntitySet)、特征基元(Primitives)、特征(Features)和特征矩阵时的类型一致性。在Featuretools中,Woodwork类型系统扮演着至关重要的角色。

Woodwork类型系统的三大支柱

1. 物理类型(Physical Types)

物理类型定义了数据在磁盘或内存中的存储方式,也称为列的dtype。理解物理类型很重要,因为Pandas在执行DataFrame操作时依赖这些类型。

关键点:

  • 每个Woodwork逻辑类型类都有一个对应的物理类型
  • 物理类型决定了数据在底层如何存储和操作

2. 逻辑类型(Logical Types)

逻辑类型提供了超出物理类型之外的额外信息,用于解释或解析数据。多个逻辑类型可能共享相同的物理类型,但赋予数据不同的含义。

在Featuretools中:

  • 逻辑类型决定了数据如何被读入实体集
  • 影响深度特征合成(Deep Feature Synthesis)的使用方式

Featuretools提供了list_logical_types()函数来查看所有可用的逻辑类型:

import featuretools as ft
ft.list_logical_types()

3. 语义标签(Semantic Tags)

语义标签为列提供了关于数据含义或潜在用途的额外信息。一个列可以有多个语义标签,也可以没有。

语义标签分为两类:

Woodwork定义的语义标签

这些标签由Woodwork在初始化时自动添加,可以使用list_semantic_tags()函数查看:

ft.list_semantic_tags()
Featuretools定义的语义标签
  • 'last_time_index':表示该列是由Featuretools创建的最后时间索引列
  • 'foreign_key':表示该列是关系的子列,与另一个DataFrame中的索引列相关联

Woodwork在Featuretools中的应用

在实体集中的应用

实体集中的每个DataFrame都存储了Woodwork类型信息。我们可以通过ww命名空间访问这些信息:

es = ft.demo.load_retail()
products_df = es["products"]
products_df.ww

这将显示DataFrame中每列的物理类型、逻辑类型和语义标签。

在深度特征合成(DFS)中的应用

特征基元(Primitives)需要能够指定允许的输入类型和可预测的返回类型。Woodwork的ColumnSchema对象用于描述这些类型。

ColumnSchema示例
product_ids_series = products_df.ww["product_id"]
column_schema = product_ids_series.ww.schema
column_schema

ColumnSchema可以:

  1. 作为单个列的类型定义
  2. 描述其他列可能落入的类型空间
类型空间示例
  1. 无限制的类型空间(包含整个DataFrame):
from woodwork.column_schema import ColumnSchema
ColumnSchema()
  1. 按语义标签限制的类型空间(仅包含数值列):
ColumnSchema(semantic_tags={"numeric"})
  1. 按逻辑类型限制的类型空间(仅包含整数列):
from woodwork.logical_types import Integer
ColumnSchema(logical_type=Integer)
  1. 组合限制的类型空间(整数且为数值的列):
ColumnSchema(logical_type=Integer, semantic_tags={"numeric"})

实际应用场景

  1. 特征基元的输入输出类型:每个基元都有input_typesreturn_type,由ColumnSchema描述

  2. 特征生成:在DFS过程中,Featuretools会选择与基元input_types匹配的列,生成具有明确类型定义的特征

  3. 特征堆叠:特征的column_schema属性允许DFS将特征层层堆叠

总结

Woodwork类型系统为Featuretools提供了强大的类型支持,使得:

  • 实体集的构建更加精确
  • 特征基元的输入输出类型定义更加清晰
  • 深度特征合成的过程更加可控和可预测

理解Woodwork类型系统将帮助您更好地利用Featuretools进行自动化特征工程,构建更有效的机器学习模型。

featuretools featuretools 项目地址: https://gitcode.com/gh_mirrors/fea/featuretools

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

资源下载链接为: https://pan.quark.cn/s/3d8e22c21839 随着 Web UI 框架(如 EasyUI、JqueryUI、Ext、DWZ 等)的不断发展与成熟,系统界面的统一化设计逐渐成为可能,同时代码生成器也能够生成符合统一规范的界面。在这种背景下,“代码生成 + 手工合并”的半智能开发模式正逐渐成为新的开发趋势。通过代码生成器,单表数据模型以及一对多数据模型的增删改查功能可以被直接生成并投入使用,这能够有效节省大约 80% 的开发工作量,从而显著提升开发效率。 JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。它引领了一种全新的开发模式,即从在线编码(Online Coding)到代码生成器生成代码,再到手工合并(Merge)的智能开发流程。该平台能够帮助开发者解决 Java 项目中大约 90% 的重复性工作,让开发者可以将更多的精力集中在业务逻辑的实现上。它不仅能够快速提高开发效率,帮助公司节省大量的人力成本,同时也保持了开发的灵活性。 JEECG 的核心宗旨是:对于简单的功能,可以通过在线编码配置来实现;对于复杂的功能,则利用代码生成器生成代码后,再进行手工合并;对于复杂的流程业务,采用表单自定义的方式进行处理,而业务流程则通过工作流来实现,并且可以扩展出任务接口,供开发者编写具体的业务逻辑。通过这种方式,JEECG 实现了流程任务节点和任务接口的灵活配置,既保证了开发的高效性,又兼顾了项目的灵活性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屈蒙吟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值