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