Huvudkomponentanalys är i grunden en statistisk procedur för att omvandla en uppsättning observationer av möjligen korrelerade variabler till en uppsättning värden av linjärt okorrelerade variabler.
Var och en av huvudkomponenterna är vald på ett sådant sätt att den skulle beskriva de flesta av dem fortfarande tillgängliga variansen och alla dessa huvudkomponenter är ortogonala mot varandra. I alla huvudkomponenter har den första huvudkomponenten en maximal varians.
Användning av PCA:
- Det används för att hitta inbördes samband mellan variabler i data.
- Den används för att tolka och visualisera data.
- Antalet variabler minskar vilket gör vidare analys enklare.
- Det används ofta för att visualisera genetiskt avstånd och släktskap mellan populationer.
Dessa utförs i princip på en kvadratsymmetrisk matris. Det kan vara en ren summa av kvadrater och korsproduktmatris Kovariansmatris eller Korrelationsmatris. En korrelationsmatris används om den individuella variansen skiljer sig mycket.
Mål för PCA:
lista i java
- Det är i grunden en icke-beroende procedur där den reducerar attribututrymmet från ett stort antal variabler till ett mindre antal faktorer.
- PCA är i grunden en dimensionsreduktionsprocess men det finns ingen garanti för att dimensionen är tolkningsbar.
- Huvuduppgiften i denna PCA är att välja en delmängd av variabler från en större uppsättning, baserat på vilka ursprungliga variabler som har den högsta korrelationen med kapitalbeloppet.
- Identifiera mönster: PCA kan hjälpa till att identifiera mönster eller samband mellan variabler som kanske inte är uppenbara i originaldata. Genom att reducera dimensionaliteten hos datan kan PCA avslöja underliggande strukturer som kan vara användbara för att förstå och tolka datan.
- Funktionsextraktion: PCA kan användas för att extrahera funktioner från en uppsättning variabler som är mer informativa eller relevanta än de ursprungliga variablerna. Dessa funktioner kan sedan användas i modellering eller andra analysuppgifter.
- Datakomprimering: PCA kan användas för att komprimera stora datamängder genom att minska antalet variabler som behövs för att representera data, samtidigt som man behåller så mycket information som möjligt.
- Brusreducering: PCA kan användas för att reducera bruset i en datauppsättning genom att identifiera och ta bort de huvudsakliga komponenterna som motsvarar de bullriga delarna av datan.
- Visualisering: PCA kan användas för att visualisera högdimensionell data i ett lägre dimensionellt utrymme, vilket gör det lättare att tolka och förstå. Genom att projicera data på huvudkomponenterna kan mönster och samband mellan variabler lättare visualiseras.
Huvudaxelmetod: PCA söker i princip en linjär kombination av variabler så att vi kan extrahera maximal varians från variablerna. När denna process är klar tar den bort den och söker efter en annan linjär kombination som ger en förklaring om den maximala andelen kvarvarande varians som i princip leder till ortogonala faktorer. I denna metod analyserar vi total varians.
Egenvektor: Det är en vektor som inte är noll som förblir parallell efter matrismultiplikation. Låt oss anta att x är en egenvektor för dimensionen r i matrisen M med dimensionen r*r om Mx och x är parallella. Sedan behöver vi lösa Mx=Ax där både x och A är okända för att få egenvektor och egenvärden.
Under Eigen-vektorer kan vi säga att huvudkomponenter visar både gemensam och unik varians av variabeln. I grund och botten är det variansfokuserat tillvägagångssätt som försöker reproducera total varians och korrelation med alla komponenter. De huvudsakliga komponenterna är i grunden de linjära kombinationerna av de ursprungliga variablerna viktade med deras bidrag för att förklara variansen i en viss ortogonal dimension.
Egna värderingar: Det är i grunden känt som karakteristiska rötter. Den mäter i princip variansen i alla variabler som den faktorn står för. Förhållandet mellan egenvärden är förhållandet mellan faktorernas förklarande betydelse i förhållande till variablerna. Om faktorn är låg så bidrar den mindre till förklaringen av variabler. Med enkla ord mäter den mängden varians i den totala givna databasen som faktorn tar hänsyn till. Vi kan beräkna faktorns egenvärde som summan av dess kvadratiska faktorbelastning för alla variabler.
bash sova
Låt oss nu förstå Principal Component Analysis med Python.
Klicka på för att få datasetet att användas i implementeringen här .
Steg 1: Importera biblioteken
Pytonorm # importing required libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd>
Steg 2: Importera datamängden
Importera datauppsättningen och distribuera datauppsättningen till X- och y-komponenter för dataanalys.
Pytonorm # 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>
Steg 3: Dela upp datasetet i träningssetet och testsetet
# 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)>
Steg 4: Funktionsskalning
skapande av orakelbord
Gör förbearbetningsdelen på tränings- och testset som att passa standardskalan.
jämförbar listaPytonorm
# performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>
Steg 5: Använder PCA-funktion
Applicera PCA-funktionen i tränings- och testsetet för analys.
Pytonorm # 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_>
Steg 6: Passande logistisk regression till träningssetet
Pytonorm # 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:

Steg 7: Förutsäga testsetresultatet
Pytonorm # Predicting the test set result using # predict function under LogisticRegression y_pred = classifier.predict(X_test)>
Steg 8: Att göra förvirringsmatrisen
# making confusion matrix between # test set of Y and predicted value. from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)>
Steg 9: Förutsäga resultatet av träningssetet
# 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:
gimp ändra färg

Steg 10: Visualisera testuppsättningens resultat
Pytonorm # 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 visualisera data i det nya huvudkomponentutrymmet:
Pytonorm # 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> Detta är ett enkelt exempel på hur man utför PCA med Python. Utdata från denna kod kommer att vara ett spridningsdiagram av de två första huvudkomponenterna och deras förklarade variansförhållande. Genom att välja lämpligt antal huvudkomponenter kan vi minska dimensionaliteten hos datasetet och förbättra vår förståelse av datan.