文章目录

  • 1.box-cox变换是什么?
  • 2.python实现
    • 2.1逆变换

接上一篇:

  • 特征工程—4.为什么要趋近于正态分布?详解

1.box-cox变换是什么?

  Box-Cox变换是Box和Cox在1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。Box-Cox变换之后,可以一定程度上减小不可观测的误差和预测变量的相关性。Box-Cox变换的主要特点是引入一个参数,通过数据本身估计该参数进而确定应采取的数据变换形式,Box-Cox变换可以明显地改善数据的正态性、对称性和方差相等性,对许多实际数据都是行之有效的。
  通俗来讲,Box-Cox变换就是来修正偏态和峰度以使得原始分布接近正态分布,修正后的分布满足了线性回归假设中的正态性与同方差。Box-Cox变换的一个显著优点是通过求变换参数来确定变换形式,而这个过程完全基于数据本身而无须任何先验信息,这无疑比凭经验或通过尝试而选用对数、平方根等变换方式要客观和精确。
  Box-Cox变换的目的是为了让数据满足线性模型的基本假定,即线性、正态性及方差齐性,然而经Box-Cox变换后数据是否同时满足了以上假定,仍需要考察验证

2.python实现

  scipy.special.boxcox1p是Box-Cox变换的函数。scipy.stats.boxcox_normmax是用来计算输入数据的最佳Box-Cox变换参数,即scipy.special.boxcox1p函数中的lamda。

scipy.special.boxcox1p(x, lmbda)

python实现

## Import necessary modules
from scipy.special import boxcox1p
from scipy.stats import boxcox_normmaxdef fixing_skewness(df):"""This function takes in a dataframe and return fixed skewed dataframe"""# 得到所有非类别型变量numeric_feats = df.dtypes[df.dtypes != "object"].index# 计算所有非类别型特征的偏态并排序skewed_feats = df[numeric_feats].apply(lambda x: x.skew()).sort_values(ascending=False)# 对偏态大于0.5的进行修正,大于0是右偏,小于0是左偏high_skew = skewed_feats[abs(skewed_feats) > 0.5]skewed_features = high_skew.index# 修正for feat in skewed_features:# 这里是+1是保证数据非负,否则会弹出错误,没有其他含义,不会影响对偏态的修正df[feat] = boxcox1p(df[feat], boxcox_normmax(df[feat] + 1))

举例:
修正前:

修正后:

2.1逆变换

如果变换的是目标变量,那么还需要对测试集的预测值进行反Box-Cox变换,
Python实现

from scipy.special import inv_boxcox
y = inv_boxcox(x1, lambda)

其中x为需要进行反Box-Cox变换的数据,即预测值,lamda为训练集Box-Cox时使用的lambda,如果在训练集Box-Cox变换时使用了C常数(即上面中的+1)进行了非零处理,那么还需要再反变换之后减去这个C常数。

参考:

  1. box-cox变换

如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!


数据预处理—5.box-cox变换及python实现相关推荐

  1. python部分引入total值的问题_Python数据分析基础与过程综述,关键数据预处理异常点的发现与处理,python,及,流程,回顾,重点,之,值...

    一. python数据分析基础库的导入 基本是固定搭配 import numpy as np #科学计算基础库,多维数组对象ndarray import pandas as pd #数据处理库,Dat ...

  2. 数据预处理--对偏态数据

    转载自:https://blog.csdn.net/csdn_lzw/article/details/83387570 及:https://blog.csdn.net/sinat_26917383/a ...

  3. 数据预处理之特征选择(Feature Selections Methods)

    在机器学习领域,数据预处理对于我们之后的数据训练起着非常关键的作用,Feature Selections 作为数据预处理中非常重要的一个步骤,可以说他起着决定性的作用,那么今天我们就来探究一下几种数据 ...

  4. 【Python实战】数据预处理(数据清理、集成、变换、归约)

    [Python实战]数据预处理 前言 数据预处理概述 数据清理 异常数据处理 1.异常数据分析 2.异常数据处理方法 缺失值处理 噪声数据处理 数据集成 1.实体识别 2.冗余属性 3.数据不一致 数 ...

  5. python图片保存和图片展示顺序_【IT专家】【 python 】 —— 数据预处理:(1) 读取与显示图片 + 图像通道顺序变换...

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 [ python ] -- 数据预处理: (1) 读取与显示图片 + 图像通道顺 序变换 2018/05/31 29 # ---- 用 OPENC ...

  6. python数据预处理—数据清洗、数据集成、数据变换、数据归约

    进行数据分析时,需要预先把进入模型算法的数据进行数据预处理.一般我们接收到的数据很多都是"脏数据",里面可能包含缺失值.异常值.重复值等:同时有效标签或者特征需要进一步筛选,得到有 ...

  7. python数据预处理实验_PimaIndiansdiabetes-数据预处理实验(一)

    有趣的事,Python永远不会缺席! 一.PimaIndiansdiabetes.csv 数据集介绍 1.该数据集最初来自国家糖尿病/消化/肾脏疾病研究所.数据集的目标是基于数据集中包含的某些诊断测量 ...

  8. Python数据分析:常见的数据预处理方法

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于数据杂论,作者:Wpc7113 Python 数据分析入门案例讲解 https:// ...

  9. python 归一化_一文学会用python进行数据预处理

    怎样用Python进行数据转换和归一化 1.概述 ​ 实际的数据库极易受到噪声.缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异种数据源,低质量的数据将会导致低质量的数据分析结果,大量的数 ...

  10. python常用的数据预处理方法

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://2hwp.com/2016/02/03/data-preprocessing/ 常见的数据预处理方法,以 ...

最新文章

  1. IOS获取焦点页面上移问题
  2. log4j.logger java_log4j的多logger记录日志的简明使用
  3. Eclipse和intellij idea 快捷键对比
  4. 【DB2】NVL2函数
  5. 站点CSS样式不起作用,或仅仅有一部分起作用?随手记
  6. 事实上着就是MAYA4.5完全手册插件篇的内容
  7. Android junit单元测试
  8. elasticsearch获取一个字段的值_Elasticsearch,你觉得自己懂了多少,看看这篇文章吧...
  9. oracle存储过程插入自动编号,Oracle生成单据编号存储过程的实例代码
  10. struts2值栈分析
  11. python 文本处理操作
  12. 数字电路课程设计--电子钟实验报告
  13. netsetman使用教程_NetSetMan配置网络参数教程
  14. 值对象 Value Object
  15. matlab 整流滤波,基于Matlab_Simulink的整流滤波电路的建模与仿真
  16. html鼠标跟踪特效,HTML5 WebGL带鼠标跟踪的月晕涟漪动画特效
  17. 音频隐写术总结篇(附隐写软件下载链接)
  18. linux修改主机名命令
  19. java5至java17新特性总结(开发相关)
  20. 搜狗输入法如何输入直角引号(「『』」 )

热门文章

  1. iOS - 正则表达式判断邮箱、身份证..是否正确
  2. java day24【Stream流、方法引用】
  3. 2-ESP8266 SDK开发基础入门篇--点亮一个灯
  4. 2018-9-25 进入公司第一天
  5. 小程序navigator点击有时候会闪一下
  6. Server的Transfer和Response的Redirect
  7. .net dropdownlist 動態顯示,指定字段
  8. JSON解析(C++)
  9. RocketMQ开发指导之三——RocketMQ编程示例
  10. net 进阶学习 WebApi (2)