Die Entscheidungsschwelle
Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 17 von 58.
predict sagt Ja, wenn die Wahrscheinlichkeit den Schwellenwert 0.5 überschreitet. Ein übersehenes defektes Display kann jedoch mehr kosten als ein zweiter Blick. Senke den Schwellenwert:
Ein Fehlalarm ist ein unauffälliger Bildschirm, der markiert wurde. Wähle deinen eigenen Schwellenwert mithilfe eines Vergleichs:
proba = model.predict_proba(X_test)[:, 1]
flag = proba >= 0.3 # True: Diesen Bildschirm prüfenBei einem niedrigeren Wert erfasst es mehr tatsächliche Fälle und schlägt häufiger fälschlich Alarm; bei einem höheren Wert ist es umgekehrt. Die Wahrscheinlichkeiten ändern sich nie, nur der Schwellenwert.
Wähle es danach aus, wie viel jeder Fehler kostet.
Aufgabe
MittelEine Fluggesellschaft bucht Passagiere, die ihren Anschlussflug wahrscheinlich verpassen werden, schon vor ihrer Landung um. Das Grundgerüst trainiert ein Modell mit connections.csv und liest einen Schwellenwert ein.
- Ermittle die Wahrscheinlichkeit, mit der die Testpassagiere ihren Anschlussflug verpassen.
- Zähle für 0.5 und danach für den Schwellenwert die umgebuchten Passagiere, die tatsächlich verpassten Anschlussflüge (von allen verpassten) und die unnötigen Umbuchungen.
- Gib für jeden Schwellenwert eine Zeile aus.
Für eine andere Fluggesellschaft und 0.25:
Threshold 0.5: 9 rebooked, 7 of 15 misses caught, 2 needless rebookings
Threshold 0.25: 21 rebooked, 13 of 15 misses caught, 8 needless rebookingsProbier es selbst
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# Eine Zeile pro Passagier: Umsteigezeit und Verspätung des ankommenden Flugs in Minuten, Terminalwechsel (1 oder 0), aufgegebenes Gepäck; missed ist 1 oder 0
trips = pd.read_csv("connections.csv")
features = ["layover_min", "delay_min", "terminal_change", "checked_bags"]
X_train, X_test, y_train, y_test = train_test_split(trips[features], trips["missed"], test_size=0.25, random_state=0)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
threshold = float(input())
# Schreibe deinen Code unten
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler