Das Verbinden mehrerer Feature-Extraktionsmethoden

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_selection("Feature Selection") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/pipeline("Pipeline") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/decomposition("Matrix Decomposition") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49129{{"Das Verbinden mehrerer Feature-Extraktionsmethoden"}} sklearn/feature_selection -.-> lab-49129{{"Das Verbinden mehrerer Feature-Extraktionsmethoden"}} sklearn/pipeline -.-> lab-49129{{"Das Verbinden mehrerer Feature-Extraktionsmethoden"}} sklearn/model_selection -.-> lab-49129{{"Das Verbinden mehrerer Feature-Extraktionsmethoden"}} sklearn/decomposition -.-> lab-49129{{"Das Verbinden mehrerer Feature-Extraktionsmethoden"}} sklearn/datasets -.-> lab-49129{{"Das Verbinden mehrerer Feature-Extraktionsmethoden"}} ml/sklearn -.-> lab-49129{{"Das Verbinden mehrerer Feature-Extraktionsmethoden"}} end

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")

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.