一、简介
在机器学习领域中,模型的预测结果通常被分为四类:True Positive(TP)、True Negative(TN)、False Positive(FP)、False Negative(FN),简称TP,TN,FP,FN,这四个指标也一直是模型评估中重要的指标之一。下面我们将从定义、计算、评估指标、实际应用等多个方面对TP,TN,FP,FN进行详细阐述。
二、定义
TP表示实际为正样本且被模型预测为正样本的样本数;TN表示实际为负样本且被模型预测为负样本的样本数;FP表示实际为负样本且被模型预测为正样本的样本数;FN表示实际为正样本且被模型预测为负样本的样本数。
def cal_tp_tn_fp_fn(y_true, y_pred): tp = tn = fp = fn = 0 for i in range(len(y_true)): if y_true[i] == 1 and y_pred[i] == 1: tp += 1 elif y_true[i] == 0 and y_pred[i] == 0: tn += 1 elif y_true[i] == 0 and y_pred[i] == 1: fp += 1 elif y_true[i] == 1 and y_pred[i] == 0: fn += 1 return tp, tn, fp, fn
三、计算
除了直接计算之外,TP,TN,FP,FN还可以通过其他指标计算得出。在分类模型的模型评估中,常用的指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1-score等,这些指标都与TP,TN,FP,FN有关。
TPR(True Positive Rate)、FPR(False Positive Rate):TPR是TP与所有实际正样本的比例,也就是召回率(Recall);FPR是FP与所有实际负样本的比例。
Accuracy=(TP+TN)/(TP+TN+FP+FN)
Precision=TP/(TP+FP)
Recall=TP/(TP+FN)
F1-score=2*Precision*Recall/(Precision+Recall)
TPR=TP/(TP+FN)
FPR=FP/(FP+TN)
def cal_accuracy(y_true, y_pred): tp, tn, fp, fn = cal_tp_tn_fp_fn(y_true, y_pred) acc = (tp+tn)/(tp+tn+fp+fn) return acc def cal_precision(y_true, y_pred): tp, tn, fp, fn = cal_tp_tn_fp_fn(y_true, y_pred) precision = tp/(tp+fp) return precision def cal_recall(y_true, y_pred): tp, tn, fp, fn = cal_tp_tn_fp_fn(y_true, y_pred) recall = tp/(tp+fn) return recall def cal_f1score(y_true, y_pred): precision = cal_precision(y_true, y_pred) recall = cal_recall(y_true, y_pred) f1 = 2*precision*recall/(precision+recall) return f1 def cal_tpr(y_true, y_pred): tp, tn, fp, fn = cal_tp_tn_fp_fn(y_true, y_pred) tpr = tp/(tp+fn) return tpr def cal_fpr(y_true, y_pred): tp, tn, fp, fn = cal_tp_tn_fp_fn(y_true, y_pred) fpr = fp/(fp+tn) return fpr
四、评估指标
在实际应用中,我们常用这些评估指标来评估模型的性能。通常情况下,我们会关注哪些评估指标呢?
当我们关注模型将正样本预测为正样本的表现时,我们会关注精确率(Precision),当我们关注模型将所有实际正样本预测为正样本的表现时,我们会关注召回率(Recall),当我们关注模型的整体效果时,我们会关注F1-score和准确率(Accuracy)。
五、实际应用
下面,我们可以通过如下的代码来演示应用。
from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_classes=2, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 训练并预测 lr = LogisticRegression() lr.fit(X_train, y_train) y_pred = lr.predict(X_test) # 计算各项指标 acc = accuracy_score(y_test, y_pred) precision = precision_score(y_test, y_pred) recall = recall_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) print('Accuracy:', acc) print('Precision:', precision) print('Recall:', recall) print('F1-score:', f1)
六、总结
TP,TN,FP,FN是评估分类模型性能的四个重要指标,除了直接计算之外,还可以通过其他指标计算得出,如准确率、精确率、召回率和F1-score,这些指标在实际应用中经常被应用。在使用的时候,我们需要对每个指标有深刻的认识,选择最适合我们模型的评估指标。
原创文章,作者:CHKA,如若转载,请注明出处:https://www.506064.com/n/131003.html