嘿,我是kaggle的新手,正在研究 House预测数据集。我刚刚遇到其中一个Kernels,无法理解numpy.log1p()
在此代码的第三个管道中做了什么
我用谷歌搜索它,numpy的文档告诉它
退货:
但是在找到相同特征的原始和转换数组的偏度时,找到添加了一个(+1)的日志的目的是什么?它做了什么?
有人可以指导我吗?
答案 0 :(得分:19)
对于实值输入,
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)
如果x的范围是0 ... + Inf,则它将永远不会导致错误(因为我们知道log(0)会导致错误)。
并非始终是最佳选择,因为如您所见,在x = 0之前您将失去一条大曲线,这是关于对数函数的最好的事情之一
答案 2 :(得分:0)
当您的输入值太小时,使用np.log1p
或np.expm1
进行计算,根据以下解释,您将获得比np.log
或np.exp
更准确的结果this link。