尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

机器学习特征预处理之数据正态变换

机器学习特征预处理之数据正态变换
📅 发布时间:2026/7/19 2:27:35

函数功能分析

核心目的:对指定的数值列应用Power Transformation(幂变换),使数据更接近正态分布,常用于满足统计模型假设或提升模型性能。

技术实现分析

优点

  1. 方法灵活:支持'yeo-johnson'(支持零和负值)和'box-cox'(仅正值)两种方法

  2. 正确分离拟合与变换:训练集上fit_transform,测试集上仅transform,避免数据泄露

  3. 基于sklearn实现:使用成熟的PowerTransformer,稳定可靠

def transformation(X_train, X_test, num_cols, method='yeo-johnson'): """数据正态变换(改进版)""" # 1. 输入验证 if not all(col in X_train.columns for col in num_cols): raise ValueError("部分列不在X_train中") # 2. 检查空值 if X_train[num_cols].isnull().any().any(): raise ValueError("训练数据包含空值,请先处理") # 3. 复制数据避免原地修改(可选) X_train = X_train.copy() X_test = X_test.copy() # 4. 确保数值类型 X_train[num_cols] = X_train[num_cols].astype(float) X_test[num_cols] = X_test[num_cols].astype(float) # 5. 变换 pt = PowerTransformer(method=method) X_train[num_cols] = pt.fit_transform(X_train[num_cols]) X_test[num_cols] = pt.transform(X_test[num_cols]) return X_train, X_test

调用示例

import pandas as pd import numpy as np from sklearn.preprocessing import PowerTransformer from sklearn.model_selection import train_test_split # 准备示例数据 np.random.seed(42) data = pd.DataFrame({ 'age': np.random.exponential(scale=30, size=1000), # 偏态分布 'income': np.random.lognormal(mean=10, sigma=1, size=1000), # 对数正态 'score': np.random.normal(loc=70, scale=15, size=1000), # 正态 'category': np.random.choice(['A', 'B', 'C'], size=1000) # 分类变量 }) # 划分训练集和测试集 X_train, X_test = train_test_split(data, test_size=0.2, random_state=42) # 指定要变换的数值列 num_cols = ['age', 'income'] # score已经是正态,可不变换 # 调用函数 X_train_transformed, X_test_transformed = transformation( X_train, X_test, num_cols, method='yeo-johnson' ) print("变换前 - 训练集统计:") print(X_train[['age', 'income']].describe()) print("\n变换后 - 训练集统计:") print(X_train_transformed[['age', 'income']].describe())

适用场景

场景推荐度说明
线性回归/逻辑回归⭐⭐⭐⭐⭐提升模型对异常值的鲁棒性
SVM/神经网络⭐⭐⭐⭐加速收敛,但非必需
树模型(RF/XGB)⭐⭐对分布不敏感,可跳过
小样本数据集⭐⭐⭐注意过拟合风险

额外注意事项

  1. Yeo-Johnson vs Box-Cox:

    • 数据包含零/负值 → 必须用Yeo-Johnson

    • 仅正值 → Box-Cox通常效果更好(更稳定)

  2. 后续处理:

    • 保存pt对象,用于新数据的变换

    • 记录变换参数(如λ值),便于逆变换和解释

  3. PCA/特征工程前使用效果更佳

相关新闻

  • Microsoft Agent Framework:企业级AI智能体的安全运行时框架
  • OpenList的Office文档预览新方式-基于宝塔面板Docker容器的BaseMetas Fileview安装与配置教程
  • 2026最新8款企业团队编程软件实测深度对比

最新新闻

  • Android定时任务实现:AlarmManager详解与优化
  • 服务器电源架构解析:从PFC到LLC谐振变换的可靠性设计
  • .NET生态现状与开发者应对策略
  • 补充描述:IEC 61850 中 ICD、CID、SCL、SCD、IID 的关系说明
  • Intelligent Lux:智能引导式EDA工作流重构
  • Java TimerTask定时任务详解与Android实践

日新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号