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

Featuretools介绍

人工特性工程是一项冗长乏味的任务,并且受到人类想象力的限制——我们可以思考创建的特性只有这么多,而且随着时间的推移,创建新特性需要大量的时间。理想情况下,应该有一个客观的方法来创建一系列不同的候选新特性,然后我们可以将这些特性用于机器学习任务。这个过程的目的不是替换数据科学家,而是使他的工作更容易,并允许他使用自动工作流补充领域知识。

Featuretools

Featuretools快速开始

以官方文档为例:

下面是使用深度特征合成 (DFS) 执行自动化特征工程的示例。在此示例中,我们将 DFS 应用于由带有时间戳的客户交易组成的多表数据集。

import featuretools as ft #引用featuretools库

加载模拟数据

data = ft.demo.load_mock_customer()

准备数据
在这个模拟数据集中,有 3 个 DataFrame:

  • customers: unique customers who had sessions
  • sessions: unique sessions and associated attributes
  • transactions: list of events in this session

注意我标红的地方

customers_df = data["customers"]
customers_df

customers

sessions_df = data["sessions"]
sessions_df.sample(5)

sessions

transactions_df = data["transactions"]
transactions_df.sample(5)

transactions
首先,我们指定一个包含数据集中所有 DataFrame 的字典。如果 DataFrame 存在索引列和时间索引列,则 DataFrame 将与其索引列和时间索引列一起传入。

dataframes = {
   "customers" : (customers_df, "customer_id"),
   "sessions" : (sessions_df, "session_id", "session_start"),
   "transactions" : (transactions_df, "transaction_id", "transaction_time")
}

其次,我们指定 DataFrames 是如何关联的。当两个 DataFrame 具有一对多关系时,我们称“一个”DataFrame,即“父 DataFrame”。sessions中包含重复的customer_id值,即customers是父而sessions是子,父子关系定义如下:

(parent_dataframe, parent_column, child_dataframe, child_column)

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

relationships = [("sessions", "session_id", "transactions", "session_id"),
                 ("customers", "customer_id", "sessions", "customer_id")] #左为父,右为子

运行深度特征合成
DFS 的最小输入是 DataFrame 的字典(dataframes)、关系列表(relationships)以及我们要计算其特征的目标 DataFrame 的名称(target_dataframe_name)。 DFS 的输出是一个特征矩阵和相应的特征定义列表。

feature_matrix_customers, features_defs = ft.dfs(dataframes=dataframes,
                                                 relationships=relationships,
                                                 target_dataframe_name="customers")
feature_matrix_customers

输出结果
我们现在有几十个新特征来描述客户的行为。
更改目标 DataFrame
DFS 如此强大的原因之一是它可以为我们的 EntitySet 中的任何 DataFrame 创建一个特征矩阵。例如,如果我们想为会话构建功能。

feature_matrix_sessions, features_defs = ft.dfs(dataframes=dataframes,
                                                relationships=relationships,
                                                target_dataframe_name="sessions")
feature_matrix_sessions.head(5)

输出结果
了解特征输出
一般来说,Featuretools 通过特征名称引用生成的特征。为了让特性更容易理解,Featuretools 提供了两个额外的工具,featuretools.graph_feature() 和 featuretools.describe_feature(),帮助解释什么是特征以及 Featuretools 生成它的步骤。让我们看一下这个示例功能。

feature = features_defs[18]
feature

特征描述
特征谱系图
特征谱系图直观地遍历特征生成。从基础数据开始,它们逐步显示应用的基元和生成的中间特征以创建最终特征。

ft.graph_feature(feature)

特征谱系图
功能描述
Featuretools 还可以自动生成特征的英文句子描述。功能描述有助于解释什么是功能,并且可以通过包含手动定义的自定义定义来进一步改进。关如何自定义自动生成的功能描述的更多详细信息,请参阅生成功能描述。

ft.describe_feature(feature)

‘The most frequently occurring value of the year of the “transaction_time” of all instances of “transactions” for each “session_id” in “sessions”.’

这样,我们就基于三个DataFrame利用Featuretools生成十几个特征,供我们挖掘数据信息。后面会利用用实体集来表示数据,而不是字典。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Featuretools是一个Python工具库,用于自动化特征工程的过程。它可以帮助用户快速构建丰富的数据特征,从而节省时间并提高机器学习模型的性能。Featuretools的官方网站提供了详细的文档和快速入门指南,以帮助用户了解和使用它的功能。 Featuretools有三个主要组件,分别是: 1. 实体(Entity):实体是指数据集中的一个表或一个关联的数据集。Featuretools可以自动识别并处理多个实体之间的关系。 2. 特征(Feature):特征是指从数据中提取出来的有用信息,例如统计特征、时间窗口特征等。Featuretools可以自动创建和组合多种特征。 3. 前进特征生成(Deep Feature Synthesis,简称DFS):DFS是Featuretools的核心概念,它可以通过自动化地合成特征来构建复杂的特征集。DFS基于实体和关系之间的定义,自动发现并构造具有意义的特征。 通过使用Featuretools,用户可以快速构建高质量的特征集,从而提高机器学习模型的性能和准确性。它的简洁易用的API和丰富的功能使得特征工程变得更加高效和便捷。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Py之featuretoolsfeaturetools库的简介、安装、使用方法之详细攻略](https://blog.csdn.net/qq_41185868/article/details/106027740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [机器学习实战 | 自动化特征工程工具Featuretools应用](https://blog.csdn.net/ShowMeAI/article/details/123650547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值