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:
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 ekranNiż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.
Wyzwanie
ŚredniLinia 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.
- Uzyskaj prawdopodobieństwo, że pasażerowie z zestawu testowego nie zdążą na przesiadkę.
- 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.
- 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 rebookingsSpró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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż modelPoćwicz samodzielnie: Kompilator Python online