Gittersuche
Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 39 von 58.
Manuelles Abstimmen bedeutet Schleifen in Schleifen. GridSearchCV kreuzvalidiert jede Kombination von Einstellungen und behält die beste bei. Für 300 Straßenbahnfahrten, verspätet oder pünktlich:
Ein Wörterbuch ordnet jeder Einstellung die auszuprobierenden Werte zu. min_samples_leaf ist die kleinste Anzahl von Zeilen, die ein Blatt enthalten darf:
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}")Dies gibt Folgendes aus:
{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813Die Suche passt den Gewinner erneut mit allen Trainingszeilen an, sodass search.score ihn einmal testet. Halte die Grids klein: Jede Zelle kostet 5 Fits.
Aufgabe
MittelEin Satellitenteam kennzeichnet Pixel mit k-NN als Wolken oder klaren Himmel. Das Programm liest das größte auszuprobierende k ein; der Starter teilt die Daten auf.
- Führe eine Rastersuche für jedes ungerade k von 1 bis zu dieser Zahl durch, mit
weights"uniform"oder"distance"(nähere Nachbarn zählen stärker),cv=5. - Gib die besten Einstellungen, ihre kreuzvalidierte Genauigkeit und die Testgenauigkeit mit 3 Dezimalstellen aus.
Für andere Pixel und 7:
Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800Probier es selbst
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
max_k = int(input())
# Ändere die folgenden Zeilen nicht: 360 Satellitenpixel mit jeweils 4 Lichtmesswerten; das Label 1 bedeutet Wolke
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)
# Schreibe deinen Code unten
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest8Kreuzvalidierung
K-Fold-ValidierungModelle fair vergleichenGittersucheRückblick: Skateboard-Reparaturen3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler