Hovedkomponentanalyse er dybest set en statistisk procedure til at konvertere et sæt observationer af muligvis korrelerede variabler til et sæt værdier af lineært ukorrelerede variable.
Hver af hovedkomponenterne er valgt på en sådan måde, at den vil beskrive de fleste af dem, der stadig er tilgængelige varians, og alle disse hovedkomponenter er ortogonale i forhold til hinanden. I alle hovedkomponenter har den første hovedkomponent en maksimal varians.
Anvendelser af PCA:
- Det bruges til at finde indbyrdes sammenhænge mellem variabler i dataene.
- Det bruges til at fortolke og visualisere data.
- Antallet af variabler er faldende, hvilket gør yderligere analyse lettere.
- Det bruges ofte til at visualisere genetisk afstand og slægtskab mellem populationer.
Disse udføres grundlæggende på en kvadratisk symmetrisk matrix. Det kan være en ren sum af kvadrater og krydsprodukter matrix Kovarians matrix eller Korrelations matrix. En korrelationsmatrix bruges, hvis den individuelle varians er meget forskellig.
Mål med PCA:
- Det er dybest set en ikke-afhængig procedure, hvor den reducerer attributplads fra et stort antal variable til et mindre antal faktorer.
- PCA er grundlæggende en dimensionsreduktionsproces, men der er ingen garanti for, at dimensionen er fortolkelig.
- Hovedopgaven i denne PCA er at vælge en delmængde af variabler fra et større sæt, baseret på hvilke originale variabler, der har den højeste korrelation med hovedstolen.
- Identifikation af mønstre: PCA kan hjælpe med at identificere mønstre eller relationer mellem variabler, der måske ikke er tydelige i de originale data. Ved at reducere dimensionaliteten af dataene kan PCA afsløre underliggende strukturer, der kan være nyttige til at forstå og fortolke dataene.
- Funktionsudtræk: PCA kan bruges til at udtrække funktioner fra et sæt variabler, der er mere informative eller relevante end de oprindelige variable. Disse funktioner kan derefter bruges i modellering eller andre analyseopgaver.
- Datakomprimering: PCA kan bruges til at komprimere store datasæt ved at reducere antallet af variabler, der er nødvendige for at repræsentere dataene, og samtidig bevare så meget information som muligt.
- Støjreduktion: PCA kan bruges til at reducere støjen i et datasæt ved at identificere og fjerne de vigtigste komponenter, der svarer til de støjende dele af dataene.
- Visualisering: PCA kan bruges til at visualisere højdimensionelle data i et lavere dimensionelt rum, hvilket gør det lettere at fortolke og forstå. Ved at projicere dataene på hovedkomponenterne kan mønstre og sammenhænge mellem variabler lettere visualiseres.
Hovedaksemetode: PCA søger grundlæggende efter en lineær kombination af variabler, så vi kan udtrække maksimal varians fra variablerne. Når denne proces er fuldført, fjerner den den og søger efter en anden lineær kombination, der giver en forklaring på den maksimale andel af resterende varians, som dybest set fører til ortogonale faktorer. I denne metode analyserer vi total varians.
Egenvektor: Det er en ikke-nul vektor, der forbliver parallel efter matrix multiplikation. Lad os antage, at x er en egenvektor for dimension r af matrix M med dimension r*r, hvis Mx og x er parallelle. Så skal vi løse Mx=Ax hvor både x og A er ukendte for at få egenvektor og egenværdier.
Under Eigen-vektorer kan vi sige, at hovedkomponenter viser både fælles og unik varians af variablen. Grundlæggende er det en variansfokuseret tilgang, der søger at reproducere total varians og korrelation med alle komponenter. De vigtigste komponenter er grundlæggende de lineære kombinationer af de oprindelige variable vægtet efter deres bidrag til at forklare variansen i en bestemt ortogonal dimension.
Egne værdier: Det er grundlæggende kendt som karakteristiske rødder. Det måler dybest set variansen i alle variabler, som den faktor tegner sig for. Forholdet mellem egenværdier er forholdet mellem faktorernes forklarende betydning i forhold til variablerne. Hvis faktoren er lav, bidrager den mindre til forklaringen af variable. Med enkle ord måler den mængden af varians i den samlede givne database, som faktoren tager højde for. Vi kan beregne faktorens egenværdi som summen af dens kvadratiske faktorbelastning for alle variablerne.
Lad os nu forstå hovedkomponentanalyse med Python.
Klik på for at få datasættet brugt i implementeringen her .
Trin 1: Import af bibliotekerne
Python # importing required libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd>
Trin 2: Import af datasættet
Importer datasættet og distribuer datasættet til X- og y-komponenter til 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>
Trin 3: Opdeling af datasættet i træningssættet og testsættet
typer netværkPython
# 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)>
Trin 4: Funktionsskalering
Udfører forbearbejdningsdelen på trænings- og testsæt, såsom tilpasning af standardvægten.
Python # performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>
Trin 5: Anvendelse af PCA-funktion
Anvendelse af PCA-funktionen i trænings- og testsættet til 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_>
Trin 6: Tilpasning af logistisk regression til træningssættet
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)>
Produktion:

Trin 7: Forudsigelse af testsætresultatet
Python # Predicting the test set result using # predict function under LogisticRegression y_pred = classifier.predict(X_test)>
Trin 8: At lave forvirringsmatrixen
# making confusion matrix between # test set of Y and predicted value. from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)>
Trin 9: Forudsigelse af træningssættets resultat
# 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()> Produktion:

Trin 10: Visualisering af testsættets 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 hovedkomponentrum:
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 simpelt eksempel på, hvordan man udfører PCA ved hjælp af Python. Outputtet af denne kode vil være et scatterplot af de to første hovedkomponenter og deres forklarede variansforhold. Ved at vælge det passende antal hovedkomponenter kan vi reducere datasættets dimensionalitet og forbedre vores forståelse af dataene.