Kursinhalt
Ensemble-Lernen
Ensemble-Lernen
Bagging-Klassifikator
Wir haben bereits das Prinzip der Arbeitsweise eines Bagging-Ensembles betrachtet. Nun wollen wir dieses Wissen anwenden und ein Modell erstellen, das eine Klassifikation mit einem solchen Ensemble in Python bereitstellt:
Zuerst importieren wir die BaggingClassifier
-Klasse, die alle notwendigen Werkzeuge zur Arbeit mit dem Bagging-Classifier enthält.
Dann erstellen wir eine Instanz dieser Klasse, indem wir das Basismodell, die Anzahl dieser Modelle zur Erstellung eines Ensembles und den n_jobs
-Parameter angeben.
Hinweis
Wir haben bereits erwähnt, dass Bagging-Modelle mit paralleler Berechnung angepasst werden können.
n_jobs=-1
bedeutet, dass wir alle verfügbaren Prozessoren verwenden, um das Modell zu trainieren.
Nun können wir die Methoden .fit()
und .predict()
von BaggingClassifier
verwenden, um das Modell auf den verfügbaren Daten zu trainieren und Vorhersagen zu treffen:
Nun, lassen Sie uns über die Basismodelle eines Ensembles sprechen.
Welche Modelle können als Basis verwendet werden?
Wir können absolut jedes Modell, das für Klassifikationsaufgaben entwickelt wurde, als Basismodelle des Ensembles verwenden (logistische Regression, SVM, neuronale Netze usw.).
Es ist auch wichtig zu beachten, dass das Ensemble beim Verwenden der .fit()
-Methode selbst auf verschiedenen Daten-Subsamples lernt, sodass wir keine zusätzlichen Parameter angeben oder den Lernprozess manuell steuern müssen.
Wenn wir die .predict()
-Methode verwenden, erstellt die harte Abstimmung eine endgültige Vorhersage.
Wenn wir eine endgültige Vorhersage mit weicher Abstimmung erstellen möchten, müssen wir den Basis-Schätzer mit der implementierten .predict_proba()
-Methode anstelle der .predict()
-Methode verwenden. Dadurch erhalten wir den Vektor, der jeder Probe aus dem Testset entspricht und aggregierte Wahrscheinlichkeiten enthält, die zu einer bestimmten Klasse gehören (wir nennen es die Wahrscheinlichkeitsmatrix).
Hinweis
Wenn wir das Basismodell von
BaggingClassifer
nicht angeben, wird standardmäßig der Decision Tree Classifier verwendet.
Beispiel für die Verwendung
Lassen Sie uns einige einfache Klassifikationsprobleme mit einem Bagging-Ensemble lösen, wobei die logistische Regression als Basismodell verwendet wird:
import numpy as np from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.ensemble import BaggingClassifier from sklearn.linear_model import LogisticRegression from sklearn.metrics import f1_score # Generate synthetic data X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_clusters_per_class=1, random_state=42) # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Create a base model (Logistic Regression) base_model = LogisticRegression(random_state=42) # Create a Bagging Classifier bagging_model = BaggingClassifier(base_model, n_estimators=10, n_jobs=-1) # Train the `BaggingClassifier` bagging_model.fit(X_train, y_train) # Make predictions on the test data predictions = bagging_model.predict(X_test) # Calculate F1 score f1 = f1_score(y_test, predictions) print(f'F1 score: {f1:.4f}')
Danke für Ihr Feedback!