解决ValueError: Input contains NaN, infinity or a value too large for dtype(‘float64‘).

在对数据集进行编码时遇到ValueError,原因是存在Nan值。解决方案包括检查并确认数据集中有无NaN,然后可以采取删除、用均值、中值或众数填充,或者用0值填充的方法处理缺失值。示例代码展示了如何用numpy和pandas进行这些操作。
摘要由CSDN通过智能技术生成

问题:

在对数据集进行编码时报错:ValueError: Input contains NaN, infinity or a value too large for dtype(‘float64’).
说是数据集中有Nan值,无法对其进行lb.fit_transform()编码操作,需要对这些缺失值进行处理
在这里插入图片描述

解决:

解决思路:
① 对缺失值删除
② 对缺失值使用均值、中值、众数填充
③ 对缺失值用0值填充

  1. 检查使用的数据集中是否有NaN
has_nan = np.isnan(y_train).any()

if has_nan:
    print("y_train中存在NaN值")
else:
    print("y_train中没有NaN值")
  1. 根据使用目的对缺失值进行填充,在此我选择对缺失值用0填充
import numpy as np
y_train = np.nan_to_num(y_train, nan=0)
  1. 成功解决!
    在这里插入图片描述
    以下是用别的填充方式:
import numpy as np
import pandas as pd
#均值填充
mean_value = np.nanmean(y_train)
y_train_filled = y_train.fillna(mean_value)
#中值填充
median_value = y_train.median()
y_train_filled = y_train.fillna(median_value)
#众数填充
mode_value = y_train.mode().iloc[0]
y_train_filled = y_train.fillna(mode_value)
#缺失值删除
y_train = y_train.dropna()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值