logo

Anàlisi de components principals amb Python

Anàlisi de components principals és bàsicament un procediment estadístic per convertir un conjunt d'observacions de variables possiblement correlacionades en un conjunt de valors de variables no correlacionades linealment.

Cadascun dels components principals s'escull de tal manera que descriuria la majoria d'ells encara la variància disponible i tots aquests components principals són ortogonals entre si. En tots els components principals, el primer component principal té una variància màxima.

matriu d'ordenació java

Usos del PCA:



  1. S'utilitza per trobar interrelacions entre variables de les dades.
  2. S'utilitza per interpretar i visualitzar dades.
  3. El nombre de variables està disminuint, la qual cosa facilita l'anàlisi posterior.
  4. Sovint s'utilitza per visualitzar la distància genètica i la relació entre poblacions.


Aquestes es realitzen bàsicament sobre una matriu simètrica quadrada. Pot ser una matriu de sumes pures de quadrats i productes creuats Matriu de covariància o matriu de correlació. S'utilitza una matriu de correlació si la variància individual difereix molt.

Objectius del PCA:

  1. Bàsicament és un procediment no dependent en el qual redueix l'espai d'atributs d'un gran nombre de variables a un nombre menor de factors.
  2. La PCA és bàsicament un procés de reducció de la dimensió, però no hi ha cap garantia que la dimensió sigui interpretable.
  3. La tasca principal d'aquest PCA és seleccionar un subconjunt de variables d'un conjunt més gran, en funció de les variables originals que tinguin la correlació més alta amb l'import principal.
  4. Identificació de patrons: la PCA pot ajudar a identificar patrons o relacions entre variables que poden no ser evidents a les dades originals. En reduir la dimensionalitat de les dades, PCA pot revelar estructures subjacents que poden ser útils per entendre i interpretar les dades.
  5. Extracció de característiques: PCA es pot utilitzar per extreure característiques d'un conjunt de variables que són més informatives o rellevants que les variables originals. Aquestes característiques es poden utilitzar després en tasques de modelització o altres anàlisis.
  6. Compressió de dades: el PCA es pot utilitzar per comprimir grans conjunts de dades reduint el nombre de variables necessàries per representar les dades, tot conservant la màxima informació possible.
  7. Reducció del soroll: el PCA es pot utilitzar per reduir el soroll en un conjunt de dades identificant i eliminant els components principals que corresponen a les parts sorolloses de les dades.
  8. Visualització: PCA es pot utilitzar per visualitzar dades d'alta dimensió en un espai de dimensions inferiors, facilitant la seva interpretació i comprensió. En projectar les dades sobre els components principals, es poden visualitzar més fàcilment els patrons i les relacions entre variables.

Mètode de l'eix principal: Bàsicament, PCA cerca una combinació lineal de variables perquè puguem extreure la màxima variància de les variables. Un cop finalitzat aquest procés, l'elimina i cerca una altra combinació lineal que doni una explicació sobre la proporció màxima de variància restant que condueix bàsicament a factors ortogonals. En aquest mètode, analitzem la variància total.

Vector propi: És un vector diferent de zero que es manté paral·lel després de la multiplicació de matrius. Suposem que x és un vector propi de dimensió r de la matriu M amb dimensió r*r si Mx i x són paral·lels. Aleshores hem de resoldre Mx=Ax on tant x com A són desconeguts per obtenir vectors propis i valors propis.
Sota els vectors propis, podem dir que els components principals mostren una variància comuna i única de la variable. Bàsicament, és un enfocament centrat en la variància que busca reproduir la variància total i la correlació amb tots els components. Els components principals són bàsicament les combinacions lineals de les variables originals ponderades per la seva contribució per explicar la variància en una dimensió ortogonal particular.

Valors propis: Es coneix bàsicament com a arrels característiques. Bàsicament mesura la variància de totes les variables que té en compte aquest factor. La relació de valors propis és la relació d'importància explicativa dels factors respecte a les variables. Si el factor és baix, contribueix menys a l'explicació de les variables. En paraules senzilles, mesura la quantitat de variància en la base de dades total donada comptada pel factor. Podem calcular el valor propi del factor com la suma de la seva càrrega de factor al quadrat per a totes les variables.

Ara, entenem l'anàlisi de components principals amb Python.

Per obtenir el conjunt de dades utilitzat a la implementació, feu clic a aquí .

Pas 1: Importació de les biblioteques

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

Pas 2: Importació del conjunt de dades

Importeu el conjunt de dades i distribuïu-lo als components X i y per a l'anàlisi de dades.

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>


Pas 3: Divisió del conjunt de dades en el conjunt d'entrenament i el conjunt de proves

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)>

Pas 4: Escala de funcions

Fer la part de preprocessament sobre el conjunt de proves i formació, com ara l'ajustament de l'escala estàndard.

missió impossible totes les pel·lícules
Python
# performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>

Pas 5: Aplicació de la funció PCA

Aplicació de la funció PCA al conjunt d'entrenament i proves per a l'anàlisi.

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_>

Pas 6: Adaptació de la regressió logística al conjunt d'entrenament

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)>

Sortida:

Pas 7: Predicció del resultat del conjunt de proves

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


Pas 8: Elaboració de la matriu de confusió

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)>


Pas 9: Predicció del resultat del conjunt d'entrenament

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()>

Sortida:

Pas 10: Visualització dels resultats del conjunt de proves

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()>

Podem visualitzar les dades al nou espai de components principals:

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>

Aquest és un exemple senzill de com realitzar PCA amb Python. La sortida d'aquest codi serà un diagrama de dispersió dels dos primers components principals i la seva relació de variància explicada. En seleccionar el nombre adequat de components principals, podem reduir la dimensionalitat del conjunt de dades i millorar la nostra comprensió de les dades.