Przeszukiwanie siatki
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 39 z 58.
Ręczne dostrajanie oznacza pętle zagnieżdżone w sobie. GridSearchCV sprawdza krzyżowo każdą kombinację ustawień i zachowuje najlepszą. Dla 300 przejazdów tramwajem, opóźnionych lub punktualnych:
Słownik przypisuje każdemu ustawieniu wartości do przetestowania. min_samples_leaf to najmniejsza liczba wierszy, jakie może zawierać liść:
from sklearn.model_selection import GridSearchCV
grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")To wypisuje:
{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813Wyszukiwanie ponownie dopasowuje zwycięski model do wszystkich wierszy treningowych, więc search.score testuje go raz. Siatki powinny być małe: każda komórka kosztuje 5 dopasowań.
Wyzwanie
ŚredniZespół satelitarny klasyfikuje piksele jako chmury lub czyste niebo za pomocą k-NN. Program odczytuje największe k do sprawdzenia; kod startowy dzieli dane.
- Przeprowadź wyszukiwanie siatki dla każdej nieparzystej wartości k od 1 do tej liczby, z
weightsustawionym na"uniform"lub"distance"(bliżsi sąsiedzi mają większe znaczenie) icv=5. - Wypisz najlepsze ustawienia, ich dokładność w walidacji krzyżowej oraz dokładność na zbiorze testowym, z dokładnością do 3 miejsc po przecinku.
Dla pozostałych pikseli i 7:
Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800Spróbuj swoich sił
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
max_k = int(input())
# Nie zmieniaj poniższych wierszy: 360 pikseli satelitarnych, po 4 odczyty światła dla każdego; etykieta 1 oznacza chmurę
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# 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