Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy.log1p()的用途是什么?_Python_Numpy - Fatal编程技术网

Python numpy.log1p()的用途是什么?

Python numpy.log1p()的用途是什么?,python,numpy,Python,Numpy,嘿,我是卡格尔的新手,正在做房屋预测数据集。我只是遇到了其中的一个,无法理解numpy.log1p()在代码的第三个管道中做了什么 我在谷歌上搜索了一下,numpy的文档显示了这一点 返回: 自然对数值为x+1的数组 其中x属于输入数组的所有元素 但是,在查找具有相同特征的原始数组和转换数组的偏度时,查找添加了一个(+1)的日志的目的是什么?它有什么作用 有人能给我指点路吗? 对于实值输入,log1p对于x非常小,以至于1+x==1的浮点精度也很高 例如,让我们添加一个很小的非零数字和1.0

嘿,我是卡格尔的新手,正在做房屋预测数据集。我只是遇到了其中的一个,无法理解
numpy.log1p()
在代码的第三个管道中做了什么

我在谷歌上搜索了一下,numpy的文档显示了这一点

返回

  • 自然对数值为x+1的数组
  • 其中x属于输入数组的所有元素
但是,在查找具有相同特征的原始数组和转换数组的偏度时,查找添加了一个(+1)的日志的目的是什么?它有什么作用

有人能给我指点路吗?

对于实值输入,
log1p
对于
x
非常小,以至于
1+x==1
的浮点精度也很高

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

>>> 1e-100 == 0.0
False
>>> 1e-100 + 1.0 == 1.0
True
如果我们尝试获取不正确总和的
日志
,我们会得到不正确的结果(与比较):

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

>>> np.log1p(1e-100)
1e-100
同样的原则适用于和:对于较小的
x

如果x在0…+Inf范围内,那么它永远不会导致错误(正如我们所知,日志(0)会导致错误)


并非总是最佳选择,因为正如您所看到的,当您的输入值很小时,使用
np.log1p
np.expm1
进行计算时,您将丢失x=0之前的一条大曲线,这是对数函数的最佳特性之一,根据。

的解释,您将得到比
np.log
np.exp
更准确的结果,因为零的日志会产生错误…我们从不给日志零,因为
feat\u-trial
中包含数据。顺便说一句,我的问题是取对数的意义是什么?好吧,我知道了,对数是用来响应大值的偏斜;i、 例如,一个或几个点比大量数据大得多的情况。但是为什么要在x上加1;虽然它甚至不是空的,并且里面有数据,但log1p对于求和日志概率(概率的一种常见表示)也很有用。更多详细信息,请参见“谢谢”,也很清楚这是否仅适用于较小的x值?由于我们给这个np.log1p()的输入,即“feat_trial”中有很大的值,因此它们的精度对于所有的数字都是好的(尽管所有的浮点数对于较大的值都会失去精度),我不明白为什么log1p是有用的(而不仅仅是使用log(1+x))。如果我们假设x在[0;+inf]中,那么避免日志(0)错误并不是存在log1p(x)的原因,因为日志(1+p)永远不会引发该错误。
>>> np.log1p(1e-100)
1e-100