Sélection de modèle : Choix d'estimateurs et de leurs paramètres

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

En apprentissage automatique, la sélection de modèle est le processus consistant à choisir le meilleur modèle pour un ensemble de données donné. Elle implique la sélection de l'estimateur approprié et l'ajustement de ses paramètres pour obtenir une performance optimale. Ce tutoriel vous guidera tout au long du processus de sélection de modèle dans scikit-learn.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet d'adresses pour accéder à Jupyter Notebook et pratiquer.

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 limitations 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ésoudrons rapidement le problème pour vous.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 87%. Il a reçu un taux d'avis positifs de 88% de la part des apprenants.

Score et scores validés croisés

Les estimateurs dans scikit-learn exposent une méthode score qui peut être utilisée pour évaluer la qualité de l'ajustement du modèle ou de la prédiction sur de nouvelles données. Cette méthode renvoie un score, où une valeur plus élevée indique une meilleure performance.

from sklearn import datasets, svm

## Chargez l'ensemble de données des chiffres
X_digits, y_digits = datasets.load_digits(return_X_y=True)

## Créez un classifieur SVM avec noyau linéaire
svc = svm.SVC(C=1, kernel='linear')

## Ajustez le classifieur sur les données d'entraînement et calculez le score sur les données de test
score = svc.fit(X_digits[:-100], y_digits[:-100]).score(X_digits[-100:], y_digits[-100:])

Pour obtenir une mesure meilleure de la précision de prédiction, nous pouvons utiliser la validation croisée. La validation croisée consiste à diviser les données en plusieurs plis, en utilisant chaque pli comme ensemble de test et les plis restants comme ensembles d'entraînement. Ce processus est répété plusieurs fois, et les scores sont moyennés pour obtenir la performance globale.

import numpy as np

## Divisez les données en 3 plis
X_folds = np.array_split(X_digits, 3)
y_folds = np.array_split(y_digits, 3)

## Effectuez la validation croisée
scores = []
for k in range(3):
    X_train = list(X_folds)
    X_test = X_train.pop(k)
    X_train = np.concatenate(X_train)
    y_train = list(y_folds)
    y_test = y_train.pop(k)
    y_train = np.concatenate(y_train)
    scores.append(svc.fit(X_train, y_train).score(X_test, y_test))

print(scores)

Générateurs de validation croisée

Scikit-learn fournit une collection de classes qui peuvent être utilisées pour générer des indices d'entraînement/tests pour les stratégies de validation croisée populaires. Ces classes ont une méthode split qui accepte l'ensemble de données d'entrée et renvoie les indices d'ensemble d'entraînement/tests pour chaque itération du processus de validation croisée.

from sklearn.model_selection import KFold

## Divisez les données en K plis en utilisant la validation croisée KFold
k_fold = KFold(n_splits=5)
for train_indices, test_indices in k_fold.split(X_digits):
    print(f'Train: {train_indices} | test: {test_indices}')

La fonction d'aide cross_val_score peut être utilisée pour calculer directement le score de validation croisée. Elle divise les données en ensembles d'entraînement et de test pour chaque itération de la validation croisée, entraîne l'estimateur sur l'ensemble d'entraînement et calcule le score sur la base de l'ensemble de test.

from sklearn.model_selection import cross_val_score

## Calculez le score de validation croisée pour le classifieur SVM
scores = cross_val_score(svc, X_digits, y_digits, cv=k_fold, n_jobs=-1)
print(scores)

Recherche sur grille

La recherche sur grille est une technique qui peut être utilisée pour trouver la meilleure combinaison de valeurs de paramètres pour un estimateur. Elle consiste à spécifier une grille de valeurs de paramètres, à ajuster l'estimateur sur les données d'entraînement pour chaque combinaison de paramètres, et à sélectionner les paramètres qui donnent le score de validation croisée le plus élevé.

from sklearn.model_selection import GridSearchCV

## Définissez une grille de valeurs de paramètres
Cs = np.logspace(-6, -1, 10)

## Créez un objet GridSearchCV avec le classifieur SVM et la grille de paramètres
clf = GridSearchCV(estimator=svc, param_grid=dict(C=Cs), n_jobs=-1)

## Ajustez l'objet GridSearchCV sur les données d'entraînement
clf.fit(X_digits[:1000], y_digits[:1000])

print(clf.best_score_)
print(clf.best_estimator_.C)

Estimateurs validés croisés

Certains estimateurs dans scikit-learn ont des capacités de validation croisée intégrées. Ces estimateurs validés croisés sélectionnent automatiquement leurs paramètres par validation croisée, rendant le processus de sélection de modèle plus efficace.

from sklearn import linear_model, datasets

## Créez un objet LassoCV
lasso = linear_model.LassoCV()

## Chargez l'ensemble de données du diabète
X_diabetes, y_diabetes = datasets.load_diabetes(return_X_y=True)

## Ajustez l'objet LassoCV sur l'ensemble de données
lasso.fit(X_diabetes, y_diabetes)

print(lasso.alpha_)

Sommaire

Dans ce tutoriel, nous avons appris le processus de sélection de modèle dans scikit-learn. Nous avons exploré les méthodes de notation, la validation croisée, la recherche sur grille et les estimateurs validés croisés. En suivant ces étapes, vous pouvez choisir le meilleur estimateur pour un ensemble de données donné et ajuster ses paramètres pour obtenir une performance optimale.