Exemple de classification traité avec R en cours d'apprentissage

Mélange de lois de probabilité

Dans cet exemple, nous allons générer un jeu de données comme suit :

  1. 10 moyennes $m_k$ issues d'une loi normale bi-variée $\mathcal{N}((1,0),I)$ et étiquetées en BLEU.
  2. 10 moyenne supplémentaires issues d'une loi normale bi-variée $\mathcal{N}((0,1),I)$ et étiquetées en ORANGE.
  3. Pour chaque classe, on génère 100 observations comme suit:
    1. $m_k$ est tirée aléatoirement avec probabilité 1/10;
    2. l'observation est générée suivant une loi $\mathcal{N}(m_k,I/5)$, conduisant ainsi à un mélange de clusters gaussiens pour chaque classe.

Notre tâche consiste à créer une règle de classification qui détermine si un point est ORANGE ou BLEU à partir de ses coordonnées. Bien entendu, la règle de classification ne doit pas être basée sur la connaissance de la manière dont les données ont été générées.

Générer et préparer les données

Nous avons l'échantillon d'apprentissage qui a été utilisé en cours. De plus, les moyennes de tous les groupes BLUE et ORANGE sont connues. Les données de test sont inconnues et nous les générerons nous-mêmes.

  1. Créer une matrice blue_means à l'aide de la fonction array de numpy où chaque linge correspond à une moyenne bleu.

  2. Créer une matrice orange_means à l'aide de la fonction array de numpy où chaque linge correspond à une moyenne orange.

  3. À l'aide de la fonction d'empilement vertical vstack de numpy, empiler les deux matrice dans une seule matrice all_means.

On peut maintenant générer un jeu de données test

  1. À l'aide du modèle gaussian_mixture_model, identifier la fonction appropriée pour générer un jeu de données test (X_test et y_test) de taille 10000.

  2. Transformer y_test en variable binaire.

Règle de Bayes

Puisque nous connaissons la distribution à partir de laquelle nos données ont été échantillonnées, nous pouvons construire la règle Bayes optimale et calculer le taux d'erreur optimal appelé erreur de Bayes.

  1. À l'aide de la fonction predict_proba de la classe gaussian_mixture_model, écrire une fonction optimal_bayes_predict de classification qui prend des échantillons en entrée et produit un vecteur de classes prédites. Calculer l'erreur de Bayes comme suit

Fonctions pour tracer des figures

Nous allons tracer de nombreuses figures similaires. Un petit cahier de charges :

  1. Décortiquer les fonctions suivantes
  1. On a déclarer un ensemble de fonction plus ou moins complexes. Ce choix d'opter pour une programmation fonctionnelle est-il justifié ?

Classification par la règle des plus proches voisins

Nous avons besoin d'appeler un sous module de la librairie sklearn

Modèle à 15 plus proches voisins

  1. Ajuster et tracer les performances de la règle de classification à 1-plus proche voisins
  1. Écrire une boucle for qui permet de remplir les listes train_errors et test_errors pour chaque valeur dans la liste ks. Penser à utiliser les fonctions append associée à un objet list et la fonction score associée à un object KNeighborsClassifier.

  2. Identifier k_optim la valeur optimale qui minimise l'erreur de classification test ou qui maximise le taux de bon classement test.

On peut maintenant tracer les deux types d'erreurs sur la même figure comme suit

Validation croisée à 5 folds