01 75 60 34 00 | conseil@ensae.fr | Prenez RDV |

Analyse exploratoire des données avec Python

Prochaine session 17, 18 et 19 nov. 2027
S'inscrire
Analyse exploratoire des données avec Python

Objectifs pédagogiques

  • Comprendre les enjeux de la réduction de dimension sur les individus (classification non supervisée, clustering) et sur les variables (analyse factorielle, dimension reduction)
  • Comprendre et savoir mettre en œuvre les principales méthodes d’analyse factorielle, sur les variables quantitatives (ACP) et qualitatives (ACM).
  • Comprendre et savoir mettre en œuvre les principales méthodes de clustering : CAH & K-means.

Programme détaillé

Les méthodes factorielles (ACP, AFC, ACM) permettent au travers de techniques de visualisation, de résumer, structurer et synthétiser les variables de tableaux de données volumineux. Les méthodes de classification non supervisée, ou clustering, permettent, en séparant les individus d’une population en groupes homogènes, de créer une typologie.

Analyse en composantes principales ACP 6h

  • Inerties
  • Recherche des axes principaux
  • Composantes principales
  • Analyse du nuage des individus
  • Analyse du nuage des variables
  • Interprétation des résultats.

Analyse factorielle des correspondances AFC 2h

  • Nuages des profils-lignes et des profils-colonnes, distance du khi-deux
  • Analyse des nuages des profils
  • Liens entre les analyses lignes et colonnes
  • Interprétation des résultats.

Analyse des correspondances multiples ACM 3h

  • Analyse des correspondances sur le tableau disjonctif complet
  • Propriétés de l’ACM
  • Analyse du tableau de Burt

Classification non supervisée 7h

  • Classification ascendante hiérarchique (CAH) : principe, stratégies d’agrégation, aides à l’interprétation
  • Méthodes de partitionnement : K-means, PAM
  • Classification mixte

Public visé

Data analysts, chargés d’études statistiques, data scientists

Prérequis

Approche pédagogique

Moyens pédagogiques
Exposé théorique de concepts Applications pratiques sur ordinateur Échanges sur les pratiques et expériences des participants Temps de questions / réponses Exercices, quiz, etc.
Méthodes pédagogiques
Méthode expositive Méthode active
Satisfaction globale
★★★★★ ★★★★★
4,8/5

Calculés à partir de 8 avis recueillis depuis 13/12/2023, lors de 2 sessions de cette formation.

Contenu
★★★★★ ★★★★★ 4,6/5
Durée et rythme
★★★★★ ★★★★★ 4,3/5
Formateur
★★★★★ ★★★★★ 5,0/5
Supports et ressources
★★★★★ ★★★★★ 4,9/5

ACP, ACM et clustering en Python : scikit-learn, prince et SciPy

En Python, les méthodes de l’analyse exploratoire sont réparties entre des bibliothèques venues de traditions différentes. scikit-learn, pensée pour l’apprentissage automatique, traite l’ACP comme une étape de réduction de dimension avant un modèle. prince reprend les méthodes factorielles de l’analyse des données (ACP, AFC, ACM). SciPy fournit la classification hiérarchique. Les combiner suppose de connaître leurs différences.

Le piège de l’ACP non normée

La classe PCA de scikit-learn centre les variables mais ne les réduit pas. Appliquée telle quelle à des variables d’unités différentes (euros, années, pourcentages), elle est dominée par celles de plus grande variance : un salaire en euros écrase un âge en années. Pour obtenir l’ACP normée, celle des manuels de statistique, il faut standardiser d’abord :

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

acp = make_pipeline(StandardScaler(), PCA(n_components=3)).fit(X)
acp[-1].explained_variance_ratio_   # part d'inertie de chaque axe

La classe PCA de prince, elle, réduit les variables par défaut. Deux bibliothèques, deux comportements : vérifier l’option avant de comparer des résultats.

AFC et ACM : prince

scikit-learn ne propose ni AFC ni ACM. prince comble ce manque avec une interface proche de celle de scikit-learn (fit, puis lecture des coordonnées) :

import prince

afc = prince.CA(n_components=2).fit(tableau)   # tableau de contingence
afc.row_coordinates(tableau)

acm = prince.MCA(n_components=2).fit(df_quali)
acm.column_coordinates(df_quali)               # coordonnées des modalités

CAH, K-means et classification mixte

La classification ascendante hiérarchique relève de scipy.cluster.hierarchy : linkage() construit l’arbre selon la stratégie d’agrégation choisie, dendrogram() le trace, fcluster() le coupe. Les K-means sont dans scikit-learn (KMeans), qui accepte des centres initiaux : on peut ainsi consolider par les K-means une partition issue de la CAH, ce qui constitue la classification mixte.

from scipy.cluster.hierarchy import linkage, fcluster

Z = linkage(coordonnees, method="ward")
classes = fcluster(Z, t=4, criterion="maxclust")   # coupe en 4 classes

La méthode PAM (Partitioning Around Medoids) ne figure pas dans scikit-learn : elle est proposée par des bibliothèques complémentaires, comme scikit-learn-extra ou kmedoids.

Ces méthodes décrivent des données sans variable à prédire. Pour passer à l’apprentissage supervisé, où il s’agit de prédire une variable connue sur des données d’apprentissage, voir Les fondamentaux du machine learning avec Python.