真实情况|预测正|预测反
|:-:|:-:|:-:|
正|TP(真正例)|FN(假反例)
反|FP(假正例|TN(真反例)
查全率sensitivity/true positive rate/recall_score/ TPR
TPR = TP / (TP + FN)
1 | sm.recall_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None) |
specificity(true negative rate) SPC
SPC = TN/(TN+FP)
查准率precision_score/positive predictive value/PPV
PPV = TP/(TP+FP)1
2import sklearn.metrics as sm
sm.precision_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)
negative predictive value (NPV)
NPV = TN/(TN+FN)
accuracy (ACC)
ACC = (TP+TN)/(TP+FP+FN+TN)1
sm.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
F1是基于查准率与查全率的调和平均
1/F1 = 0.5*(1/P+1/R)1
sm.f1_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)
F_beta是加权调和平均
1/F_beta = 1/(1+beta^2)*(1/P+beta^2/R)
ß>O 度量了查全率对查准率的相对重要性
ß>1 时查全率有更大影响 ;
ß < 1 时查准率有更大影响.
ß = 1时退化为标准的 F11
sm.fbeta_score(y_true, y_pred, beta, labels=None, pos_label=1, average='binary', sample_weight=None)
Matthews correlation coefficient (MCC)
ROC曲线
我们根据学习器的预测结果对样例进行排序,
按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,
分别以它们为横、纵坐标作图就得到了 ROC 曲线
横轴是假正例率False Positive Rate(FPR)
纵轴是真正例率True Positive Rate(TPR)1
sm.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True)
AUC
Area Under ROC Curve
若一个学习器的 ROC 曲线被另 一个学 习器的曲线完全”包住”,
则可断言后者的性能优于前者;若两个学习 器的 ROC 曲线发生交叉,
则难以-般性地断言两者孰优孰劣 . 此时如果一定要进行比较,
则较为合理的判据是比较 ROC曲线下的面积 ,即 AUC1
2
3
4
5
6
7
8import numpy as np
from sklearn import metrics
1, 1, 2, 2]) y = np.array([
0.1, 0.4, 0.35, 0.8]) pred = np.array([
2) fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=
# ROC curve plt.plot(fpr, tpr)
metrics.auc(fpr, tpr)
0.75