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

💡 作者:韩信子@ShowMeAI
📘 机器学习实战系列https://www.showmeai.tech/tutorials/41
📘 本文地址https://www.showmeai.tech/article-detail/328
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

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

  • 特征:数据中抽取出来的对结果预测有用的信息。
  • 特征工程:使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。

在业界有一个很流行的说法:数据与特征工程决定了模型的上限,改进算法只不过是逼近这个上限而已。

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

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

💡 自动化特征工程

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

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

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

  • Feature Tools
  • TSFresh
  • Featurewiz
  • *PyCaret

💡 Feature Tools

📌 简介

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

要了解 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
sessions_df = data["sessions"]
sessions_df.sample(5)
transactions_df = data["transactions"]
transactions_df.sample(5)

下面我们指定一个包含数据集中每个 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

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

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

💦 ③ 特征输出

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

feature = features_defs[18]
feature

💡 TSFresh

📌 简介

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

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

📌 使用示例

安装
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 是另外一个非常强大的自动化特征工程工具库,它结合两种不同的技术,共同帮助找出最佳特性:

💦 ① SULOV

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

💦 ② 递归 XGBoost

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

📌 使用示例

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

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

与本文中的其他框架不同,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)

参考资料

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

Original: https://www.cnblogs.com/showmeai/p/16889210.html
Author: ShowMeAI
Title: 2022年Python顶级自动化特征工程框架⛵

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/806632/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • dataframe的常用操作汇总

    本文章汇总了dataframe的一些常用操作,从创建该类型的数据,到数据的增删改取,以及存取excel的方法等,存在不足和遗漏,请谅解。 文章目录 1.创建dataframe * …

    Python 2023年8月6日
    0106
  • 利用资金曲线选择策略加减仓时机

    更多精彩内容, 欢迎关注公众号:数量技术宅,也可添加技术宅 个人微信号:sljsz01,与我交流。 每个策略都有其相适应的行情,如果某一段行情符合策略的逻辑,那么策略就会在这段行情…

    Python 2023年6月3日
    058
  • 训练篇:使用pytorch实现垃圾分类并部署使用,浏览器访问,前端Vue,后台Flask

    训练篇:使用pytorch实现垃圾分类并部署使用,浏览器访问,前端Vue,后台Flask 1.数据集准备 * 1.1数据集下载 1.2 数据集划分 1.3实现自己的Dataset …

    Python 2023年8月11日
    061
  • 【机器学习】李宏毅——机器学习基本概念简介

    机器学习就是找到一个我们人类无法写出来的函数来完成各种任务 机器学习的任务 回归Regression:输出是一个数值 例如:预测未来某一个时间PM2.5数值 分类Classific…

    Python 2023年10月24日
    043
  • pandas入门(二):pandas中DataFrame的用法

    DataFrame 是 pandas 中一个重要的数据结构,相当于表格数据模型,他能像 excel 那样方便的处理数据,能快速的生成统计数据和数据图形。在这里,看看 DataFra…

    Python 2023年8月7日
    048
  • python中的numpy基础知识

    numpy的基础知识总结 numpy是一个数据包,里面包含了关于多维数组对象和用于处理数组的例程集合组成的库。博主本身也是学生,最近把numpy的基础知识整理好写成博客,对nump…

    Python 2023年8月29日
    062
  • 第十四届蓝桥杯模拟赛第一期试题【Java解析】

    目录 A 二进制位数 问题描述 答案提交 参考答案 解析 B 晨跑 问题描述 答案提交 参考答案 解析 C 调和级数 问题描述 答案提交 参考答案 解析 D 山谷 问题描述 答案提…

    Python 2023年8月2日
    047
  • IOU原理详解代码复现 python numpy/pytorch

    IOU IOU就是两个图像的交并比,这是一个图像检测中很重要的概念,想要构建YOLO系列的目标检测对应函数,就必须要先写一个计算交并比的程序,什么是交并比,就是两个图像交集的面积比…

    Python 2023年8月24日
    043
  • Windows 安装 Android Studio

    1、下载Android Studio https://r1—sn-2x3edn7s.gvt1.com/edgedl/android/studio/install/2022.1.1….

    Python 2023年11月5日
    045
  • python pandas.merge_ordered 用法及代码示例

    pandas.merge_ordered(left, right, on=None, left_on=None, right_on=None, left_by=None, righ…

    Python 2023年8月6日
    043
  • MySQL库的操作

    文章目录 MySQL库的操作 * 创建数据库 创建数据库案例 字符集和校验规则 – 查看系统默认字符集以及校验规则 查看数据库支持的字符集 查看数据库支持的字符集校验规…

    Python 2023年9月17日
    058
  • 关于python安装scrapy报错的解决办法

    关于python安装scrapy报错的解决办法 报错内容 问题原因 Scrapy框架基于Twisted,因为我没有安装Twisted,所以Scrapy安装失败。于是我就在网上下载对…

    Python 2023年10月5日
    043
  • Django 3.2 开发web项目

    Django 3.2 开发web项目 开发环境 * Django安装 Django文档 Django创建 Django启动 Django目录介绍 Django创建自己的应用 COD…

    Python 2023年8月5日
    0107
  • aardio + PHP 可视化快速开发独立 EXE 桌面程序

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 入…

    Python 2023年8月15日
    079
  • 【机器学习】李宏毅——Transformer

    Transformer具体就是属于Sequence-to-Sequence的模型,而且 输出的向量的长度并不能够确定,应用场景如语音辨识、机器翻译,甚至是语音翻译等等,在文字上的话…

    Python 2023年10月12日
    057
  • python数据可视化-matplotlib入门(6)-从文件中加载数据

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月31日
    066
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球