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

我正在使用sklearn,并且亲和力传播存在问题。我建立了一个输入矩阵,但不断收到以下错误。


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

我跑了


np.isnan(mat.any()) #and gets False

np.isfinite(mat.all()) #and gets True

我尝试使用


mat[np.isfinite(mat) == True] = 0

删除无限值,但这也不起作用。我该怎么做才能摆脱矩阵中的无限值,以便可以使用亲和力传播算法?


我正在使用anaconda和python 2.7.9。


猛跑小猪
浏览 12304回答 3
3回答

梦里花落0921

这可能会在scikit内部发生,并且取决于您在做什么。我建议您阅读所用功能的文档。您可能正在使用一种方法,例如,这取决于您的矩阵是正定的且不满足该条件。编辑:我怎么能错过呢:np.isnan(mat.any()) #and gets Falsenp.isfinite(mat.all()) #and gets True显然是错误的。正确的是:np.any(np.isnan(mat))和np.all(np.isfinite(mat))您想检查任何元素是否为NaN,而不是any函数的返回值是否为数字...

一只萌萌小番薯

将sklearn与pandas一起使用时,出现相同的错误消息。我的解决方案是df在运行任何sklearn代码之前重置数据帧的索引:df = df.reset_index()当我删除自己的某些条目时,我多次遇到此问题df,例如df = df[df.label=='desired_one']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python