[PYTHON] J'ai essayé d'implémenter une méthode pour calculer l'indice d'évaluation (spécificité, NPV) que scikit-learn n'a pas

introduction

Lorsque j'ai essayé de calculer l'indice décrit dans un certain article avec scicit-learn, il y avait une méthode pour calculer la sensibilité et le rappel indépendamment, mais classification_report est généré à la fois pour la spécicité et la VAN. Cependant, comme il n'y avait pas de méthode pour calculer indépendamment, j'ai essayé de l'implémenter.

Méthode de calcul

Regardez ici, haut. https://en.wikipedia.org/wiki/Sensitivity_and_specificity

La relation entre les termes ressemble à ceci. Pas besoin de mémoriser.

La source

Calculez en utilisant la matrice de confusion.

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)

Comment utiliser

Comme ça.

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

J'ai essayé d'implémenter une méthode pour calculer l'indice d'évaluation (spécificité, NPV) que scikit-learn n'a pas
J'ai essayé de créer une fonction de dictionnaire insensible à la casse
[Linux] Comment installer un package sur un serveur qui n’a pas d’environnement Internet (autonome)
Lors de l'incrémentation de la valeur d'une clé qui n'existe pas
Un codec Python spécial qui semble savoir mais ne sait pas
[Python] J'ai fait un décorateur qui ne semble pas avoir d'utilité.
Comment corriger un bug qui empêche le notebook Jupyter de démarrer automatiquement
Le module qui aurait dû être installé avec pip ne fonctionne pas
J'ai créé un konoha de bibliothèque qui fait passer le tokenizer à une belle sensation
J'ai réussi à résoudre la situation où Python ne fonctionne pas sur Mac
Une histoire qui parfois ne marche pas si pip est le dernier
Solution au problème qui ne se termine pas lors de l'installation d'OpenCV (PEP517)
J'ai essayé un réseau de neurones Π-Net qui ne nécessite pas de fonction d'activation
J'ai écrit un script pour relancer la montre gulp qui mourra bientôt
La définition d'une propriété ou d'une méthode de classe enfant ne remplace pas la définition de classe parent
Je n'ai pas eu besoin d'écrire décorateur en classe Merci contextmanager