数据预处理—5.box-cox变换及python实现
文章目录
- 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常数。
参考:
- box-cox变换
如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!
数据预处理—5.box-cox变换及python实现相关推荐
- python部分引入total值的问题_Python数据分析基础与过程综述,关键数据预处理异常点的发现与处理,python,及,流程,回顾,重点,之,值...
一. python数据分析基础库的导入 基本是固定搭配 import numpy as np #科学计算基础库,多维数组对象ndarray import pandas as pd #数据处理库,Dat ...
- 数据预处理--对偏态数据
转载自:https://blog.csdn.net/csdn_lzw/article/details/83387570 及:https://blog.csdn.net/sinat_26917383/a ...
- 数据预处理之特征选择(Feature Selections Methods)
在机器学习领域,数据预处理对于我们之后的数据训练起着非常关键的作用,Feature Selections 作为数据预处理中非常重要的一个步骤,可以说他起着决定性的作用,那么今天我们就来探究一下几种数据 ...
- 【Python实战】数据预处理(数据清理、集成、变换、归约)
[Python实战]数据预处理 前言 数据预处理概述 数据清理 异常数据处理 1.异常数据分析 2.异常数据处理方法 缺失值处理 噪声数据处理 数据集成 1.实体识别 2.冗余属性 3.数据不一致 数 ...
- python图片保存和图片展示顺序_【IT专家】【 python 】 —— 数据预处理:(1) 读取与显示图片 + 图像通道顺序变换...
本文由我司收集整编,推荐下载,如有疑问,请与我司联系 [ python ] -- 数据预处理: (1) 读取与显示图片 + 图像通道顺 序变换 2018/05/31 29 # ---- 用 OPENC ...
- python数据预处理—数据清洗、数据集成、数据变换、数据归约
进行数据分析时,需要预先把进入模型算法的数据进行数据预处理.一般我们接收到的数据很多都是"脏数据",里面可能包含缺失值.异常值.重复值等:同时有效标签或者特征需要进一步筛选,得到有 ...
- python数据预处理实验_PimaIndiansdiabetes-数据预处理实验(一)
有趣的事,Python永远不会缺席! 一.PimaIndiansdiabetes.csv 数据集介绍 1.该数据集最初来自国家糖尿病/消化/肾脏疾病研究所.数据集的目标是基于数据集中包含的某些诊断测量 ...
- Python数据分析:常见的数据预处理方法
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于数据杂论,作者:Wpc7113 Python 数据分析入门案例讲解 https:// ...
- python 归一化_一文学会用python进行数据预处理
怎样用Python进行数据转换和归一化 1.概述 实际的数据库极易受到噪声.缺失值和不一致数据的侵扰,因为数据库太大,并且多半来自多个异种数据源,低质量的数据将会导致低质量的数据分析结果,大量的数 ...
- python常用的数据预处理方法
2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://2hwp.com/2016/02/03/data-preprocessing/ 常见的数据预处理方法,以 ...
最新文章
- IOS获取焦点页面上移问题
- log4j.logger java_log4j的多logger记录日志的简明使用
- Eclipse和intellij idea 快捷键对比
- 【DB2】NVL2函数
- 站点CSS样式不起作用,或仅仅有一部分起作用?随手记
- 事实上着就是MAYA4.5完全手册插件篇的内容
- Android junit单元测试
- elasticsearch获取一个字段的值_Elasticsearch,你觉得自己懂了多少,看看这篇文章吧...
- oracle存储过程插入自动编号,Oracle生成单据编号存储过程的实例代码
- struts2值栈分析
- python 文本处理操作
- 数字电路课程设计--电子钟实验报告
- netsetman使用教程_NetSetMan配置网络参数教程
- 值对象 Value Object
- matlab 整流滤波,基于Matlab_Simulink的整流滤波电路的建模与仿真
- html鼠标跟踪特效,HTML5 WebGL带鼠标跟踪的月晕涟漪动画特效
- 音频隐写术总结篇(附隐写软件下载链接)
- linux修改主机名命令
- java5至java17新特性总结(开发相关)
- 搜狗输入法如何输入直角引号(「『』」 )