首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sklearn错误ValueError:输入包含NaN、无穷大或对于dtype('float64')来说太大的值

sklearn错误ValueError:输入包含NaN、无穷大或对于dtype('float64')来说太大的值
EN

Stack Overflow用户
提问于 2015-07-10 00:40:02
回答 18查看 473.6K关注 0票数 199

我正在使用sklearn,但在亲和力传播方面遇到了问题。我已经构建了一个输入矩阵,并且一直收到以下错误。

代码语言:javascript
运行
复制
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

我跑过了

代码语言:javascript
运行
复制
np.isnan(mat.any()) #and gets False
np.isfinite(mat.all()) #and gets True

我试着用

代码语言:javascript
运行
复制
mat[np.isfinite(mat) == True] = 0

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

我使用的是anaconda和python 2.7.9。

EN

回答 18

Stack Overflow用户

发布于 2017-10-05 16:30:13

这是我的函数(基于this),用于清除数据集上的nanInf和丢失的单元格(对于倾斜的数据集):

代码语言:javascript
运行
复制
import pandas as pd

def clean_dataset(df):
    assert isinstance(df, pd.DataFrame), "df needs to be a pd.DataFrame"
    df.dropna(inplace=True)
    indices_to_keep = ~df.isin([np.nan, np.inf, -np.inf]).any(1)
    return df[indices_to_keep].astype(np.float64)
票数 38
EN

Stack Overflow用户

发布于 2015-07-15 05:09:47

我的输入数组的维度是不对称的,因为我的输入csv有空格。

票数 13
EN

Stack Overflow用户

发布于 2019-11-25 09:05:32

在大多数情况下,摆脱无限和空值可以解决这个问题。

去掉无穷值。

代码语言:javascript
运行
复制
df.replace([np.inf, -np.inf], np.nan, inplace=True)

按您喜欢的方式删除空值、特定值,如999、mean,或者创建自己的函数来估算缺少的值

代码语言:javascript
运行
复制
df.fillna(999, inplace=True)
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31323499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档