一个超出dtype('float64')范围的数值。

10
我正在使用numpy读取一个arff文件,但是遇到了以下错误:
ValueError: 输入包含NaN、无穷大或超出dtype('float64')的范围。
我用np.isnan(X2.any())和np.isfinite(X2.all())检查它是否为nan或无限的情况。但这都不是问题所在。这意味着它是第三种情况,也就是“无限大或超出dtype('float64')的范围”。
如果有人能告诉我如何解决这个错误,我将不胜感激。
谢谢。

1
我有点困惑:当你无法读取数据(X2)时,如何检查数据中是否存在NaN?你能澄清一下吗? - Eric O. Lebigot
5
您的数据中是否包含大于1.7976931348623157e+308的值(即numpy.float64的最大值)? - Tim Pietzcker
@EOL:我能够很好地读取数据。在读取元素并尝试使用随机森林等方法对数据进行预测后,我遇到了这个错误。 - user2151788
4
np.isnan(X2.any()) 的操作顺序不正确。我认为你想要 np.isnan(X2).any() - interjay
2
听起来这个错误实际上是由scikit-learn的调用引发的(也许是在RandomForestClassifier.fit()中?)。请始终在您的问题中发布完整的错误回溯,并清楚地提到您实际使用的库。 - ali_m
显示剩余2条评论
1个回答

8

好的,我知道了。在使用Imputer(missing_values='NaN', strategy='median', axis=1) imp.fit(X2)之后,我还需要写:

X2 = imp.fit_transform(X2)。原因是:sklearn.preprocessing.Imputer.fit_transform返回一个新数组,它不会修改参数数组。


1
所以这是你误解了,你能关闭/删除你的原始问题吗? - Marcus Müller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接