2022年Python顶级自动化特征工程框架⛵

简介: 特征工程一般是手动完成,不仅依赖于工程师的丰富经验,也非常耗时。因此『自动化特征工程』可以自动生成大量候选特征,帮助数据科学家显著提升了工作效率和模型效果。
dcd2f8d48e32d2b12a78537102e6f380.png
1df22b61e669a991c5c6857fdc783722.png

特征工程(feature engineering)指的是:利用领域知识和现有数据,创造出新的特征,用于机器学习算法。

  • 特征:数据中抽取出来的对结果预测有用的信息。
  • 特征工程:使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
在业界有一个很流行的说法:数据与特征工程决定了模型的上限,改进算法只不过是逼近这个上限而已。

特征工程的目的是提高机器学习模型的整体性能,以及生成最适合用于机器学习的算法的输入数据集。

关于特征工程的各种方法详解,欢迎大家阅读 ShowMeAI 整理的特征工程解读教程。

💡 自动化特征工程

在很多生产项目中,特征工程都是手动完成的,而且它依赖于先验领域知识、直观判断和数据操作。整个过程是非常耗时的,并且场景或数据变换后又需要重新完成整个过程。而『自动化特征工程』希望对数据集处理自动生成大量候选特征来帮助数据科学家和工程师们,可以选择这些特征中最有用的进行进一步加工和训练。

自动化特征工程是很有意义的一项技术,它能使数据科学家将更多时间花在机器学习的其他环节上,从而提高工作效率和效果。

40a74cb0a2a6737022f11c23a1197eec.png

在本篇内容中,ShowMeAI将总结数据科学家在 2022 年必须了解的 Python 中最流行的自动化特征工程框架。

  • Feature Tools
  • TSFresh
  • Featurewiz
  • PyCaret

💡 Feature Tools

📌 简介

📘Featuretools是一个用于执行自动化特征工程的开源库。 ShowMeAI在文章 机器学习实战 | 自动化特征工程工具Featuretools应用 中也对它做了介绍。

bd92ae8074aa9ea8a9b63cea36a915fc.png

要了解 Featuretools,我们需要了解以下三个主要部分:

  • Entities
  • Deep Feature Synthesis (DFS)
  • Feature primitives

在 Featuretools 中,我们用 Entity 来囊括原本 Pandas DataFrame 的内容,而 EntitySet 由不同的 Entity 组合而成。

Featuretools 的核心是 Deep Feature Synthesis(DFS) ,它实际上是一种特征工程方法,它能从单个或多个 DataFrame中构建新的特征。

DFS 通过 EntitySet 上指定的 Feature primitives 创建特征。例如,primitives中的mean函数将对变量在聚合时进行均值计算。

📌 使用示例

💦 ① 数据与预处理

以下示例转载自 📘官方快速入门

# 安装
# pip install featuretools

import featuretools as ft
data = ft.demo.load_mock_customer()

# 载入数据集
customers_df = data["customers"]
customers_df
4a1ac4760afb0f2e9a6e56dcf0287686.png
sessions_df = data["sessions"]
sessions_df.sample(5)
28b3a48b4183d39ad1c9715a919313d3.png
transactions_df = data["transactions"]
transactions_df.sample(5)
780981c90a61ac6360727d3bdf7da966.png

下面我们指定一个包含数据集中每个 DataFrame 的字典,如果数据集有索引index列,我们会和 DataFrames 一起传递,如下图所示。

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

接下来我们定义 DataFrame 之间的连接。在这个例子中,我们有两个关系:

relationships = [
    ("sessions", "session_id", "transactions", "session_id"),
    ("customers", "customer_id", "sessions", "customer_id"),
]

💦 ② 深度特征合成

接下来我们可以通过DFS生成特征了,它需要『DataFrame 的字典』、『Dataframe关系列表』和『目标 DataFrame 名称』3个基本输入。

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

feature_matrix_customers
755dc937551f2a9906b999baf37e7dba.png

比如我们也可以以sessions为目标dataframe构建新特征。

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

💦 ③ 特征输出

Featuretools不仅可以完成自动化特征生成,它还可以对生成的特征可视化,并说明Featuretools 生成它的方法。

feature = features_defs[18]
feature
f2070b7f20a4fc2c0a89162296cfb893.png

💡 TSFresh

📌 简介

📘TSFresh 是一个开源 Python 工具库,有着强大的时间序列数据特征抽取功能,它应用统计学、时间序列分析、信号处理和非线性动力学的典型算法与可靠的特征选择方法,完成时间序列特征提取。

9af5b1a5c36c005a84d7e18f1543201b.png

TSFresh 自动从时间序列中提取 100 个特征。 这些特征描述了时间序列的基本特征,例如峰值数量、平均值或最大值或更复杂的特征,例如时间反转对称统计量。

