为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2019-11-29 10:01:37
我正在使用sklearn,并且亲和力传播存在问题。我建立了一个输入矩阵,但不断收到以下错误。ValueError: Input contains NaN, infinity or a value too large for dtype('float64').我跑了np.isnan(mat.any()) #and gets Falsenp.isfinite(mat.all()) #and gets True我尝试使用mat[np.isfinite(mat) == True] = 0删除无限值,但这也不起作用。我该怎么做才能摆脱矩阵中的无限值,以便可以使用亲和力传播算法?我正在使用anaconda和python 2.7.9。
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

这可能会在scikit内部发生,并且取决于您在做什么。我建议您阅读所用功能的文档。您可能正在使用一种方法,例如,这取决于您的矩阵是正定的且不满足该条件。


编辑:我怎么能错过呢:


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

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

显然是错误的。正确的是:


np.any(np.isnan(mat))


np.all(np.isfinite(mat))

您想检查任何元素是否为NaN,而不是any函数的返回值是否为数字...


查看完整回答
反对 回复 2019-11-29
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

将sklearn与pandas一起使用时,出现相同的错误消息。我的解决方案是df在运行任何sklearn代码之前重置数据帧的索引:


df = df.reset_index()

当我删除自己的某些条目时,我多次遇到此问题df,例如


df = df[df.label=='desired_one']


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 12303 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信