You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用imblearn欠采样时遇输入值错误(含NaN)如何解决?

问题解决方案

1. 修复缺失值处理的核心问题

你的fillna调用根本没生效——inplace=False(默认参数)会返回一个处理完缺失值的新DataFrame,但你没把这个新对象赋值给dataframe1,导致原数据里的NaN完全没被处理。修改代码如下:

# 处理Nan值,必须接收返回的新DataFrame
dataframe1 = dataframe1.fillna(dataframe1.mean())

额外注意:如果数据集中存在非数值类型的列,dataframe1.mean()会自动跳过这些列,导致这些列的NaN残留。可以先执行以下代码排查:

# 打印各列的NaN数量,确认是否还有遗漏
print(dataframe1.isna().sum())

2. 关于"数值过大"的误解

你提到的最大数值5747.13完全在float64的容纳范围内(float64支持的数值范围远大于这个量级),所以错误提示里的"数值过大"不是真实问题,根源还是NaN没处理干净。

3. 代码优化建议

  • 分离特征和标签的代码可以简化:
X = dataframe1.drop('label', axis=1)
y = dataframe1['label'].values
  • 可以在处理后加断言,提前验证数据状态:
# 确保X中没有NaN,避免后续报错
assert not X.isnull().any().any(), "特征矩阵X中仍存在未处理的NaN值"

内容的提问来源于stack exchange,提问作者Ghada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:25:27