陌陌算法岗面试【准确率、召回率、精确率】
准确率(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)
推荐阅读
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- 一个选择排序算法
- SG平滑轨迹算法的原理和实现
- 《算法》-图[有向图]
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- 虚拟DOM-Diff算法详解
- 《数据结构与算法之美》——队列
- 算法回顾(SVD在协同过滤推荐系统中的应用)
- 简谈迪克斯特拉算法