问题:
在对数据集进行编码时报错:ValueError: Input contains NaN, infinity or a value too large for dtype(‘float64’).
说是数据集中有Nan值,无法对其进行lb.fit_transform()编码操作,需要对这些缺失值进行处理
解决:
解决思路:
① 对缺失值删除
② 对缺失值使用均值、中值、众数填充
③ 对缺失值用0值填充
- 检查使用的数据集中是否有NaN
has_nan = np.isnan(y_train).any()
if has_nan:
print("y_train中存在NaN值")
else:
print("y_train中没有NaN值")
- 根据使用目的对缺失值进行填充,在此我选择对缺失值用0填充
import numpy as np
y_train = np.nan_to_num(y_train, nan=0)
- 成功解决!
以下是用别的填充方式:
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()