修复Kaggle提交文件格式错误以通过ICR竞赛提交
Kaggle ICR-识别年龄相关疾病竞赛提交格式错误修复方案
问题核心原因
- 测试样本丢失:代码中对测试集执行了
test_df = test_df.dropna(),直接删除了含缺失值的样本,但竞赛要求必须提交所有测试样本的预测结果,不能遗漏任何行,这是提交格式错误的直接原因。 - 特征处理不一致:训练阶段直接丢弃了分类特征
EJ,既浪费了有效特征,也不符合规范的特征工程流程(虽不直接导致格式错误,但会影响模型性能)。
修复步骤
1. 保留所有测试样本,统一缺失值处理
删除测试集的dropna()操作,改用训练集的统计量填充测试集缺失值(避免数据泄露),示例代码:
# 替换原test_df.dropna(),用训练集中位数填充测试集缺失值 test_df = test_df.fillna(new_df.median())
2. 正确处理分类特征EJ
对训练集和测试集的EJ特征做标签编码,不直接丢弃:
# 训练阶段处理EJ from sklearn.preprocessing import LabelEncoder le = LabelEncoder() new_df['EJ'] = le.fit_transform(new_df['EJ']) # 构建特征时保留EJ x = new_df.drop(['Id', 'Class'], axis=1) # 测试阶段复用训练集的编码器转换EJ test_df['EJ'] = le.transform(test_df['EJ']) # 测试特征仅丢弃Id列 test_x = test_df.drop(['Id'], axis=1)
3. 确保提交格式完全匹配要求
- 必须包含所有测试样本的
Id,行数与测试集完全一致 class_0和class_1列必须是0-1之间的概率值(你的代码中1 - predictions.flatten()和predictions.flatten()符合要求)- 列名严格为
Id、class_0、class_1,大小写和拼写不能出错
修复后的关键代码片段
# --- 训练阶段修正 --- df = pd.read_csv("/kaggle/input/icr-identify-age-related-conditions/train.csv") # 用中位数填充训练集缺失值 new_df = df.fillna(df.median()) # 编码EJ特征 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() new_df['EJ'] = le.fit_transform(new_df['EJ']) # 拆分特征与标签 x = new_df.drop(['Id', 'Class'], axis=1) y = new_df['Class'] # --- 测试阶段修正 --- test_df = pd.read_csv("/kaggle/input/icr-identify-age-related-conditions/test.csv") # 用训练集中位数填充测试集缺失值 test_df = test_df.fillna(new_df.median()) # 转换测试集EJ特征 test_df['EJ'] = le.transform(test_df['EJ']) # 提取测试特征 test_x = test_df.drop(['Id'], axis=1) # 生成预测 predictions = model.predict(test_x) # 构建提交文件 pred_df = pd.DataFrame({'Id': test_df['Id'], 'class_0': 1 - predictions.flatten(), 'class_1': predictions.flatten()}) pred_df.to_csv('submission.csv', index=False)
提交前验证
生成提交文件后,执行以下代码检查格式:
# 验证行数是否匹配 print(f"测试集样本数: {len(test_df)}") print(f"提交文件样本数: {len(pred_df)}") # 验证列名 print(pred_df.columns) # 验证概率值范围 print(f"class_0范围: [{pred_df['class_0'].min():.4f}, {pred_df['class_0'].max():.4f}]") print(f"class_1范围: [{pred_df['class_1'].min():.4f}, {pred_df['class_1'].max():.4f}]")
内容的提问来源于stack exchange,提问作者cows
相关产品推荐
相关产品推荐

