Menu
CoddyTech

Próg decyzyjny

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 17 z 58.

predict mówi „tak”, gdy prawdopodobieństwo przekracza 0.5 — próg threshold. Jednak przeoczenie wadliwego ekranu może kosztować więcej niż ponowne sprawdzenie. Obniż próg:

Czternaście ekranów telefonów na osi przedstawiającej prawdopodobieństwo, że są wadliwe: sześć wadliwych kwadratów, osiem sprawnych kropek. Przy progu 0.5 wykrywa się 4 z 6 wadliwych ekranów i pojawia się 1 fałszywy alarm; przy 0.3 — wszystkie 6, ale pojawiają się 4 fałszywe alarmy

Fałszywy alarm oznacza oznaczenie prawidłowego ekranu. Wybierz własny próg za pomocą porównania:

proba = model.predict_proba(X_test)[:, 1]
flag = proba >= 0.3  # True: sprawdź ten ekran

Niższy próg wychwytuje więcej rzeczywistych przypadków i powoduje więcej fałszywych alarmów; wyższy — odwrotnie. Szanse nigdy się nie zmieniają, zmienia się tylko próg.

Wybierz ją na podstawie tego, ile kosztuje każdy błąd.

challenge icon

Wyzwanie

Średni

Linia lotnicza zmienia rezerwacje pasażerom, którzy prawdopodobnie nie zdążą na przesiadkę, jeszcze zanim wylądują. Kod początkowy dopasowuje model do danych z pliku connections.csv i odczytuje próg.

  1. Uzyskaj prawdopodobieństwo, że pasażerowie z zestawu testowego nie zdążą na przesiadkę.
  2. Dla wartości 0.5, a następnie dla progu, policz pasażerów, którym zmieniono rezerwację, przypadki spóźnienia na przesiadkę, które udało się przewidzieć (spośród wszystkich takich przypadków), oraz niepotrzebne zmiany rezerwacji.
  3. Wypisz jeden wiersz dla każdego progu.

Dla innej linii lotniczej i wartości 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 rebookings

Spróbuj swoich sił

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# Jeden wiersz na pasażera: czas na przesiadkę i opóźnienie lotu przylatującego w minutach, zmiana terminalu (1 lub 0), bagaż rejestrowany; missed ma wartość 1 lub 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())

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online