numpy.log1p()的目的是什么?

时间:2018-03-28 15:12:36

标签: python numpy

嘿,我是kaggle的新手,正在研究 House预测数据集。我刚刚遇到其中一个Kernels,无法理解numpy.log1p()在此代码的第三个管道中做了什么

我用谷歌搜索它,numpy的文档告诉它

退货

  • 自然对数值为x + 1的数组;
  • 其中x属于输入数组的所有元素。

但是在找到相同特征的原始和转换数组的偏度时,找到添加了一个(+1)的日志的目的是什么?它做了什么?

有人可以指导我吗?

3 个答案:

答案 0 :(得分:19)

NumPy docs give a hint

  

对于实值输入,log1p对于x也是准确的,以1 + x == 1为浮点精度。{/ p>

例如,让我们添加一个很小的非零数字和1.0。舍入错误使其成为1.0

>>> 1e-100 == 0.0
False
>>> 1e-100 + 1.0 == 1.0
True

如果我们尝试获取该错误总和的log,我们会得到错误的结果(与WolframAlpha相比):

>>> np.log(1e-100 + 1)
0.0

但如果我们使用log1p(),我们会得到正确的结果

>>> np.log1p(1e-100)
1e-100

同样的原则适用于exp1m()logaddexp():小x更准确。

答案 1 :(得分:3)

https://docs.scipy.org/doc/numpy/reference/generated/numpy.log1p.html

enter image description here

如果x的范围是0 ... + Inf,则它将永远不会导致错误(因为我们知道log(0)会导致错误)。

并非始终是最佳选择,因为如您所见,在x = 0之前您将失去一条大曲线,这是关于对数函数的最好的事情之一

答案 2 :(得分:0)

当您的输入值太小时,使用np.log1pnp.expm1进行计算,根据以下解释,您将获得比np.lognp.exp更准确的结果this link