【发布时间】:2019-05-26 21:15:54
【问题描述】:
我正在使用 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 学习错误。下面的大多数答案都有帮助,但具有误导性。检查检查您的数据,确保在转换为
float64时它是有限的而不是nan。错误消息很贴切 - 对于发现自己的任何人来说,这几乎肯定是问题。 -
对于@Owen 的记录和 +1,请检查您的输入数据并确保您在任何行或网格中都没有任何缺失值。你可以使用 Imputer 类来避免这个问题。
-
我对 kaggle 的 kc_house_data.csv 数据集有这个问题。我正在尝试使用以下变量进行线性回归:['bedrooms','bathrooms','sqft_living','sqft_lot','floors','waterfront','view','grade','sqft_above',' sqft_basement','纬度','sqft_living15']
标签: python python-2.7 scikit-learn valueerror