Concaténer plusieurs méthodes d'extraction de caractéristiques

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à concaténer plusieurs méthodes d'extraction de caractéristiques à l'aide de la bibliothèque scikit-learn de Python. Nous utiliserons le transformateur FeatureUnion pour combiner les caractéristiques obtenues par PCA et la sélection univariée. Combiner les caractéristiques à l'aide de ce transformateur a l'avantage de permettre la validation croisée et les recherches de grille sur l'ensemble du processus.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) 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/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{{"Concaténer plusieurs méthodes d'extraction de caractéristiques"}} sklearn/feature_selection -.-> lab-49129{{"Concaténer plusieurs méthodes d'extraction de caractéristiques"}} sklearn/pipeline -.-> lab-49129{{"Concaténer plusieurs méthodes d'extraction de caractéristiques"}} sklearn/model_selection -.-> lab-49129{{"Concaténer plusieurs méthodes d'extraction de caractéristiques"}} sklearn/decomposition -.-> lab-49129{{"Concaténer plusieurs méthodes d'extraction de caractéristiques"}} sklearn/datasets -.-> lab-49129{{"Concaténer plusieurs méthodes d'extraction de caractéristiques"}} ml/sklearn -.-> lab-49129{{"Concaténer plusieurs méthodes d'extraction de caractéristiques"}} end

Importation des bibliothèques

Nous allons commencer par importer les bibliothèques requises. Nous utiliserons les classes Pipeline, FeatureUnion, GridSearchCV, SVC, load_iris, PCA et SelectKBest de scikit-learn.

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

Charger le jeu de données

Ensuite, nous allons charger le jeu de données iris à l'aide de la fonction load_iris.

iris = load_iris()

X, y = iris.data, iris.target

Extraction de caractéristiques

Étant donné que le jeu de données iris est à haute dimension, nous allons effectuer une extraction de caractéristiques à l'aide de la PCA (Analyse en Composantes Principales) et de la sélection univariée.

PCA (Analyse en Composantes Principales)

Nous utiliserons la PCA pour réduire la dimensionnalité du jeu de données.

pca = PCA(n_components=2)

Sélection univariée

Nous utiliserons la sélection univariée pour sélectionner les caractéristiques les plus significatives.

selection = SelectKBest(k=1)

Caractéristiques combinées

Nous allons combiner les caractéristiques obtenues à partir de la PCA et de la sélection univariée à l'aide du transformateur FeatureUnion.

combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

Jeu de données transformé

Nous utiliserons les caractéristiques combinées pour transformer le jeu de données.

X_features = combined_features.fit(X, y).transform(X)
print("Combined space has", X_features.shape[1], "features")

Entraînement du modèle

Nous allons entraîner un modèle de machine à vecteurs de support (SVM) à l'aide du jeu de données transformé.

svm = SVC(kernel="linear")

Recherche sur grille

Nous effectuerons une recherche sur grille sur les hyperparamètres du pipeline à l'aide de GridSearchCV.

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

Sommaire

Dans ce laboratoire, nous avons appris à concaténer plusieurs méthodes d'extraction de caractéristiques à l'aide de la bibliothèque scikit-learn de Python. Nous avons utilisé le transformateur FeatureUnion pour combiner les caractéristiques obtenues par la PCA et la sélection univariée. Nous avons également entraîné un modèle de machine à vecteurs de support (SVM) et effectué une recherche sur grille sur les hyperparamètres du pipeline.