Scikit-learn: ValueError: входные данные содержат NaN, бесконечность или значение, слишком большое для dtype('float64') Python

Программы на Python
Anonymous
Scikit-learn: ValueError: входные данные содержат NaN, бесконечность или значение, слишком большое для dtype('float64')

Сообщение Anonymous »

Некоторое время я использовал scikit-learn для регрессоров гауссовских процессов, работая с адаптивно построенными моделями, где существующая GP используется для выбора новых точек данных для GP. Недавно в некоторых случаях я столкнулся со следующей ошибкой:

Код: Выделить всё

    mu, sig = gprMdl.predict(candidate_pts, return_std=True)
File "filepath_hidden/python/3.9.8/lib/python3.9/site-packages/sklearn/gaussian_process/_gpr.py", line 371, in predict
X = self._validate_data(X, ensure_2d=ensure_2d, dtype=dtype, reset=False)
File "filepath_hidden/python/3.9.8/lib/python3.9/site-packages/sklearn/base.py", line 561, in _validate_data
X = check_array(X, **check_params)
File "filepath_hidden/python/3.9.8/lib/python3.9/site-packages/sklearn/utils/validation.py", line 792, in check_array
_assert_all_finite(array, allow_nan=force_all_finite == "allow-nan")
File "filepath_hidden/python/3.9.8/lib/python3.9/site-packages/sklearn/utils/validation.py", line 114, in _assert_all_finite
raise ValueError(
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
Предыдущие ответы, такие как ValueError: входные данные содержат NaN, бесконечность или значение, слишком большое для dtype('float64'). Хотя подгонка в модели будет означать, что где-то в наборе данных есть значение NaN, вызывающее это. Однако входные данные генерируются случайными выборками из распределения Гаусса, а выходные данные ограничены пределами [-1,1]. Я обязательно проверил данные, используемые для создания соответствия GP, с помощью np.where(np.isnan(data)) и это подтверждает, что в наборе данных GP нет значений NaN до оценки, вызвавшей эту ошибку.< /p>
Моей следующей мыслью было то, что это было вызвано какой-то проблемой обработки, поскольку фильтр Тан, примененный к данным, потенциально мог создать большое количество значений выходных данных, которые примерно равны -1 или 1. , но это не так, поскольку число обусловленности для ядра GP, оцененное в его входных точках данных, остается постоянным на уровне 1e7 во всех предыдущих моделях, построенных с теми же данными, за исключением самой последней точки данных. И удаление или ослабление фильтра не имели никакого эффекта.
  • Изменить: в случайно сгенерированных оценочных точках нет NaN.
Последнее, что я могу себе представить, это то, что это может быть просто проблема вычисления модели со слишком большим количеством выходных данных и слишком большим количеством входных точек данных (примерно 100 точек данных). GP оценен в 25 000 баллов), но это не кажется чем-то особенным, выходящим за рамки использования пакета, и ранее у меня не было такой проблемы с тем же кодом, но с другим набором данных.
Поэтому я должен спросить, что может быть причиной этого?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -large-for

Вернуться в «Python»