一、簡介
在機器學習領域中,模型的預測結果通常被分為四類: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/zh-hant/n/131003.html
微信掃一掃
支付寶掃一掃