我正在使用 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。
原文由 Ethan Waldie 发布,翻译遵循 CC BY-SA 4.0 许可协议
这可能发生在 scikit 内部,这取决于你在做什么。我建议阅读您正在使用的功能的文档。您可能正在使用一个取决于例如您的矩阵是正定的并且不满足该标准的矩阵。
编辑:我怎么能错过:
显然是错误的。正确的是:
和
您要检查是否有任何元素为 NaN,而不是
any
函数的返回值是否为数字…