Als ich versuchte, den in einem bestimmten Artikel beschriebenen Index mit scicit-learn zu berechnen, gab es eine Methode, um die Sensitivität und den Rückruf unabhängig zu berechnen, aber Klassifizierungsbericht wird sowohl für die Spezifität als auch für den Kapitalwert ausgegeben. Da es jedoch keine Methode zur unabhängigen Berechnung gab, habe ich versucht, sie zu implementieren.
Schau her, hoch. https://en.wikipedia.org/wiki/Sensitivity_and_specificity
Die Beziehung zwischen Begriffen sieht so aus. Keine Notwendigkeit, sich zu merken.
Berechnen Sie mit der Verwirrungsmatrix.
from sklearn import metrics
def calc_metrics_derived_from_confusion_matrix(metrics_name, y_true, y_predict):
tn, fp, fn, tp = metrics.confusion_matrix(y_true, y_predict).ravel()
# PPV, precision
# TP / TP + FP
if metrics_name in ["PPV", "precision"]:
return tp / (tp + fp)
# NPV
# TN / TN + FN
if metrics_name in ["NPV"]:
return tn / (tn + fn)
# sensitivity, recall, TPR
# TP / TP + FN
if metrics_name in ["sensitivity", "recall", "TPR"]:
return tp / (tp + fn)
# specificity
# TN / TN + FP
if metrics_name in ["specificity"]:
return tn / (tn + fp)
So was.
calc_metrics_derived_from_confusion_matrix("sensitivity",[0,0,1], [1,0,1])
calc_metrics_derived_from_confusion_matrix("PPV",[0,0,1], [1,0,1])
calc_metrics_derived_from_confusion_matrix("specificity",[0,0,1], [1,0,1])
calc_metrics_derived_from_confusion_matrix("NPV",[0,0,1], [1,0,1])
Recommended Posts