PyCaret数据转换:Box-Cox与Yeo-Johnson变换

【免费下载链接】pycaret An open-source, low-code machine learning library in Python 【免费下载链接】pycaret 项目地址: https://gitcode.com/gh_mirrors/py/pycaret

PyCaret是一个开源的低代码机器学习库,提供了简单高效的数据预处理功能,其中Box-Cox和Yeo-Johnson变换是常用的特征工程技术,能够有效改善数据分布特性,提升模型性能。

为什么需要数据转换?

在机器学习中,许多算法假设数据服从正态分布。实际应用中,原始数据往往存在偏斜分布,这会影响模型的预测效果。Box-Cox和Yeo-Johnson变换通过数学函数将非正态数据转换为更接近正态分布的形式,帮助模型更好地学习数据规律。

PyCaret数据预处理流程 图:PyCaret的核心功能模块,数据准备是机器学习流程的重要环节

Box-Cox变换:处理正数值数据

Box-Cox变换适用于所有数值为正的数据集,通过以下公式实现数据转换:

y(λ) = (y^λ - 1)/λ, 当λ ≠ 0
y(λ) = ln(y), 当λ = 0

其中λ是变换参数,PyCaret会自动选择最优λ值使数据分布更接近正态。

Yeo-Johnson变换:支持零和负值数据

Yeo-Johnson变换是Box-Cox的扩展版本,支持包含零和负值的数据,其变换公式为:

y(λ) = [(y+1)^λ - 1]/λ, 当λ ≠ 0且y ≥ 0
y(λ) = ln(y+1), 当λ = 0且y ≥ 0
y(λ) = -[( -y + 1)^(2-λ) - 1]/(2-λ), 当λ ≠ 2且y < 0
y(λ) = -ln(-y + 1), 当λ = 2且y < 0

在PyCaret中使用变换的简单步骤

PyCaret提供了直观的API,只需在setup函数中设置相应参数即可启用数据变换功能:

PyCaret回归功能示例 图:PyCaret回归分析的功能API示例,包含数据加载、模型训练和预测的完整流程

基本使用方法:

# 初始化设置时启用Box-Cox变换
from pycaret.regression import setup
setup(data, target='charges', transformation=True, transformation_method='box-cox')

# 或使用Yeo-Johnson变换
setup(data, target='charges', transformation=True, transformation_method='yeo-johnson')

变换选择的实用建议

  • ✅ 当数据全部为正时,优先选择Box-Cox变换
  • ✅ 当数据包含零或负值时,使用Yeo-Johnson变换
  • ✅ 通过绘制Q-Q图或Shapiro-Wilk检验评估变换效果
  • ⚠️ 注意:某些变换可能引入新的特征相关性,建议结合特征选择使用

快速上手PyCaret

PyCaret快速入门演示 图:PyCaret快速入门演示,展示从数据加载到模型部署的完整流程

要开始使用PyCaret进行数据转换和机器学习建模,只需执行以下命令安装:

pip install pycaret

通过PyCaret的低代码接口,即使是机器学习新手也能轻松应用Box-Cox和Yeo-Johnson等高级数据变换技术,显著提升模型性能。详细使用方法可参考官方文档和教程。

【免费下载链接】pycaret An open-source, low-code machine learning library in Python 【免费下载链接】pycaret 项目地址: https://gitcode.com/gh_mirrors/py/pycaret

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