log1p的使用

如果数据非正态,可以使用log1p进行正态化,方便后继的数据处理。
未使用log1p
使用了log1p
可以看出,使用log1p后,数据明显正态化。

查看log1p的文档,发现该函数并不是直接对目标数据取对数,而是加1后取对数。
log1p(x) == log(x+1)

这样的操作,主要是因为当x很小时,log(x)会出错。

log(0)
Traceback (most recent call last):
File “”, line 1, in
NameError: name ‘log’ is not defined

此处注意一点:由于该样本为明显右偏,我们采用了取对数的方法使数据正态化。而取对数只是对右偏数据正态化其中一种方法而已,常见的针对右偏数据正态化的方法还有取平方根获取立方根等。
如果样本是左偏,数据正态化一般是指数函数。
显然对数据进行正态化的时候,还要先判断一下是否是右偏还是左偏,然后根据情况选择合适的函数(如log函数)进行正态化,过程显得有点啰嗦。

cox-box粉墨登场。你只需要把数据喂进去,它自动帮你判断数据是右偏还是左偏并选择合适的正态化函数。(具体python API为:scipy.special.boxcox1p)

关于数据的正态化详细细节可以参考:
http://www.360doc.com/content/16/0422/07/3448857_552751124.shtml
cox-box的详细细节可以参考:
http://www.360doc.com/content/16/0424/09/26166517_553312491.shtml

强烈建议通读以上两个链接的文章。

不过,这里有一个悬而未决的问题:数据为什么要正态化?我会在另外一篇博文里阐述下(感性的解释)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值