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

基于Kaggle银行数据集的SVM预测模型出现KeyError:'male'求解

SVM预测代码KeyError问题分析与解决

问题描述

正在使用Python编写基于SVM的预测代码,采用Kaggle银行数据集,代码在第4行报错。

出错代码

encoded_data = [0] * len(data_to_predict)
for i in range(len(data_to_predict)):
  if i == 0:
    encoded_data[i] = gen[data_to_predict[i]]
  elif i==1:
    encoded_data[i] = m[data_to_predict[i]]
  elif i==2:
    encoded_data[i] = ed[data_to_predict[i]]
  elif i==3:
     encoded_data[i] = s_emp[data_to_predict[i]]
  elif i==4:
     encoded_data[i] = d[data_to_predict[i]]
  elif i==10:
    encoded_data[i] = a[data_to_predict[i]]
  else:
    encoded_data[i] = s.fit_transform(np.array(encoded_data[i]).reshape(-1,1))

报错信息

KeyError                                  Traceback (most recent call last)
<ipython-input-68-e2388fb9ed49> in <module>
      2 for i in range(len(data_to_predict)):
      3   if i == 0:
----> 4     encoded_data[i] = gen[data_to_predict[i]]
      5   elif i==1:
      6     encoded_data[i] = m[data_to_predict[i]]

KeyError: 'male'

报错原因

  1. 字典gen中不存在'male'这个键,说明训练时生成gen的映射标签和当前预测输入的性别值不匹配:
    • 比如训练数据里性别标签是'Male'(首字母大写),但预测输入是小写的'male';或者gen字典的键根本没包含'male'这个取值。
  2. else分支逻辑错误:
    • 初始encoded_data[i]是0,用s.fit_transform转换这个0完全不符合特征编码逻辑,应该转换的是data_to_predict[i];且预测阶段不能用fit_transform(会重新拟合编码器,导致编码和训练时不一致),必须用transform。

解决方案

  • 修正gen字典的映射匹配问题:
    • 方法一:统一输入值的格式,比如把预测输入的性别转成和训练标签一致的大小写:encoded_data[i] = gen[data_to_predict[i].capitalize()](如果训练标签是首字母大写)。
    • 方法二:重新生成gen字典,确保包含'male'这个键,比如gen = {'male':0, 'female':1}(和输入值完全匹配)。
  • 修复else分支的编码逻辑:
    else:
        # 转换目标是data_to_predict[i],用训练好的编码器的transform方法
        encoded_data[i] = s.transform(np.array([data_to_predict[i]]).reshape(-1,1))[0][0]
    
  • 建议使用sklearn标准编码器替代手动字典映射,避免出错:
    • 训练时对每个分类特征拟合编码器并保存:
      from sklearn.preprocessing import LabelEncoder
      # 训练阶段处理性别特征
      gen_le = LabelEncoder()
      gen_le.fit(train_data['gender_column'])
      
    • 预测时调用对应编码器的transform方法:
      encoded_data[0] = gen_le.transform([data_to_predict[0]])[0]
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:40:37