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

准确率(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)

    推荐阅读