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.
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.