[PYTHON] Ich habe versucht, eine Methode zur Berechnung des Bewertungsindex (Spezifität, NPV) zu implementieren, die scikit-learn nicht hat

Einführung

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.

Berechnungsmethode

Schau her, hoch. https://en.wikipedia.org/wiki/Sensitivity_and_specificity

Die Beziehung zwischen Begriffen sieht so aus. Keine Notwendigkeit, sich zu merken.

Quelle

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)

Wie benutzt man

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

Ich habe versucht, eine Methode zur Berechnung des Bewertungsindex (Spezifität, NPV) zu implementieren, die scikit-learn nicht hat
Ich habe versucht, ein Wörterbuch ohne Berücksichtigung der Groß- und Kleinschreibung zu erstellen
[Linux] So installieren Sie ein Paket auf einem Server ohne Internetumgebung (eigenständig)
Beim Inkrementieren des Werts eines Schlüssels, der nicht vorhanden ist
Python-Spezialcodec, der zu wissen scheint, aber nicht weiß
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
So beheben Sie einen Fehler, bei dem das Jupyter-Notebook nicht automatisch gestartet wird
Das Modul, das mit pip installiert werden sollte, läuft nicht
Ich habe eine Bibliothek konoha gemacht, die den Tokenizer auf ein schönes Gefühl umstellt
Ich habe es geschafft, die Situation zu lösen, in der Python auf dem Mac nicht funktioniert
Eine Geschichte, die manchmal nicht funktioniert, wenn pip die neueste ist
Lösung für das Problem, dass der Build bei der Installation von OpenCV (PEP517) nicht beendet wird
Ich habe ein neuronales Netzwerk Π-Net ausprobiert, für das keine Aktivierungsfunktion erforderlich ist
Ich habe ein Skript geschrieben, um die Schluckuhr wiederzubeleben, die bald sterben wird
Das Definieren einer untergeordneten Klasseneigenschaft oder -methode überschreibt die übergeordnete Klassendefinition nicht
Ich musste im Unterricht keinen Dekorateur schreiben. Danke Kontextmanager