scikit-learn:随机森林分类器赋予值

2024-10-02 20:36:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以在添加新特性之前,我的随机森林分类器运行得很好。当我尝试运行它时,我一直收到以下错误代码:

   \Anaconda2\lib\site-packages\sklearn\utils\validation.pyc in _assert_all_finite(X)
         56             and not np.isfinite(X).all()):
         57         raise ValueError("Input contains NaN, infinity"
    ---> 58                          " or a value too large for %r." % X.dtype)
         59 
         60 

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

训练和测试都是np.数据帧从csv文件读取的对象。我正试图添加更多的特性以获得更好的预测值,但每次尝试拟合时都会出现上述错误。我确实尝试删除NaN和infinite值,但仍然得到相同的错误。在

以下是我的代码:

^{pr2}$

bedPerBath变量为isnull().any()提供了一个True,所以我忽略了它,其余的都给了False。然而,当我试图拟合估计量时,我仍然得到“值误差”。在

X_train, X_cv, y_train, y_cv = train_test_split(X, y, test_size = 0.3)

X_train.isnull().any()

clfRF = RandomForestClassifier(n_estimators = 1000)
clfRF.fit(X_train, y_train)

#CV
y_cv_pred = clfRF.predict_proba(X_cv)
log_loss(y_cv, y_cv_pred)

我注意到错误消息说dtype('float32')太大,而我的值基本上是float64,这会导致错误吗?为什么会这样?在

谢谢。在


Tags: orinputvalue错误nptrain特性nan
1条回答
网友
1楼 · 发布于 2024-10-02 20:36:38

尝试:

import numpy as np
X_train, X_cv, y_train, y_cv = train_test_split(np.nan_to_num(X), y, test_size = 0.3)

clfRF = RandomForestClassifier(n_estimators = 1000)
clfRF.fit(X_train, y_train)

#CV
y_cv_pred = clfRF.predict_proba(X_cv)
log_loss(y_cv, y_cv_pred)

相关问题 更多 >