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

Python中识别并剔除测试集错误样本报错问题求助

问题原因

你用np.flatnonzero拿到的是样本在y_test中的位置索引(从0开始的连续序号),但y_test.drop()默认是按DataFrame的标签索引(也就是你看到的101409、27117这类原始索引值)来删除的,两者不匹配,所以触发KeyError。

解决方案

这里有几种可行的解决方法:

方法1:用布尔索引直接筛选正确样本

跳过获取位置索引的步骤,直接用预测正确的布尔条件筛选,最简洁高效:

# 生成预测正确的布尔掩码
correct_mask = y_predicted_l == y_test
# 筛选出预测正确的样本
new_y_test = y_test[correct_mask]

方法2:获取错误样本的标签索引再删除

先通过位置索引拿到对应的原始标签索引,再传给drop方法:

# 从y_test的索引中取出错误样本对应的标签索引
incorrect_labels = y_test.index[f_incorrects]
# 根据标签索引删除错误样本
new_y_test = y_test.drop(incorrect_labels, axis=0)

方法3:重置y_test的索引后再删除

如果后续不需要保留原始索引,可以先把y_test的索引重置为连续序号,再按位置删除:

# 重置索引,drop=True会丢弃原来的索引列
y_test_reset = y_test.reset_index(drop=True)
# 现在可以直接用f_incorrects删除错误样本
new_y_test = y_test_reset.drop(f_incorrects, axis=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:25:34