如何在函数中定义变量?

2024-04-25 12:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我的函数中定义tp,tn,fp,fn。如何在函数中定义它们?你知道吗

从集合导入namedtuple 从语料库导入从文件读取分类 导入操作系统

我的更新代码

def compute_confusion_matrix(truth_dict, pred_dict,pos_tag=True,neg_tag=False):
    tp=0
    fn=0
    tn=0
    fp=0
    for i in truth_dict.keys():
            if (truth_dict[i] == pos_tag):
                    if(pred_dict[i] == pos_tag):
                            tp += 1
                    else:
                            fn += 1
            else:
                     if(pred_dict[i] != pos_tag):
                             tn += 1
                     else:
                             fp += 1
    ConfMat = namedtuple('ConfMat', 'tp tn fp fn')
    p=ConfMat(tp, tn, fp, fn)
    return p


def quality_score(tp,tn,fp,fn):
    return (tp + tn)/(tp + tn + 10 * fp + fn)

def compute_quality_for_corpus(corpus_dir):
    truth_dict = read_classification_from_file(os.path.join(corpus_dir, "!truth.txt"))
    pred_dict = read_classification_from_file(os.path.join(corpus_dir, "!prediction.txt"))
    cm2 = compute_confusion_matrix(truth_dict, pred_dict,pos_tag='SPAM',neg_tag='OK')
    cm2=(cm.tp,cm.tn,cm.fp,cm.fn)
    return quality_score(tp,tn,fp,fn)

Tags: posifdeftagcmcorpuselsedict
1条回答
网友
1楼 · 发布于 2024-04-25 12:17:04

您也有一些关于cm2线(cm的外观)的错误,但这很容易修复。访问命名元组中的字段时,可以使用点表示法。你知道吗

cm2 = compute_confusion_matrix(truth_dict,pred_dict,pos_tag='SPAM',neg_tag='OK')
return quality_score(cm2.tp,cm2.tn,cm2.fp,cm2.fn)

相关问题 更多 >