ValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。随机森林运行

Posted

技术标签:

【中文标题】ValueError:输入包含 NaN、无穷大或对于 dtype(\'float32\') 来说太大的值。随机森林运行【英文标题】:ValueError: Input contains NaN, infinity or a value too large for dtype('float32'). randomforest runValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。随机森林运行 【发布时间】:2020-02-03 11:52:28 【问题描述】:
#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)

我检查了 X 或 y 有任何 Nan 但没有 但它给出了 ValueError 的错误:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。

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

【问题讨论】:

【参考方案1】:

此错误何时实际出现 - 在分配 X_train_、X_valid 值时或在将数据集拟合到 RandomForest 算法时?

我还从代码中看到,您在第一轮定义了 X_train_ 数据帧:

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

而您将 rf_clf1 对象拟合到另一个数据集(即:X_train

rf_clf1.fit(X_train,y_train_)

所以这里变量名中缺少的 _ 可能也是这种情况。

【讨论】:

实际上 xgb 或 lgb 并没有给出这个问题,但是当我从 sklearn 导入一些东西时会导致问题

以上是关于ValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。随机森林运行的主要内容,如果未能解决你的问题,请参考以下文章

如何解决:ValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值?

StandardScaler -ValueError:输入包含 NaN、无穷大或对于 dtype('float64')来说太大的值

Python 错误帮助:“ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。”

sklearn错误ValueError:输入包含NaN,无穷大或对于dtype('float64')来说太大的值

ValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。随机森林运行

ValueError:使用 KNeighborsRegressor 的拟合,输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值