我问了所有类似的问题,但都没有回答我的问题。我使用随机森林分类器如下:
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)
clf.fit(X_train, y_train)
clf.predict(X_test)
它给了我一个错误:
ValueError: Input contains NaN, infinity or a value too large for dtype('float32').
但是,当我执行X_train.describe()
时,我没有看到任何缺少的值。事实上,在分割数据之前,我已经处理了丢失的值。你知道吗
当我执行以下操作时:
np.where(X_train.values >= np.finfo(np.float32).max)
我得到:
(array([], dtype=int64), array([], dtype=int64))
对于这些命令:
np.any(np.isnan(X_train)) #true
np.all(np.isfinite(X_train)) #false
在得到上述结果之后,我还尝试了以下方法:
X_train.fillna(X_train.mean())
但我得到了同样的错误,它不能解决任何问题。你知道吗
请告诉我哪里出了问题。谢谢您!你知道吗
溶液
解释
np.any(np.isnan(X_train))
求值到True
,因此X_train
包含一些nan
值。 每只熊猫fillna() docs,数据框.fillna()返回数据帧的副本,其中填充了缺少的值。必须将X\u train重新分配给fillna()的返回值,如X_train = X_train.fillna(X_train.mean())
示例
相关问题 更多 >
编程相关推荐