Menu
CoddyTech

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:

Siatka średnich dokładności CV: wiersze odpowiadają uzupełnianiu średnią, medianą i najczęstszą wartością, a kolumny głębokościom drzewa 2, 4, 6 i 8. Wyniki mieszczą się w zakresie od 0.733 do 0.820, a komórka dla uzupełniania medianą przy głębokości 6 jest oznaczona jako najlepsza z wynikiem 0.820

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.

challenge icon

Wyzwanie

Średni

Szkoł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.

  1. Popraw dwa klucze siatki, aby przeszukiwanie dostrajało strategię imputera i liczbę sąsiadów w k-NN.
  2. 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.820

Spró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
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