Python Random Forest Regressor Ошибка на значениях Nan, несмотря на удаление - PullRequest
0 голосов
/ 27 марта 2019

У меня есть чистый набор данных с нулевыми значениями nan, но я продолжаю получать ту же ошибку на регрессоре.мой фрейм называется new_player_data

Я пытался найти любой по

list(new_player_data.where(new_player_data.isna()).count() > 0)

, который возвращает

[False, False, False, False, False, False]

двести раз.Я подумал, что может быть какой-то слишком большой поплавок.Я попытался это сделать:

for i in new_player_data.columns[:]:
    if new_player_data[i].dtype == float:
        new_player_data[i] = round(new_player_data[i],2)

независимо от того, что я получу:

regressor.fit(X_train, y_train)  
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-327-3a664017ddaa> in <module>
----> 1 regressor.fit(X_train, y_train)

/anaconda3/lib/python3.7/site-packages/sklearn/ensemble/forest.py in fit(self, X, y, sample_weight)
    248 
    249         # Validate or convert input data
--> 250         X = check_array(X, accept_sparse="csc", dtype=DTYPE)
    251         y = check_array(y, accept_sparse='csc', ensure_2d=False, dtype=None)
    252         if sample_weight is not None:

/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    571         if force_all_finite:
    572             _assert_all_finite(array,
--> 573                                allow_nan=force_all_finite == 'allow-nan')
    574 
    575     shape_repr = _shape_repr(array.shape)

/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in _assert_all_finite(X, allow_nan)
     54                 not allow_nan and not np.isfinite(X).all()):
     55             type_err = 'infinity' if allow_nan else 'NaN, infinity'
---> 56             raise ValueError(msg_err.format(type_err, X.dtype))
     57 
     58 

ValueError: Input contains NaN, infinity or a value too large for dtype('float32').

Любые идеи о том, что еще я мог бы проверить здесь?на общую сумму

1 Ответ

0 голосов
/ 27 марта 2019

Кредит @gmds за то, что он привел к ответу, оказалось, что это были значения inf, найденные через

infs = np.where(np.isinf(new_player_data))
infs

out: (array([ 261, 1162, 1190, 1339, 1365, 1451, 1656, 1736, 1878, 1954, 2189,
    2299, 2741, 3137, 3162, 3799, 3821, 3881, 4305]),
 array([ 3, 43, 43,  3, 43, 43, 43, 43, 43, 43, 23, 43,  3, 43, 43, 43,  3,
    23, 43]))

Затем я заменил их таким образом

pd.options.mode.use_inf_as_na = True
infs = np.where(np.isinf(new_player_data))
infs
out: (array([], dtype=int64), array([], dtype=int64))

спасибо gmds за направленноепомощь!

...