8a88a8460baa812c9b760612bd2fa0b7.png

📌 使用示例

# 安装
# pip install tsfresh

# 数据下载
from tsfresh.examples.robot_execution_failures import download_robot_execution_failures, load_robot_execution_failures

download_robot_execution_failures()
timeseries, y = load_robot_execution_failures()

# 特征抽取
from tsfresh import extract_features
extracted_features = extract_features(timeseries, column_id="id", column_sort="time")

💡 Featurewiz

📌 简介

Featurewiz 是另外一个非常强大的自动化特征工程工具库,它结合两种不同的技术,共同帮助找出最佳特性:

c7137f4d57a998b0014c114be1728735.png

💦 ① SULOV

Searching for the uncorrelated list of variables:这个方法会搜索不相关的变量列表来识别有效的变量对,它考虑具有最低相关性和最大 MIS(互信息分数)评级的变量对并进一步处理。

343c06c48d80349bbb14b8dae4bc22d7.png
03cdcffaf10aa222133405c758223d91.png

💦 ② 递归 XGBoost

上一步SULOV中识别的变量递归地传递给 XGBoost,通过xgboost选择和目标列最相关的特征,并组合它们,作为新的特征加入,不断迭代这个过程,直到生成所有有效特征。

96891ebcd3235c1f1ad24e122e88e8cb.png

📌 使用示例

简单的使用方法示例代码如下:

from featurewiz import FeatureWiz
features = FeatureWiz(corr_limit=0.70, feature_engg='', category_encoders='', dask_xgboost_flag=False, nrows=None, verbose=2)
X_train_selected = features.fit_transform(X_train, y_train)
X_test_selected = features.transform(X_test)
features.features  # 选出的特征列表 #

# 自动化特征工程构建特征
import featurewiz as FW
outputs = FW.featurewiz(dataname=train, target=target, corr_limit=0.70, verbose=2, sep=',', 
                header=0, test_data='',feature_engg='', category_encoders='',
                dask_xgboost_flag=False, nrows=None)

💡 PyCaret

📌 简介

📘PyCaret是 Python 中的一个开源、低代码机器学习库,可自动执行机器学习工作流。它是一个端到端的机器学习和模型管理工具,可加快实验周期并提高工作效率。

07cfa42a1edcc07c7c47ee430e1920d0.png

与本文中的其他框架不同,PyCaret 不是一个专用的自动化特征工程库,但它包含自动生成特征的功能。

📌 使用示例

# 安装
# pip install pycaret

# 加载数据
from pycaret.datasets import get_data
insurance = get_data('insurance')

# 初始化设置
from pycaret.regression import *
reg1 = setup(data = insurance, target = 'charges', feature_interaction = True, feature_ratio = True)
30a229e05031137f614c7aafc1ff710b.png

参考资料

e9190f41b8de4af38c8a1a0c96f0513b~tplv-k3u1fbpfcp-zoom-1.image

目录
相关文章
|
6天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
42 8
|
9天前
|
搜索推荐 Python
使用Python自动化生成物业通知单
本文介绍如何使用Python结合Pandas和python-docx库自动化生成物业通知单。通过读取Excel数据并填充至Word模板,实现高效准确的通知单批量制作。包括环境准备、代码解析及效果展示,适用于物业管理场景。
46 14
|
12天前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
12天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
16天前
|
Java 测试技术 API
探索软件测试中的自动化框架选择####
在当今快节奏的软件开发周期中,自动化测试已成为确保产品质量与加速产品迭代的关键策略。本文深入剖析了自动化测试的核心价值,对比分析了市场上主流的自动化测试框架,旨在为项目团队提供选型时的考量因素及实践指南,助力高效构建适应未来变化的自动化测试体系。 ####
|
12天前
|
人工智能 自然语言处理 JavaScript
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
Agent-E 是一个基于 AutoGen 代理框架构建的智能自动化系统,专注于浏览器内的自动化操作。它能够执行多种复杂任务,如填写表单、搜索和排序电商产品、定位网页内容等,从而提高在线效率,减少重复劳动。本文将详细介绍 Agent-E 的功能、技术原理以及如何运行该系统。
54 5
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
|
11天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
13天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
23 7
|
14天前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
41 7
|
11天前
|
数据管理 jenkins 测试技术
自动化测试框架的设计与实现
在软件开发周期中,测试是确保产品质量的关键步骤。本文通过介绍自动化测试框架的设计原则、组件构成以及实现方法,旨在指导读者构建高效、可靠的自动化测试系统。文章不仅探讨了自动化测试的必要性和优势,还详细描述了框架搭建的具体步骤,包括工具选择、脚本开发、执行策略及结果分析等。此外,文章还强调了持续集成环境下自动化测试的重要性,并提供了实际案例分析,以帮助读者更好地理解和应用自动化测试框架。