Какова цель numpy.log1p ()?

Привет, я новичок в kaggle и работаю над Набор данных House Prediction. Я только что наткнулся на один из этих Ядра и не мог понять, что делает numpy.log1p() в третьем конвейере этого кода.

Я погуглил, и документация numpy говорит об этом

Возврат:

  • Массив с натуральным логарифмическим значением x + 1;
  • где x принадлежит всем элементам входного массива.

Но какова цель поиска журнала с одним добавленным (+1) при обнаружении асимметрии исходного и преобразованного массива одинаковых функций? Что оно делает ?

Может ли кто-нибудь направить меня?

потому что логарифм нуля вызывает ошибку ...

William 28.03.2018 17:14

Мы никогда не указываем ноль в журнале, потому что в feat_trial есть данные. Кстати, мой вопрос был в том, какой смысл вести журнал?

Sabah 28.03.2018 17:18

Хорошо, я понял, что журналы используются для реагирования на перекос в сторону больших значений; то есть случаи, когда одна или несколько точек намного больше, чем основная часть данных. но зачем прибавлять 1 к x; а он даже не пустой и в нем есть данные?

Sabah 28.03.2018 17:27

log1p также полезен для суммирования логарифмических вероятностей (общее представление вероятностей). Подробнее на en.wikipedia.org/wiki/Log_probability

user118967 07.08.2020 20:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
25
4
24 638
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Документы NumPy дают подсказку:

For real-valued input, log1p is accurate also for x so small that 1 + x == 1 in floating-point accuracy.

Так, например, давайте добавим крошечное ненулевое число и 1.0. Ошибки округления делают его 1.0.

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

Если мы попытаемся взять log этой неверной суммы, мы получим неверный результат (сравните с Вольфрам Альфа):

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

Но если мы воспользуемся log1p(), то получим правильный результат

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

Тот же принцип действует для exp1m() и logaddexp(): они более точны для небольших x.

Спасибо, также ясно, применимо ли это только для небольших значений x? Поскольку ввод, который мы даем этому np.log1p (), то есть feat_trial, имеет в нем большие значения

Sabah 28.03.2018 17:42

Ожидается, что их точность будет хорошей для всех чисел (хотя все числа с плавающей запятой теряют точность для больших значений)

Nils Werner 01.04.2018 09:34

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

Если x находится в диапазоне 0 ... + Inf, тогда это никогда не вызовет ошибки (как мы знаем, log (0) вызовет ошибку).

Не всегда лучший выбор, потому что, как вы видите, вы потеряете большую кривую перед x = 0, что является одним из лучших моментов в функции журнала.

Я не понимаю, почему log1p полезен (в отличие от простого использования log (1 + x)). Если мы предполагаем, что x находится в [0; + inf], то избежание ошибки log (0) не будет причиной существования log1p (x), потому что log (1 + p) никогда не вызовет эту ошибку.

user118967 07.08.2020 21:25

Когда ваше входное значение настолько мало, используя для расчета np.log1p или np.expm1, вы получите более точный результат, чем np.log или np.exp в соответствии с интерпретацией из эта ссылка.

Другие вопросы по теме