You are currently viewing MACHINE LEARNING WITH SCIKIT-LEARN (Partie II : analyse en composante principale – ACP)

MACHINE LEARNING WITH SCIKIT-LEARN (Partie II : analyse en composante principale – ACP)

Dans cet article nous allons réaliser quelques opérations de base en Python et Scikit-Learn. L’objectif sera simplement de réaliser une ACP d’un jeu de données et de le représenter selon ses premières composantes principales.

Nous apprendrons pour cela à manipuler les classes les classes PCA du module decomposition de Scikit-Learn, et nous utiliserons le jeu de données digits, qui contient des images de chiffres manuscrits. On peut le charger à partir de scikit-learn et dont on trouve un descriptif sur le site de l’UCI.

Cet article sera également l’occasion de manipuler les fonctions de MatPlotLib permettant de réaliser des “scatterplots” incluant une code couleur reflétant une catégorie.

1. Charger le jeu de données en utilisant la fonction load_digits du module datasets de Scikit-Learn. De combien d’observations et de catégories est-il constitué ?

In [1]:

# generic imports #
#-----------------#
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

In [2]:

# get data 
#----------#
<from sklearn.datasets import load_digits
digits = load_digits()
# extract X and y
X = digits.data
y = digits.target
# show info
class_ids = digits.target_names
n = X.shape[0]
p = X.shape[1]
K = len(class_ids)
print('load dataset of size %d x %d involving %d classes' % (n,p,K))
load dataset of size 1797 x 64 involving 10 classes

2. Réaliser une ACP du jeu de données en utilisant la classe PCA du module decomposition de Scikit-Learn. On considèrera 2 composantes principales.

  • on rappelle que pour construire un modèle (un ‘estimateur’) dans Scikit-Learn il suffit :
    1. de charger la classe correspondante (ici from ‘sklearn.decomposition import PCA’)
    2. d’instancier le modèle
    3. d’appeler sa méthode fit à partir des données d’apprentissage.
  • la classe PCA est un “transformeur” et pas un “predicteur”. Ainsi, la méthode fit a pour effet d’apprendre les transformations linéaires définissant les composantes principales. Pour obtenir les coordonnées des observations dans l’espace des composantes, il faut ensuite appeler la méthode transform.
  • notons néanmoins que l’on peut également faire tout d’un coup en appelant directement la méthode fit_transform.

In [3]:

# fit PCA (with 2 PCs)
from sklearn.decomposition import PCA
pca = PCA(n_components = 2)
pca.fit(X)
Xpca = pca.transform(X)

3. Représenter le jeu de données dans l’espace ACP en utilisant un code couleur reflétant leur catégorie (i.e., un chiffre entre 0 et 9).

  • On pourra par exemple utiliser la fonction scatter de MatPlotLib.

In [4]:

plt.scatter(Xpca[:,0],Xpca[:,1], c = y)
plt.colorbar()
plt.show()

Armel

ML Engineer

Laisser un commentaire