Einführung
In diesem Lab werden wir lernen, wie wir mehrere Feature-Extraktionsmethoden mithilfe der scikit-learn-Bibliothek in Python verketten. Wir werden den FeatureUnion-Transformer verwenden, um Features zu kombinieren, die durch PCA und univariate Auswahl erhalten wurden. Die Verwendung dieses Transformers zum Kombinieren von Features hat den Vorteil, dass es die Kreuzvalidierung und das Grid-Search über den gesamten Prozess ermöglicht.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Bibliotheken importieren
Wir beginnen mit dem Import der erforderlichen Bibliotheken. Wir werden die Klassen Pipeline, FeatureUnion, GridSearchCV, SVC, load_iris, PCA und SelectKBest aus scikit-learn verwenden.
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest
Lade den Datensatz
Als nächstes laden wir den Iris-Datensatz mit der Funktion load_iris.
iris = load_iris()
X, y = iris.data, iris.target
Feature-Extraktion
Da der Iris-Datensatz hochdimensional ist, werden wir die Feature-Extraktion mit PCA und univariater Auswahl durchführen.
PCA
Wir werden PCA verwenden, um die Dimension des Datensatzes zu reduzieren.
pca = PCA(n_components=2)
Univariate-Selektion
Wir werden die Univariate-Selektion verwenden, um die wichtigsten Features auszuwählen.
selection = SelectKBest(k=1)
Kombinierte Features
Wir werden die Features, die aus PCA und der Univariate-Selektion erhalten wurden, mit dem Transformator FeatureUnion kombinieren.
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])
Transformierter Datensatz
Wir werden die kombinierten Features verwenden, um den Datensatz zu transformieren.
X_features = combined_features.fit(X, y).transform(X)
print("Combined space has", X_features.shape[1], "features")
Modelltraining
Wir werden ein Support-Vector-Machine (SVM)-Modell mit dem transformierten Datensatz trainieren.
svm = SVC(kernel="linear")
Grid Search
Wir werden eine Grid-Suche über die Hyperparameter der Pipeline mit GridSearchCV durchführen.
pipeline = Pipeline([("features", combined_features), ("svm", svm)])
param_grid = dict(
features__pca__n_components=[1, 2, 3],
features__univ_select__k=[1, 2],
svm__C=[0.1, 1, 10],
)
grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)
Zusammenfassung
In diesem Lab haben wir gelernt, wie man mehrere Feature-Extraktionsmethoden mit der scikit-learn-Bibliothek in Python verknüpft. Wir haben den Transformator FeatureUnion verwendet, um Features zu kombinieren, die durch PCA und Univariate-Selektion erhalten wurden. Wir haben auch ein Support-Vector-Machine (SVM)-Modell trainiert und eine Grid-Suche über die Hyperparameter der Pipeline durchgeführt.