Rezygnacja klientów
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 58 z 58.
Usługa zestawów posiłków wysyła cotygodniowe pudełka. Plik subscribers.csv obejmuje 300 klientów i informację, czy zrezygnowali w ciągu dwóch miesięcy. Pominięte pudełka to jeden z sygnałów ostrzegawczych:
Zespół chce dzwonić do klientów zagrożonych odejściem, zanim odejdą. Jeden sygnał to za mało, więc las uwzględni je wszystkie.
Jej głębokość wymaga dostrojenia, a krzywa ROC pokaże, jak dobrze wyniki ryzyka porządkują osoby, które rezygnują.
Wyzwanie
Trudnyprep przechowuje ścieżki; program odczytuje głębokości drzew do depths.
- Wydziel stratyfikowaną ćwiartkę danych testowych,
random_state=0. - Przeprowadź wyszukiwanie siatkowe dla
prepi lasu składającego się ze 100 drzew (random_state=0), sprawdzając wartości zdepthsw 5 foldach na wierszach treningowych. Wypisz najlepszą głębokość i dokładność walidacji krzyżowej. - Na podstawie testowych prawdopodobieństw rezygnacji wypisz AUC i listę do kontaktu: prawdopodobieństwa wynoszące co najmniej 0.5.
- Narysuj krzywą ROC jako
forest, przerywaną przekątnącoin tossi legendą; wyświetl wykres.
Dla innej usługi i głębokości 3, 5:
Best depth: 3 (CV accuracy 0.761)
Test AUC: 0.802
Call list: 21 customers, 15 of them really cancelledPotem Coddy opisuje twoją krzywą.
Spróbuj swoich sił
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_curve, roc_auc_score
subscribers = pd.read_csv("subscribers.csv")
numbers = ["months_subscribed", "boxes_skipped", "complaints", "monthly_price", "delivery_rating"]
text = ["plan", "channel"]
X = subscribers[numbers + text]
y = subscribers["churned"]
# Ścieżki, tak jak w Prepare the Data
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])
# Głębokości drzew do wypróbowania
n = int(input())
depths = []
for i in range(n):
depths.append(int(input()))
fig, ax = plt.subplots()
ax.set_title("Who Will Cancel?")
ax.set_xlabel("False positive rate")
ax.set_ylabel("Recall")
# 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óż model3Regresja liniowa
Przewidywanie wartości liczbowychWiele cechPomiar błędówWykresy resztPodsumowanie: wypożyczanie rowerów6Drzewa decyzyjne
Drzewa zadają pytaniaCzytanie drzewaGłębokość drzewaWażność cechPodsumowanie: decyzje kredytowe12Wyzwania końcowe
Postępy w leczeniu cukrzycyZatwierdzanie kredytówOdręcznie pisane cyfryRezygnacja klientówPoćwicz samodzielnie: Kompilator Python online