class_likelihood_ratios#
- sklearn.metrics.class_likelihood_ratios(y_true, y_pred, *, labels=None, sample_weight=None, raise_warning='deprecated', replace_undefined_by=nan)[Quelle]#
Berechnet die positiven und negativen Likelihood-Verhältnisse für die binäre Klassifikation.
Das positive Likelihood-Verhältnis ist
LR+ = Sensitivität / (1 - Spezifität), wobei die Sensitivität oder der Recall das Verhältnistp / (tp + fn)ist und die Spezifitättn / (tn + fp)ist. Das negative Likelihood-Verhältnis istLR- = (1 - Sensitivität) / Spezifität. Hier isttpdie Anzahl der True Positives,fpdie Anzahl der False Positives,tndie Anzahl der True Negatives undfndie Anzahl der False Negatives. Beide Klassen-Likelihood-Verhältnisse können verwendet werden, um Post-Test-Wahrscheinlichkeiten zu erhalten, gegeben eine Pre-Test-Wahrscheinlichkeit.LR+reicht von 1,0 bis unendlich. EinLR+von 1,0 bedeutet, dass die Wahrscheinlichkeit, die positive Klasse vorherzusagen, für Stichproben, die zu beiden Klassen gehören, gleich ist; daher ist der Test nutzlos. Je größerLR+ist, desto wahrscheinlicher ist eine positive Vorhersage ein True Positive im Vergleich zur Pre-Test-Wahrscheinlichkeit. Ein Wert vonLR+kleiner als 1,0 ist ungültig, da er bedeuten würde, dass die Chancen, dass eine Stichprobe ein True Positive ist, im Vergleich zu den Pre-Test-Chancen sinken.LR-reicht von 0,0 bis 1,0. Je näher er an 0,0 liegt, desto geringer ist die Wahrscheinlichkeit, dass eine gegebene Stichprobe ein False Negative ist. EinLR-von 1,0 bedeutet, dass der Test nutzlos ist, da sich die Chancen, die Bedingung zu haben, nach dem Test nicht geändert haben. Ein Wert vonLR-größer als 1,0 macht den Klassifikator ungültig, da er eine Erhöhung der Chancen anzeigt, dass eine Stichprobe zur positiven Klasse gehört, nachdem sie als negativ klassifiziert wurde. Dies ist der Fall, wenn der Klassifikator systematisch das Gegenteil des wahren Labels vorhersagt.Eine typische Anwendung in der Medizin ist die Identifizierung der positiven/negativen Klasse für das Vorhandensein/Nichtvorhandensein einer Krankheit. Der Klassifikator ist ein diagnostischer Test; die Pre-Test-Wahrscheinlichkeit, dass eine Person die Krankheit hat, kann die Prävalenz dieser Krankheit sein (Anteil einer bestimmten Bevölkerung, der von einer medizinischen Erkrankung betroffen ist); und die Post-Test-Wahrscheinlichkeiten wären die Wahrscheinlichkeit, dass die Erkrankung nach einem positiven Testergebnis tatsächlich vorliegt.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- y_true1D Array-ähnlich oder Label-Indikator-Array / Sparse Matrix
Wahre (korrekte) Zielwerte. Sparse Matrix wird nur unterstützt, wenn die Ziele vom Typ Multilabel sind.
- y_pred1D Array-ähnlich oder Label-Indikator-Array / Sparse Matrix
Geschätzte Ziele, wie sie von einem Klassifikator zurückgegeben werden. Sparse Matrix wird nur unterstützt, wenn die Ziele vom Typ Multilabel sind.
- labelsarray-artig, Standardwert=None
Liste der Labels, um die Matrix zu indizieren. Dies kann verwendet werden, um die positive und negative Klasse mit der Reihenfolge
labels=[negative_Klasse, positive_Klasse]auszuwählen. WennNoneangegeben wird, werden diejenigen verwendet, die mindestens einmal iny_trueodery_predvorkommen, in sortierter Reihenfolge.- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- raise_warningbool, Standard=True
Ob eine fallbezogene Warnmeldung ausgegeben wird, wenn eine Division durch Null auftritt.
Veraltet seit Version 1.7:
raise_warningwurde in Version 1.7 als veraltet markiert und wird in Version 1.9 entfernt, wenn eineUndefinedMetricWarningim Falle einer Division durch Null immer ausgelöst wird.- replace_undefined_bynp.nan, 1.0 oder dict, Standard=np.nan
Legt die Rückgabewerte für LR+ und LR- fest, wenn eine Division durch Null auftritt. Kann die folgenden Werte annehmen:
np.nan, umnp.nanfür sowohlLR+als auchLR-zurückzugeben1.0, um die schlechtesten möglichen Werte zurückzugeben:{"LR+": 1.0, "LR-": 1.0}ein dict im Format
{"LR+": wert_1, "LR-": wert_2}, wobei die Werte nicht-negative Gleitkommazahlen,np.infodernp.nanim Bereich der Likelihood-Verhältnisse sein können. Zum Beispiel kann{"LR+": 1.0, "LR-": 1.0}verwendet werden, um die schlechtesten Ergebnisse zurückzugeben, was auf ein nutzloses Modell hindeutet, und{"LR+": np.inf, "LR-": 0.0}kann verwendet werden, um die besten Ergebnisse zurückzugeben, was auf ein nützliches Modell hindeutet.
Wenn eine Division durch Null auftritt, wird nur die betroffene Metrik durch den festgelegten Wert ersetzt; die andere Metrik wird wie gewohnt berechnet.
Hinzugefügt in Version 1.7.
- Gibt zurück:
- (positive_likelihood_ratio, negative_likelihood_ratio)tuple von float
Ein Tupel aus zwei Gleitkommazahlen, die erste enthält das positive Likelihood-Verhältnis (LR+) und die zweite das negative Likelihood-Verhältnis (LR-).
- Warnungen:
- Löst
UndefinedMetricWarningaus, wenny_trueund y_predzu den folgenden Bedingungen führen:Die Anzahl der False Positives ist 0 und
raise_warningist aufTrue(Standard) gesetzt: das positive Likelihood-Verhältnis ist undefiniert.Die Anzahl der True Negatives ist 0 und
raise_warningist aufTrue(Standard) gesetzt: das negative Likelihood-Verhältnis ist undefiniert.Die Summe der True Positives und False Negatives ist 0 (keine Stichproben der positiven Klasse sind in
y_truevorhanden): beide Likelihood-Verhältnisse sind undefiniert.
Für die ersten beiden Fälle kann eine undefinierte Metrik definiert werden, indem der Parameter
replace_undefined_bygesetzt wird.
- Löst
Referenzen
Beispiele
>>> import numpy as np >>> from sklearn.metrics import class_likelihood_ratios >>> class_likelihood_ratios([0, 1, 0, 1, 0], [1, 1, 0, 0, 0]) (1.5, 0.75) >>> y_true = np.array(["non-cat", "cat", "non-cat", "cat", "non-cat"]) >>> y_pred = np.array(["cat", "cat", "non-cat", "non-cat", "non-cat"]) >>> class_likelihood_ratios(y_true, y_pred) (1.33, 0.66) >>> y_true = np.array(["non-zebra", "zebra", "non-zebra", "zebra", "non-zebra"]) >>> y_pred = np.array(["zebra", "zebra", "non-zebra", "non-zebra", "non-zebra"]) >>> class_likelihood_ratios(y_true, y_pred) (1.5, 0.75)
Um Mehrdeutigkeiten zu vermeiden, verwenden Sie die Notation
labels=[negative_Klasse, positive_Klasse]>>> y_true = np.array(["non-cat", "cat", "non-cat", "cat", "non-cat"]) >>> y_pred = np.array(["cat", "cat", "non-cat", "non-cat", "non-cat"]) >>> class_likelihood_ratios(y_true, y_pred, labels=["non-cat", "cat"]) (1.5, 0.75)
Galeriebeispiele#
Klassen-Likelihood-Verhältnisse zur Messung der Klassifikationsleistung