Найти - Пользователи
Полная версия: Срочно! Ошибка ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
Начало » Python для новичков » Срочно! Ошибка ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
1
Belg
При действии MinMaxScaler и при самому предсказанию с помощью рандомного леса выдаётся ошибка:

C:\ProgramData\Anaconda3\lib\site-packages\numpy\core_methods.py:32: RuntimeWarning: invalid value encountered in reduce
return umr_sum(a, axis, dtype, out, keepdims)
ValueError Traceback (most recent call last)
in ()
2
3 scaler = MinMaxScaler()
—-> 4 x_train = scaler.fit_transform(x_train)
5 x_validation = scaler.fit_transform(x_validation)

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\base.py in fit_transform(self, X, y, **fit_params)
515 if y is None:
516 # fit method of arity 1 (unsupervised transformation)
–> 517 return self.fit(X, **fit_params).transform(X)
518 else:
519 # fit method of arity 2 (supervised transformation)

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\preprocessing\data.py in fit(self, X, y)
306 # Reset internal state before fitting
307 self._reset()
–> 308 return self.partial_fit(X, y)
309
310 def partial_fit(self, X, y=None):

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\preprocessing\data.py in partial_fit(self, X, y)
332
333 X = check_array(X, copy=self.copy, warn_on_dtype=True,
–> 334 estimator=self, dtype=FLOAT_DTYPES)
335
336 data_min = np.min(X, axis=0)

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
451 % (array.ndim, estimator_name))
452 if force_all_finite:
–> 453 _assert_all_finite(array)
454
455 shape_repr = _shape_repr(array.shape)

C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py in _assert_all_finite(X)
42 and not np.isfinite(X).all()):
43 raise ValueError(“Input contains NaN, infinity”
—> 44 “ or a value too large for %r.” % X.dtype)
45
46

ValueError: Input contains NaN, infinity or a value too large for dtype(‘float64’).

Не знаю, с этим делать, NaN быть не должно, так как юзал fillna(0). Чисел, которые не влазят во float64 тоже быть не должно. Понимаю, что инфы мало, но, может, кто натолкнёт на мысль, где хотя б искать проблему.
scidam
x_train – вероятно numpy array;
Значит лучше удостовериться, что точно он не содержит Nanов.

 import numpy as np 
print("The number of nans in x_train: ", np.isnan(x_train).sum())
Также может оказаться так, что когда вы применяется MinMaxScaler там происходит деление на 0, что приводит к inf значению…. Например, np.array()/np.array() – не вызовет исключения DivisionByZero, а будет np.array().
Belg
scidam
x_train – вероятно numpy array;Значит лучше удостовериться, что точно он не содержит Nanов.
Вообще, x_train- результат разбиения на обучающую и валидационную выборки excel таблицы x, в формате csv и импортированной при помощи pandas. Делал это так:

 from sklearn.model_selection import train_test_split
x_train, x_validation, y_train, y_validation = train_test_split(x, y, test_size=.33, random_state=1)

Сразу после этого идёт следующий код, который, по идее, все NaN убирает, верно?

 x_train = x_train.fillna(0)
x_validation = x_validation.fillna(0)

Это дополнительная инфа, мало ли, поможет. Попробую ваш способ - отпишусь.
Belg
Вот такую фигню выдаёт. При чём это уже не первый такой стоблик, 2 в принципе не нужных я удалил. А этот удалять нельзя. Кстати, в оригинальной таблице всё норм с этим столбиком, не понимаю, почему он тут весь в нулях.
Belg
scidam
x_train – вероятно numpy array;Значит лучше удостовериться, что точно он не содержит Nanов.
Есть идеи что это? А то времени мало, срочно надо.
scidam
Проверьте type(xtrain) – это Pandas DataFrame?
np.isnan(xtrain).sum() – должно возвращать одно число – 0 либо что-то больше нуля.
Скорее всего у вас xtrain это dataframe, попробуйте передать в MinMaxScaler не dataframe,
а матрицу значений, т.е. xtran.dropna(0).values



This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB