Я использую sklearn, и у меня проблема с распространением сродства. Я построил матрицу ввода и продолжаю получать следующую ошибку.
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
Я бежал
np.isnan(mat.any()) #and gets False
np.isfinite(mat.all()) #and gets True
Я пробовал использовать
mat[np.isfinite(mat) == True] = 0
чтобы удалить бесконечные значения, но это тоже не сработало. Что я могу сделать, чтобы избавиться от бесконечных значений в моей матрице, чтобы я мог использовать алгоритм распространения сродства?
Я использую анаконду и python 2.7.9.
python
python-2.7
scikit-learn
valueerror
Итан Уолди
источник
источник
float64
них одновременно конечны и нетnan
. Сообщение об ошибке уместно - это почти наверняка проблема для всех, кто здесь оказался.Ответы:
Это может произойти внутри scikit, и это зависит от того, что вы делаете. Я рекомендую прочитать документацию по используемым вами функциям. Возможно, вы используете тот, который зависит, например, от того, является ли ваша матрица положительно определенной и не соответствует этим критериям.
РЕДАКТИРОВАТЬ : Как я мог пропустить это:
очевидно неверно. Правильно было бы:
и
Вы хотите проверить, является ли какой-либо элемент NaN, а не является ли возвращаемое значение
any
функции числом ...источник
У меня такое же сообщение об ошибке при использовании sklearn с пандами . Мое решение - сбросить индекс моего фрейма данных
df
перед запуском любого кода sklearn:Я сталкивался с этой проблемой много раз, когда удалял некоторые записи в моем
df
, напримеристочник
Это моя функция ( в зависимости от этого ) , чтобы очистить набор данных
nan
,Inf
и отсутствие клеток (для перекошенных наборов данных):источник
dropna
потом второй раз при сбросе инф.Размеры моего входного массива были искажены, так как в моем входном CSV были пустые места.
источник
dropna
pandas.pydata.org/pandas-docs/stable/generated/…Это проверка, на которой он терпит неудачу:
Что говорит
Поэтому убедитесь, что у вас есть значения, отличные от NaN. И все эти значения на самом деле являются значениями с плавающей запятой. Ни одно из значений также не должно быть Inf.
источник
В этой версии Python 3:
Просматривая детали ошибки, я обнаружил строки кода, вызывающие сбой:
Исходя из этого, я смог извлечь правильный способ проверить, что происходит с моими данными, используя тот же тест, который не соответствует сообщению об ошибке:
np.isfinite(X)
Затем с помощью быстрого и грязного цикла я смог обнаружить, что мои данные действительно содержат
nans
:Теперь все, что мне нужно сделать, это удалить значения в этих индексах.
источник
У меня возникла ошибка после попытки выбрать подмножество строк:
Оказывается, они
my_index
содержали значения, которых не былоdf.index
, поэтому функция переиндексации вставила несколько новых строк и заполнила ихnan
.источник
В большинстве случаев избавление от бесконечных и нулевых значений решает эту проблему.
избавиться от бесконечных ценностей.
избавьтесь от нулевых значений, как вам нравится, конкретное значение, такое как 999, среднее значение, или создайте свою собственную функцию для вменения отсутствующих значений
источник
У меня была такая же ошибка, и в моем случае X и y были фреймами данных, поэтому мне пришлось сначала преобразовать их в матрицы:
Edit: Первоначально предполагалось X.as_matrix () является Устаревшее
источник
у меня такая же ошибка. он работал
df.fillna(-99999, inplace=True)
до замены, замены и т. д.источник
nan
значения; ты должен его найти.В моем случае проблема заключалась в том, что многие функции scikit возвращают массивы numpy, которые лишены индекса pandas. Таким образом, было несоответствие индексов, когда я использовал эти массивы numpy для создания новых DataFrames, а затем я попытался смешать их с исходными данными.
источник
Удалите все бесконечные значения:
(и замените на min или max для этого столбца)
источник
пытаться
Если сумма ваших данных бесконечна (больше, чем максимальное значение с плавающей запятой, равное 3,402823e + 38), вы получите эту ошибку.
см. функцию _assert_all_finite в validation.py из исходного кода scikit:
источник