logo

Analyse en composantes principales avec Python

Analyse des composants principaux est essentiellement une procédure statistique pour convertir un ensemble d'observations de variables éventuellement corrélées en un ensemble de valeurs de variables linéairement non corrélées.

Chacune des composantes principales est choisie de manière à décrire la plupart des variances encore disponibles et toutes ces composantes principales sont orthogonales les unes aux autres. Dans toutes les composantes principales, la première composante principale a une variance maximale.

Utilisations du PCA :



  1. Il est utilisé pour trouver des interrelations entre les variables dans les données.
  2. Il est utilisé pour interpréter et visualiser les données.
  3. Le nombre de variables diminue, ce qui simplifie l’analyse ultérieure.
  4. Il est souvent utilisé pour visualiser la distance génétique et les liens entre les populations.


Celles-ci sont essentiellement réalisées sur une matrice carrée symétrique. Il peut s'agir d'une matrice de sommes de carrés pures et de produits croisés, d'une matrice de covariance ou d'une matrice de corrélation. Une matrice de corrélation est utilisée si la variance individuelle diffère beaucoup.

Objectifs de l'APC :

Java vide
  1. Il s’agit essentiellement d’une procédure non dépendante dans laquelle elle réduit l’espace des attributs d’un grand nombre de variables à un plus petit nombre de facteurs.
  2. L'ACP est essentiellement un processus de réduction de dimension, mais il n'y a aucune garantie que la dimension soit interprétable.
  3. La tâche principale de cette ACP est de sélectionner un sous-ensemble de variables dans un ensemble plus large, en fonction des variables d'origine présentant la corrélation la plus élevée avec le montant principal.
  4. Identifier des modèles : l'ACP peut aider à identifier des modèles ou des relations entre des variables qui peuvent ne pas être apparentes dans les données d'origine. En réduisant la dimensionnalité des données, l'ACP peut révéler des structures sous-jacentes qui peuvent être utiles pour comprendre et interpréter les données.
  5. Extraction de fonctionnalités : la PCA peut être utilisée pour extraire des fonctionnalités d'un ensemble de variables qui sont plus informatives ou pertinentes que les variables d'origine. Ces fonctionnalités peuvent ensuite être utilisées dans la modélisation ou d’autres tâches d’analyse.
  6. Compression des données : la PCA peut être utilisée pour compresser de grands ensembles de données en réduisant le nombre de variables nécessaires pour représenter les données, tout en conservant autant d'informations que possible.
  7. Réduction du bruit : la PCA peut être utilisée pour réduire le bruit dans un ensemble de données en identifiant et en supprimant les principaux composants qui correspondent aux parties bruyantes des données.
  8. Visualisation : la PCA peut être utilisée pour visualiser des données de grande dimension dans un espace de dimension inférieure, ce qui les rend plus faciles à interpréter et à comprendre. En projetant les données sur les composants principaux, les modèles et les relations entre les variables peuvent être plus facilement visualisés.

Méthode de l'axe principal : PCA recherche essentiellement une combinaison linéaire de variables afin que nous puissions extraire la variance maximale des variables. Une fois ce processus terminé, il le supprime et recherche une autre combinaison linéaire qui donne une explication sur la proportion maximale de variance restante, ce qui conduit essentiellement à des facteurs orthogonaux. Dans cette méthode, nous analysons la variance totale.

Vecteur propre : C'est un vecteur non nul qui reste parallèle après multiplication matricielle. Supposons que x soit un vecteur propre de dimension r de la matrice M de dimension r*r si Mx et x sont parallèles. Ensuite, nous devons résoudre Mx=Ax où x et A sont inconnus pour obtenir le vecteur propre et les valeurs propres.
Sous les vecteurs propres, nous pouvons dire que les composantes principales montrent à la fois une variance commune et unique de la variable. Fondamentalement, il s'agit d'une approche axée sur la variance cherchant à reproduire la variance totale et la corrélation avec toutes les composantes. Les composantes principales sont essentiellement les combinaisons linéaires des variables originales pondérées par leur contribution pour expliquer la variance dans une dimension orthogonale particulière.

