logo

Hovedkomponentanalyse med Python

Hovedkomponentanalyse er i utgangspunktet en statistisk prosedyre for å konvertere et sett med observasjoner av muligens korrelerte variabler til et sett med verdier av lineært ukorrelerte variabler.

Hver av hovedkomponentene er valgt på en slik måte at den vil beskrive de fleste av dem fortsatt tilgjengelig varians, og alle disse hovedkomponentene er ortogonale i forhold til hverandre. I alle hovedkomponenter har første hovedkomponent en maksimal varians.



Bruk av PCA:

  1. Den brukes til å finne sammenhenger mellom variabler i dataene.
  2. Den brukes til å tolke og visualisere data.
  3. Antall variabler synker, noe som gjør videre analyse enklere.
  4. Det brukes ofte til å visualisere genetisk avstand og slektskap mellom populasjoner.


Disse utføres i hovedsak på en kvadratisk symmetrisk matrise. Det kan være en ren sum av kvadrater og kryssproduktmatrise Kovariansmatrise eller Korrelasjonsmatrise. En korrelasjonsmatrise brukes hvis den individuelle variansen er mye forskjellig.

Mål for PCA:



  1. Det er i utgangspunktet en ikke-avhengig prosedyre der den reduserer attributtplass fra et stort antall variabler til et mindre antall faktorer.
  2. PCA er i utgangspunktet en dimensjonsreduksjonsprosess, men det er ingen garanti for at dimensjonen er tolkbar.
  3. Hovedoppgaven i denne PCAen er å velge et delsett av variabler fra et større sett, basert på hvilke originalvariabler som har høyest korrelasjon med hovedstolen.
  4. Identifisere mønstre: PCA kan bidra til å identifisere mønstre eller forhold mellom variabler som kanskje ikke er tydelige i de originale dataene. Ved å redusere dimensjonaliteten til dataene kan PCA avdekke underliggende strukturer som kan være nyttige for å forstå og tolke dataene.
  5. Funksjonsekstraksjon: PCA kan brukes til å trekke ut funksjoner fra et sett med variabler som er mer informative eller relevante enn de opprinnelige variablene. Disse funksjonene kan deretter brukes i modellering eller andre analyseoppgaver.
  6. Datakomprimering: PCA kan brukes til å komprimere store datasett ved å redusere antall variabler som trengs for å representere dataene, samtidig som man beholder så mye informasjon som mulig.
  7. Støyreduksjon: PCA kan brukes til å redusere støyen i et datasett ved å identifisere og fjerne hovedkomponentene som tilsvarer de støyende delene av dataene.
  8. Visualisering: PCA kan brukes til å visualisere høydimensjonale data i et lavere dimensjonalt rom, noe som gjør det lettere å tolke og forstå. Ved å projisere dataene på hovedkomponentene, kan mønstre og relasjoner mellom variabler lettere visualiseres.

Hovedaksemetode: PCA søker i utgangspunktet en lineær kombinasjon av variabler slik at vi kan trekke ut maksimal varians fra variablene. Når denne prosessen er fullført, fjerner den den og søker etter en annen lineær kombinasjon som gir en forklaring på den maksimale andelen gjenværende varians som i utgangspunktet fører til ortogonale faktorer. I denne metoden analyserer vi total varians.

Egenvektor: Det er en ikke-null vektor som forblir parallell etter matrisemultiplikasjon. La oss anta at x er en egenvektor til dimensjon r til matrise M med dimensjon r*r hvis Mx og x er parallelle. Da må vi løse Mx=Ax der både x og A er ukjente for å få egenvektor og egenverdier.
Under Eigen-vektorer kan vi si at Hovedkomponenter viser både felles og unik varians av variabelen. I utgangspunktet er det variansfokusert tilnærming som søker å reprodusere total varians og korrelasjon med alle komponenter. Hovedkomponentene er i utgangspunktet de lineære kombinasjonene av de opprinnelige variablene vektet av deres bidrag til å forklare variansen i en bestemt ortogonal dimensjon.

Egne verdier: Det er i utgangspunktet kjent som karakteristiske røtter. Den måler i utgangspunktet variansen i alle variabler som står for den faktoren. Forholdet mellom egenverdier er forholdet mellom faktorenes forklaringsmessige betydning i forhold til variablene. Hvis faktoren er lav, bidrar den mindre til forklaringen av variabler. Med enkle ord måler den mengden av varians i den totale gitte databasen som faktoren utgjør. Vi kan beregne faktorens egenverdi som summen av dens kvadratiske faktorbelastning for alle variablene.



La oss nå forstå hovedkomponentanalyse med Python.

For å få datasettet brukt i implementeringen, klikk her .

Trinn 1: Importerer bibliotekene

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

Steg 2: Importerer datasettet

Importer datasettet og distribuer datasettet til X- og y-komponenter for dataanalyse.

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>


Trinn 3: Deler opp datasettet i treningssettet og testsettet

selen opplæring
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)>

Trinn 4: Funksjonsskalering

Gjør forbehandlingsdelen på trenings- og testsett, for eksempel montering av standardskalaen.

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

Trinn 5: Bruker PCA-funksjon

Bruk av PCA-funksjonen i trenings- og testsettet for 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_>

Trinn 6: Tilpasning av logistisk regresjon Til treningssettet

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

Produksjon:

Trinn 7: Forutsi testsettets resultat

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


Trinn 8: Å lage forvirringsmatrisen

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


Trinn 9: Forutsi resultatet av treningssettet

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

Produksjon:

Trinn 10: Visualisere testsettets resultater

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

Vi kan visualisere dataene i det nye hovedkomponentområdet:

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>

Dette er et enkelt eksempel på hvordan du utfører PCA ved hjelp av Python. Utdata fra denne koden vil være et spredningsplott av de to første hovedkomponentene og deres forklarte variansforhold. Ved å velge riktig antall hovedkomponenter kan vi redusere dimensjonaliteten til datasettet og forbedre forståelsen av dataene.