gpt4 book ai didi

python - ValueError : Input contains NaN, 无穷大或值对于 dtype ('float32' 太大)。为什么?

转载 作者:行者123 更新时间:2023-12-04 13:40:57 25 4
gpt4 key购买 nike

我已经完成了所有类似的问题,但没有一个回答我的问题。我使用随机森林分类器如下:

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())
但我得到了同样的错误,它没有解决任何问题。

请告诉我哪里出错了。谢谢!

最佳答案

解决方案 X_train = X_train.fillna(X_train.mean())
说明np.any(np.isnan(X_train))评估为 True ,因此 X_train包含一些 nan值。
每只 Pandas fillna() docs , DataFrame.fillna() 返回填充缺失值的 DataFrame 的副本。您必须将 X_train 重新分配给 fillna() 的返回值,例如 X_train = X_train.fillna(X_train.mean())
示例

>>> import pandas as pd
>>> import numpy as np
>>>
>>> a = pd.DataFrame(np.arange(25).reshape(5, 5))
>>> a[2][2] = np.nan
>>>
>>> a
0 1 2 3 4
0 0 1 2.0 3 4
1 5 6 7.0 8 9
2 10 11 NaN 13 14
3 15 16 17.0 18 19
4 20 21 22.0 23 24
>>>
>>> a.fillna(1)
0 1 2 3 4
0 0 1 2.0 3 4
1 5 6 7.0 8 9
2 10 11 1.0 13 14
3 15 16 17.0 18 19
4 20 21 22.0 23 24
>>>
>>> a
0 1 2 3 4
0 0 1 2.0 3 4
1 5 6 7.0 8 9
2 10 11 NaN 13 14
3 15 16 17.0 18 19
4 20 21 22.0 23 24
>>>
>>> a = a.fillna(1)
>>> a
0 1 2 3 4
0 0 1 2.0 3 4
1 5 6 7.0 8 9
2 10 11 1.0 13 14
3 15 16 17.0 18 19
4 20 21 22.0 23 24
>>>

关于python - ValueError : Input contains NaN, 无穷大或值对于 dtype ('float32' 太大)。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57118106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com