ValueError: Вход содержит NaN, бесконечность или значение, слишком большое для dtype ('float32'). случайный лес - PullRequest
0 голосов
/ 05 октября 2019
#fill -999 to NAs
X = X_train.fillna(-999)
y = y_train.fillna(-999) 

import lightgbm as lgb
import xgboost as xgb

NFOLDS = 8
folds = KFold(n_splits=NFOLDS)

#====================================

xgb_submission=sample_submission.copy()
xgb_submission['isFraud'] = 0
import xgboost as xgb
from sklearn.metrics import roc_auc_score
for fold_n, (train_index, valid_index) in enumerate(folds.split(X)):

    X_train_, X_valid = X.iloc[train_index], X.iloc[valid_index]
    y_train_, y_valid = y.iloc[train_index], y.iloc[valid_index]
    #xgbclf.fit(X_train_,y_train_)

    rf_clf1 = RandomForestClassifier(n_estimators=300, max_depth = 10, min_samples_leaf=8, \
                                    min_samples_split=8, random_state=0)
    rf_clf1.fit(X_train,y_train_)
    pred = rf_clf1.predict(X_test)
    print(pred)

Я проверил Х или у есть Нэн, но нетно это дает ошибку с ValueError: Input содержит NaN, бесконечность или значение, слишком большое для dtype ('float32').

> print(type(X),type(y)) 
> <class 'pandas.core.frame.DataFrame'> <class'pandas.core.series.Series'>

1 Ответ

0 голосов
/ 05 октября 2019

Когда эта ошибка появляется на самом деле - при назначении значений X_train_, X_valid или при подгонке наборов данных к алгоритму RandomForest?

Я также вижу из кода, который в первом повороте вы определяете X_train_ dataframe:

**X_train_**, X_valid = X.iloc[train_index], X.iloc[valid_index]

В то время как вы помещаете объект rf_clf1 в другой набор данных (а именно: X_train )

rf_clf1.fit(X_train,y_train_)

Итак, здесь отсутствует _ в имени переменной также может иметь место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...