陌陌算法岗面试【准确率、召回率、精确率】

准确率(precision)

在被判定为正样本的数据中,实际为正样本的个数

召回率(recall)

在实际为正样本的数据中,被判定为正样本的个数

精确率(accuracy)

在所有数据中,正负样本判断正确的个数

公式表达

TP(True Positive):被判定为正样本,实际为正样本
TN(True Negative):被判定为负样本,实际为负样本
FP(False Positive):被判定为正样本,实际为负样本
FN(False Negative):被判定为负样本,实际为正样本
precision = TP/(TP+FP)
recall = TP/(TP+FN)
accuracy = (TP+TN)/(TP+TN+FP+FN)

实际案例

已训练好一个二分类模型,模型的label分别为0和1.现有一批经过模型预测的评估数据集(data_list),每个样本的预测结果为[score_0,score_1,true_label],其中score_0表示样本在第0类上的得分,score_1表示样本在第1类上的得分,true_label表示样本的真实类别。给定一个阈值(threshold),求满足阈值条件的情况下,模型在评估数据集中,第0类的精准率(precision)和召回率(recall)

def pinggu(data_list,threshold):
    yuce_count_0 = 0
    true_count_0 = 0
    true_positive = 0 
    count_0 = 0
    label_0 = 0
    for i in data_list:
        score_0 = i[0]
        if score_0 < threshold:
            count_0 += 1
    if count_0 == len(data_list):
        return False
    for j in data_list:
        true_label = j[2]
        if true_label == 0:
            label_0 += 1
    if label_0 == len(data_list):
        return False
    if count_0 == len(data_list):
        return False
    for m in data_list:
        score_0 = m[0]
        score_1 = m[1]
        true_label = m[2]
        if score_0 > threshold:
            yuce_count_0 += 1
        if score_0 > threshold and true_label == 1:
            true_positive += 1
        if true_label == 1:
            true_count_0 +=1
    precision = true_positive/yuce_count_0
    recall = true_positive/true_count_0
    return precision,recall
 pinggu([[0.8,0,1],[0,0,1],[0,0,0],[0,0,0]],0.7)
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值