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

Python FairDetect类错误处理失效,输入错误值触发KeyError求助

FairDetect类异常处理失效及KeyError问题排查修复

问题根源

  1. 自定义异常提示不触发
    input()函数无论输入什么内容,都会返回字符串类型,永远不会抛出ValueError,所以你写的except ValueError分支根本不会执行,自然看不到自定义错误提示。

  2. 后续KeyError的原因
    你输入的错误值在后续identify_bias方法中被当作字典键使用,但该键不存在于目标字典(比如你定义的labels)中,触发了Python默认的KeyError。

修复方案

1. 重写输入校验逻辑

把被动捕获异常改成主动校验输入是否符合要求,示例如下:

class FairDetect():
    def __init__(self, model,X_test,y_test):
        self.model = model
        self.X_test = X_test
        self.y_test = y_test

    def create_labels(self, allowed_values=None):
        sensitive_label = {}
        # 把敏感列名作为参数传入,避免依赖全局变量
        for group_id in set(self.X_test['group']):
            while True:
                label_input = input(f"Please Enter Label for Group {group_id}: ").strip()
                # 校验输入是否在允许范围内
                if allowed_values and label_input not in allowed_values:
                    print(f"Invalid value! Allowed labels: {allowed_values}")
                    continue
                # 如果需要输入数字类型,可添加转换校验
                # try:
                #     label_input = int(label_input)
                #     if label_input not in allowed_values:
                #         raise ValueError
                # except ValueError:
                #     print(f"Invalid value! Allowed values: {allowed_values}")
                #     continue
                sensitive_label[group_id] = label_input
                break
        return sensitive_label

2. 消除全局变量依赖

原代码中create_labels直接依赖全局的sensitive变量,改成参数传入更规范,也能避免意外bug。

3. 前置校验避免后续KeyError

在create_labels阶段就限制输入必须符合identify_bias的要求,比如传入允许的标签列表,这样错误在输入时就被拦截,不会留到后续触发KeyError。

调用示例

sensitive_col = 'group'
allowed_labels = {'GROUP A', 'GROUP B'}  # 可根据需求替换为允许的标签集合
fd = FairDetect(model, X_test, y_test)
# 传入允许的标签集合,提前校验输入
sensitive_labels = fd.create_labels(allowed_labels)
fd.identify_bias(sensitive_col, sensitive_labels)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:57:35