模型评价 - 召回率(Recall)、精确率(Precision)、F1 值(F-Measure)、准确率(Accuracy)的原理与 Python 代码实现

版权声明:转载请联系作者,获得允许后,添加链接及作者到页首 https://blog.csdn.net/weixin_40683253/article/details/86616298

衡量二分类器的评价指标有:召回率(Recall)、精确率(Precision)、F1 值(F-Measure)、准确率(Accuracy)等。

为了便于解说,我们来看这张二分类的表,表中共有两列--实际值(样本中实际的分类结果)和预测值(通过算法预测的分类结果)。

通俗的讲,

  1. 召回率:实际值中的 1 有百分之多少同时也被预测为 1 了;
  2. 精确率:预测值中的 1 有百分之多少是预测正确的(预测正确指预测值与实际值都是 1 );
  3. F1 值  :调和召回率和精确率;
  4. 准确率:预测值中的 0 和 1 都预测对占所有预测值的比例;

计算公式的讲,

  • True Positive      (TP):将 1 预测为 1 的数量;
  • True Negative    (TN):将 0 预测为 0 的数量;
  • False Positive    (FP):将 0 预测为 1 的数量;
  • False Negative  (FN):将 1 预测为 0 的数量;

召回率: Recall = TP / ( TP + FN );

精确率: Precision =  TP / ( TP + FP );

F1 值  :    F1 = 2 * Recall  * Precision  / (Recall  + Precision) = 2 * TP / ( 2 * TP + FP + FN );

准确率: Accuracy = ( TP + TN ) / ( TP + TN + FP + FN );

Python代码的讲,

tp = ((n_yuce==1) & (n_true==1)).sum()
fn = ((n_yuce==0) & (n_true==1)).sum()
fp = ((n_yuce==1) & (n_true==0)).sum()
tn = ((n_yuce==0) & (n_true==0)).sum()

recall = tp/(tp+fn)
precision_score = tp/(tp+fp)
f1 = 2*precision_score*recall/(precision_score+recall)
accuracy = (tp+tn)/(tp+tn+fp+fn)

或者,

from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score,cohen_kappa_score

recall = recall_score(n_yuce,n_true)
precision = precision_score(n_yuce,n_true)
f1 = f1_score(n_yuce,n_true)

#准确率
with tf.name_scope("accuracy"):
      correct_predictions = tf.equal(self.predictions,self.input_y)
      self.accuracy = tf.reduce_mean(tf.cast(correct_predictions, "float"), name="accuracy")

猜你喜欢

转载自blog.csdn.net/weixin_40683253/article/details/86616298