Ошибка IterativeImputer: ввод содержит NaN, бесконечность или слишком большое значение для dtype('float64')

Я работаю над набором данных с несколькими отсутствующими значениями в его атрибутах.

Выполнив типичную процедуру предварительной обработки данных, мой следующий шаг — попытаться подогнать регрессионную модель для вменения пропущенных значений. Однако, когда я пытаюсь использовать IterativeImputer из fancyimpute. Я сталкиваюсь с этой ошибкой:

C:\Users\User.DC241-12\Anaconda3\lib\site-packages\sklearn\linear_model\ridge.py:942: RuntimeWarning: overflow encountered in square
  v = s ** 2
****hierarchy of filenames in which error is happening****
Input contains NaN, infinity or a value too large for dtype('float64')

Я понимаю, что отсутствующие значения, вводимые в IterativeImputer, должны быть представлены как NaNs, поэтому я думаю, что это не причина. Должен ли я масштабировать свои данные, прежде чем переходить к процессу вменения. Но не повлияет ли это на процесс вменения?

Спасибо!


person Syeman    schedule 22.10.2018    source источник
comment
Покажите пример кода и данных, которые воспроизводят эту ошибку.   -  person Vivek Kumar    schedule 26.10.2018


Ответы (1)


У меня была аналогичная проблема с этим. Проблема для меня заключалась в том, что некоторые из моих значений, подаваемых в импутер, были довольно большими (значения> 10 000 000) и имели большой набор данных (более 500 000 строк). Эти большие значения каким-то образом усложняются в алгоритме, который использует IterativeImputer, и переполняют float64 numpy.

Попробуйте масштабировать свои значения, выполнить вменение, а затем масштабировать обратно (обратить процесс масштабирования вниз) после того, как вменение будет выполнено.

person jGraves    schedule 01.11.2018
comment
Спасибо. Я попробую это. - person Syeman; 03.11.2018