0% ont trouvé ce document utile (0 vote)
125 vues4 pages

ACP avec Python : Guide Complet

Transféré par

To MH
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
125 vues4 pages

ACP avec Python : Guide Complet

Transféré par

To MH
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

L'Analyse en Composantes Principales (ACP) est une technique statistique utilisée pour

réduire la dimensionnalité des données tout en conservant le plus d'informations possible. En


Python, nous pouvons réaliser une ACP avec la bibliothèque scikit-learn. Voici un guide
pour effectuer une ACP avec un exemple détaillé.

1. Installation des bibliothèques nécessaires

Si ce n'est pas déjà fait, installez les bibliothèques nécessaires (exécutez ces commandes dans
le terminal) :

bash
Copier le code
pip install numpy pandas scikit-learn matplotlib

2. Importation des bibliothèques


python
Copier le code
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

3. Chargement et Préparation des Données

Pour cet exemple, nous utiliserons un ensemble de données fictif ou un jeu de données
comme iris de scikit-learn. L'ACP nécessite de normaliser les données avant de les
appliquer.

python
Copier le code
from sklearn.datasets import load_iris

# Chargement des données iris


data = load_iris()
X = data.data # On ne prend que les caractéristiques
y = data.target # Les étiquettes de classe (facultatif pour ACP)

# Création d'un DataFrame pour faciliter l'interprétation


df = pd.DataFrame(X, columns=data.feature_names)
print(df.head())

4. Normalisation des Données

L'ACP est sensible aux échelles de chaque caractéristique, donc la normalisation est une étape
importante.

python
Copier le code
scaler = StandardScaler()
X_normalized = scaler.fit_transform(X)
5. Application de l'ACP

Nous allons appliquer l'ACP pour réduire les données à deux dimensions (2 composantes
principales).

python
Copier le code
# Instanciation de l'ACP
pca = PCA(n_components=2)

# Application de l'ACP sur les données normalisées


X_pca = pca.fit_transform(X_normalized)

# Création d'un DataFrame pour stocker les résultats de l'ACP


df_pca = pd.DataFrame(X_pca, columns=['Composante 1', 'Composante 2'])
df_pca['Classe'] = y
print(df_pca.head())

6. Interprétation des Composantes Principales

Pour voir quelle proportion de la variance totale est expliquée par chaque composante
principale :

python
Copier le code
print("Variance expliquée par chaque composante :",
pca.explained_variance_ratio_)
print("Variance totale expliquée par les deux premières composantes :",
sum(pca.explained_variance_ratio_))

7. Visualisation des Résultats

Nous pouvons maintenant tracer les données réduites à deux dimensions pour visualiser la
séparation des classes dans ce nouvel espace.

python
Copier le code
# Tracé du graphique
plt.figure(figsize=(8, 6))
plt.scatter(df_pca['Composante 1'], df_pca['Composante 2'], c=y,
cmap='viridis', edgecolor='k', s=50)
plt.xlabel('Composante 1')
plt.ylabel('Composante 2')
plt.title('ACP - Projection sur les deux premières composantes')
plt.colorbar(label='Classe')
plt.show()

8. Afficher les Composantes de l'ACP

Vous pouvez aussi observer les contributions des caractéristiques initiales à chaque
composante principale, ce qui aide à interpréter les résultats :

python
Copier le code
components = pd.DataFrame(pca.components_, columns=data.feature_names,
index=['Composante 1', 'Composante 2'])
print(components)

Résumé du Code Complet


python
Copier le code
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# Chargement des données


data = load_iris()
X = data.data
y = data.target
df = pd.DataFrame(X, columns=data.feature_names)

# Normalisation des données


scaler = StandardScaler()
X_normalized = scaler.fit_transform(X)

# Application de l'ACP
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_normalized)

# Création d'un DataFrame pour l'ACP


df_pca = pd.DataFrame(X_pca, columns=['Composante 1', 'Composante 2'])
df_pca['Classe'] = y

# Affichage de la variance expliquée


print("Variance expliquée par chaque composante :",
pca.explained_variance_ratio_)
print("Variance totale expliquée par les deux premières composantes :",
sum(pca.explained_variance_ratio_))

# Visualisation des résultats


plt.figure(figsize=(8, 6))
plt.scatter(df_pca['Composante 1'], df_pca['Composante 2'], c=y,
cmap='viridis', edgecolor='k', s=50)
plt.xlabel('Composante 1')
plt.ylabel('Composante 2')
plt.title('ACP - Projection sur les deux premières composantes')
plt.colorbar(label='Classe')
plt.show()

# Affichage des composantes


components = pd.DataFrame(pca.components_, columns=data.feature_names,
index=['Composante 1', 'Composante 2'])
print(components)

Interprétation des Résultats


• Variance expliquée : La somme des valeurs de pca.explained_variance_ratio_
montre la proportion de la variance totale expliquée par les deux premières
composantes principales.
• Visualisation : Le graphique montre les clusters formés dans le nouvel espace de
dimensions réduites. Si les classes sont bien séparées, cela signifie que les premières
composantes principales représentent bien les différences entre les classes.
• Composantes principales : Le tableau des composantes principales montre comment
chaque caractéristique initiale contribue à chaque nouvelle composante.

Ce processus aide à simplifier les données tout en conservant les informations essentielles,
utile pour la visualisation et l'analyse exploratoire.

4o

Vous aimerez peut-être aussi