Eine Pipeline optimieren
Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 48 von 58.
Eine Pipeline lässt sich wie jedes Modell abstimmen, einschließlich der Bereinigungsschritte. Jede Einstellung wird anhand ihres Schritts, zweier Unterstriche und anschließend des Parameters benannt:
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 benennt jeden Schritt nach seiner Klasse, in Kleinbuchstaben. Bei 200 Starts von Modellraketen, die 300 m erreichen oder nicht, erzielen die 12 Einstellungen:
Bei jedem Fold wird die gesamte Pipeline einschließlich des Imputers neu angepasst, sodass kein Fold Einblick in die Zeilen erhält, mit denen er getestet wird.
Aufgabe
MittelEine Musikschule möchte wissen, welche Geigenschüler ihre Prüfungen für die jeweilige Leistungsstufe bestehen werden. Das Startprogramm liest drei Werte für k ein, und seine Gittersuche über eine Pipeline bricht mit einem Fehler ab.
- Korrigiere die beiden Schlüssel des Gitters, damit die Suche die Strategie des Imputers und die Nachbarn von k-NN abstimmt.
- Gib die besten Einstellungen, ihre kreuzvalidierte Genauigkeit und die Testgenauigkeit wie unten aus.
Eine andere Schule mit 2, 4, 6:
Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820Probier es selbst
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
# Geigenschüler: Sie haben ihre Stufenprüfung bestanden (1) oder nicht (0); einige Übungsprotokolle
# und Noten für das Blattspiel fehlen
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())]
# Diese Suche bricht mit einem Fehler ab: Korrigiere das Grid
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)
# 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: Spamfilter7Überanpassung
Unter- und ÜberanpassungLernkurvenRegularisierungValidierungssetsRückblick: Einen Baum optimieren10Pipelines
PipelinesGemischte SpaltenFehlende Werte in einer Pipeline imputierenEine Pipeline optimierenRückblick: Bereinigen und Vorhersagen2Nä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: Screeningtest3Lineare 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