Propres valeurs : On l’appelle essentiellement racines caractéristiques. Il mesure essentiellement la variance de toutes les variables expliquée par ce facteur. Le rapport des valeurs propres est le rapport de l'importance explicative des facteurs par rapport aux variables. Si le facteur est faible, il contribue moins à l’explication des variables. En termes simples, il mesure le degré de variance dans la base de données totale donnée expliquée par le facteur. Nous pouvons calculer la valeur propre du facteur comme la somme de sa saturation factorielle au carré pour toutes les variables.

Maintenant, comprenons l'analyse en composantes principales avec Python.

Pour obtenir l'ensemble de données utilisé dans l'implémentation, cliquez sur ici .

Étape 1: Importer les bibliothèques

Python
# importing required libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd>

Étape 2: Importer l'ensemble de données

Importez l'ensemble de données et distribuez-le en composants X et y pour l'analyse des données.

Python
# importing or loading the dataset dataset = pd.read_csv('wine.csv') # distributing the dataset into two components X and Y X = dataset.iloc[:, 0:13].values y = dataset.iloc[:, 13].values>


Étape 3: Diviser l'ensemble de données en ensemble d'entraînement et ensemble de test

commande supérieure Unix
Python
# Splitting the X and Y into the # Training set and Testing set from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)>

Étape 4: Mise à l'échelle des fonctionnalités

Effectuer la partie pré-traitement sur l'ensemble de formation et de tests, comme l'ajustement de l'échelle standard.

Python
# performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>

Étape 5 : Application de la fonction PCA

Application de la fonction PCA à l'ensemble de formation et de test pour analyse.

Python
# Applying PCA function on training # and testing set of X component from sklearn.decomposition import PCA pca = PCA(n_components = 2) X_train = pca.fit_transform(X_train) X_test = pca.transform(X_test) explained_variance = pca.explained_variance_ratio_>

Étape 6 : Ajustement de la régression logistique à l'ensemble de formation

Python
# Fitting Logistic Regression To the training set from sklearn.linear_model import LogisticRegression classifier = LogisticRegression(random_state = 0) classifier.fit(X_train, y_train)>

Sortir:

comment convertir une chaîne en un entier

Étape 7 : Prédire le résultat de l'ensemble de test

Python
# Predicting the test set result using  # predict function under LogisticRegression  y_pred = classifier.predict(X_test)>


Étape 8 : Faire la matrice de confusion

boucle infinie
Python
# making confusion matrix between # test set of Y and predicted value. from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)>


Étape 9 : Prédire le résultat de l'ensemble d'entraînement

Python
# Predicting the training set # result through scatter plot  from matplotlib.colors import ListedColormap X_set, y_set = X_train, y_train X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('yellow', 'white', 'aquamarine'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], color = ListedColormap(('red', 'green', 'blue'))(i), label = j) plt.title('Logistic Regression (Training set)') plt.xlabel('PC1') # for Xlabel plt.ylabel('PC2') # for Ylabel plt.legend() # to show legend # show scatter plot plt.show()>

Sortir:

Étape 10 : Visualisation des résultats de l'ensemble de tests

Python
# Visualising the Test set results through scatter plot from matplotlib.colors import ListedColormap X_set, y_set = X_test, y_test X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('yellow', 'white', 'aquamarine'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], color = ListedColormap(('red', 'green', 'blue'))(i), label = j) # title for scatter plot plt.title('Logistic Regression (Test set)') plt.xlabel('PC1') # for Xlabel plt.ylabel('PC2') # for Ylabel plt.legend() # show scatter plot plt.show()>

Nous pouvons visualiser les données dans le nouvel espace des composants principaux :

Python
# plot the first two principal components with labels y = df.iloc[:, -1].values colors = ['r', 'g'] labels = ['Class 1', 'Class 2'] for i, color, label in zip(np.unique(y), colors, labels): plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], color=color, label=label) plt.xlabel('Principal Component 1') plt.ylabel('Principal Component 2') plt.legend() plt.show() 7>

Ceci est un exemple simple de la façon d'effectuer une PCA à l'aide de Python. Le résultat de ce code sera un nuage de points des deux premières composantes principales et de leur rapport de variance expliqué. En sélectionnant le nombre approprié de composants principaux, nous pouvons réduire la dimensionnalité de l'ensemble de données et améliorer notre compréhension des données.