python Box-Cox数据变化与逆变化

Box-Cox数据变化是一个基于参数λ的数据变化方法

  • 接受任意分布的输入,但需要值>0
  • 可以使变化后的数据减少变量之间的相关性
  • 减少噪声

在这里插入图片描述

数据Box-Cox变化与逆变换

stats box-cox变化请参考:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.boxcox.html

逆变换请参考:https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.inv_boxcox.html

from scipy.stats import boxcox
from scipy.special import inv_boxcox
from numpy.random import pareto


array = pareto(3, size=(1000))  # 生成幂律分布数据

box_array, lambda0 = boxcox(array)  # box-cox变换
origin_array = inv_boxcox(box_array, lambda0)  # 逆box-cox变换

这里的lambda0就是上面公式里的λ,可以在变换时给定,如果没有给定,就会通过max{y}使用最大似然求出参数λ

示例代码

numpy生成幂律分布请参考:https://numpy.org/doc/stable/reference/random/generated/numpy.random.pareto.html

from scipy.stats import boxcox
from numpy.random import pareto
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.special import inv_boxcox

if __name__ == '__main__':
    array = pareto(3, size=(1000))  # 生成幂律分布数据
    box_array, lambda0 = boxcox(array)  # box-cox变换
    origin_array = inv_boxcox(box_array, lambda0)  # 逆box-cox变换
    # 绘图
    sns.distplot(array, kde=False, rug_kws={'color': 'g'})
    sns.distplot(box_array, kde=False, rug_kws={'color': 'r'})
    plt.show()

效果图如下:

在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值