您的位置:首页 > 产品设计 > UI/UE

Input contains NaN, infinity or a value too large for dtype('float64')

2017-05-02 19:09 1196 查看
今天处理数据,训练model时遇到的错误

详细信息如下图所示,





这种报错一般是原始数据有缺失项。

可以使用下面的命令查看是否存在缺失项

df[df.isnull().values==True]




发现缺失项后可以去掉这些缺失值或者填充这些缺失值。

1 将所有缺失值填充为0

df=df.fillna(0)


2 将所有缺失值用上个可用的值填充

df = df.fillna(method='ffill')


参数说明:method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None Method to use for filling holes in reindexed Series pad / ffill: propagate last valid observation forward to next valid backfill / bfill: use NEXT valid observation to fill gap

3 去掉所有缺失值的行或列

df=df.dropna(axis=1)


默认去掉所有缺失值的行,如果在参数里输入axis=1则删除所有缺失值的列

train model的时候记得要检查X和y的缺失,本以为是X有缺失,找了半天错误,才发现有一个label缺失。

lsvc = LinearSVC(C=0.01,penalty="l1", dual=False).fit(X_old, y)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