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

使用RFE特征选择时报错Input contains NaN, infinity or a value too large for dtype('float64')

错误根因

你使用的CSE-CIC-IDS2018流量数据集本身存在三类scikit-learn无法直接处理的异常值,你仅执行了dropna()删除空值,没有覆盖另外两类异常:

  • 流量特征计算时出现除0操作,生成了大量inf、-inf无穷值
  • 部分统计特征数值超过float64类型的存储范围
  • 你仅对第一个读取的文件做了重复列过滤,其余7个文件可能存在重复列,合并后会产生无效异常值
直接修复方案

按照以下步骤修改代码即可解决报错:

  1. 读取CSV时统一处理列名空格和重复列
# 每个文件读取时统一处理,示例如下
first_file = pd.read_csv(r"/Users/feliperivas/Downloads/MachineLearningCVE/Friday-WorkingHours-Afternoon-DDos.pcap_ISCX.csv", skipinitialspace=True)
first_file = first_file.loc[:,~first_file.columns.duplicated()]
# 其余7个文件读取时都要执行上面两行的重复列过滤操作
  1. 拆分特征标签后统一处理所有异常值
X = df.drop('Label', axis=1)
y = df['Label']
# 替换无穷值为空值
X = X.replace([np.inf, -np.inf], np.nan)
# 删除带空值的行,也可根据业务需要用均值/中位数填充空值
X = X.dropna(axis=0)
# 同步过滤标签,保证特征和标签样本一一对应
y = y.loc[X.index]
  1. 纠正模型选型错误
    你的任务是攻击类型分类,不是回归任务,要把所有AdaBoostRegressor替换为AdaBoostClassifier,否则即使解决数值报错,模型输出结果也不符合预期。
优化实现思路
  • 特征选择要避免数据泄露:先拆分训练集和测试集,仅用训练集拟合特征选择器,再用训练好的选择器分别转换训练集和测试集,不要用全量数据做特征选择
  • 可先做粗筛减少计算量:先通过方差过滤删除方差为0的常量特征,再用RFE做细粒度特征选择,大幅降低计算耗时
  • 若RFE运行过慢,可先用SelectFromModel基于树模型的特征重要性快速筛选top N特征,再做后续训练

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:15:04