Strojenie potoku
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 48 z 58.
Potok można dostrajać jak każdy model, uwzględniając również kroki czyszczenia danych. Każde ustawienie jest określane przez nazwę kroku, dwa podkreślenia, a następnie parametr:
pipe = make_pipeline(SimpleImputer(), DecisionTreeClassifier(random_state=0))
grid = {"simpleimputer__strategy": ["mean", "median", "most_frequent"],
"decisiontreeclassifier__max_depth": [2, 4, 6, 8]}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)make_pipeline nadaje każdemu krokowi nazwę jego klasy, zapisaną małymi literami. W przypadku 200 startów rakiet modelu, które osiągnęły wysokość 300 m lub nie, wyniki dla 12 ustawień są następujące:
Każdy fold ponownie dopasowuje cały potok, również imputera, więc żaden fold nie zagląda do wierszy, na których jest testowany.
Wyzwanie
ŚredniSzkoła muzyczna chce wiedzieć, którzy uczniowie gry na skrzypcach zdadzą egzamin klasyfikacyjny. Kod początkowy odczytuje trzy wartości k, a przeszukiwanie siatki parametrów potoku kończy się błędem.
- Popraw dwa klucze siatki, aby przeszukiwanie dostrajało strategię imputera i liczbę sąsiadów w k-NN.
- Wypisz najlepsze ustawienia, ich dokładność sprawdzoną walidacją krzyżową oraz dokładność na zbiorze testowym, jak poniżej.
Inna szkoła, z 2, 4, 6:
Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820Spróbuj swoich sił
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# Uczniowie gry na skrzypcach: zdali egzamin na stopień (1) lub nie (0); brakuje niektórych
# zapisów ćwiczeń i wyników czytania nut a vista
students = pd.read_csv("violins.csv")
X = students.drop(columns="passed")
y = students["passed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = [int(input()), int(input()), int(input())]
# To wyszukiwanie kończy się błędem: popraw siatkę parametrów
pipe = make_pipeline(SimpleImputer(), StandardScaler(), KNeighborsClassifier())
grid = {
"strategy": ["mean", "median"],
"n_neighbors": ks,
}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)
# 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 spamu7Przeuczenie
Niedouczenie i przeuczenieKrzywe uczeniaRegularyzacjaZbiory walidacyjnePodsumowanie: dostrajanie drzewa10Potoki
PotokiMieszane kolumnyUzupełnianie braków w potokuStrojenie potokuPodsumowanie: Oczyść i przewiduj2Najbliż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