Analiza glavnih komponent je v bistvu statistični postopek za pretvorbo niza opazovanj možno koreliranih spremenljivk v niz vrednosti linearno nekoreliranih spremenljivk.
Vsaka od glavnih komponent je izbrana tako, da bi opisala večino še razpoložljive variance in so vse te glavne komponente pravokotne druga na drugo. Pri vseh glavnih komponentah ima prva glavna komponenta največjo varianco.
Uporaba PCA:
- Uporablja se za iskanje medsebojnih povezav med spremenljivkami v podatkih.
- Uporablja se za interpretacijo in vizualizacijo podatkov.
- Število spremenljivk se zmanjšuje, kar poenostavlja nadaljnjo analizo.
- Pogosto se uporablja za vizualizacijo genetske razdalje in sorodstva med populacijami.
Ti se v bistvu izvajajo na kvadratni simetrični matriki. Lahko je čista vsota kvadratov in matrika navzkrižnih produktov, kovariančna matrika ali korelacijska matrika. Korelacijska matrika se uporablja, če se individualna varianca zelo razlikuje.
Cilji PCA:
- V bistvu je neodvisen postopek, v katerem zmanjša prostor atributov z velikega števila spremenljivk na manjše število dejavnikov.
- PCA je v bistvu postopek zmanjševanja dimenzij, vendar ni nobenega zagotovila, da je dimenzijo mogoče interpretirati.
- Glavna naloga v tem PCA je izbrati podmnožico spremenljivk iz večjega niza, na podlagi katere izvirne spremenljivke imajo največjo korelacijo z glavnico.
- Prepoznavanje vzorcev: PCA lahko pomaga prepoznati vzorce ali razmerja med spremenljivkami, ki morda niso očitne v izvirnih podatkih. Z zmanjšanjem dimenzionalnosti podatkov lahko PCA razkrije temeljne strukture, ki so lahko koristne pri razumevanju in interpretaciji podatkov.
- Ekstrakcija funkcij: PCA se lahko uporablja za ekstrahiranje funkcij iz nabora spremenljivk, ki so bolj informativne ali pomembne kot izvirne spremenljivke. Te funkcije je nato mogoče uporabiti pri modeliranju ali drugih nalogah analize.
- Stiskanje podatkov: PCA se lahko uporablja za stiskanje velikih naborov podatkov z zmanjšanjem števila spremenljivk, potrebnih za predstavitev podatkov, pri čemer se ohrani čim več informacij.
- Zmanjšanje šuma: PCA je mogoče uporabiti za zmanjšanje šuma v naboru podatkov z identifikacijo in odstranitvijo glavnih komponent, ki ustrezajo šumnim delom podatkov.
- Vizualizacija: PCA se lahko uporablja za vizualizacijo visokodimenzionalnih podatkov v nižjedimenzionalnem prostoru, kar olajša interpretacijo in razumevanje. S projiciranjem podatkov na glavne komponente je vzorce in razmerja med spremenljivkami lažje vizualizirati.
Metoda glavne osi: PCA v bistvu išče linearno kombinacijo spremenljivk, tako da lahko iz spremenljivk izluščimo največjo varianco. Ko je ta postopek končan, ga odstrani in poišče drugo linearno kombinacijo, ki daje razlago o največjem deležu preostale variance, kar v bistvu vodi do ortogonalnih faktorjev. Pri tej metodi analiziramo skupno varianco.
Lastni vektor: To je neničelni vektor, ki po množenju matrike ostane vzporeden. Recimo, da je x lastni vektor dimenzije r matrike M z dimenzijo r*r, če sta Mx in x vzporedna. Nato moramo rešiti Mx=Ax, kjer sta x in A neznana, da dobimo lastni vektor in lastne vrednosti.
Pod lastnimi vektorji lahko rečemo, da glavne komponente kažejo skupno in edinstveno varianco spremenljivke. V bistvu gre za pristop, osredotočen na varianco, ki želi reproducirati celotno varianco in korelacijo z vsemi komponentami. Glavne komponente so v bistvu linearne kombinacije prvotnih spremenljivk, uteženih z njihovim prispevkom za razlago variance v določeni ortogonalni dimenziji.
Lastne vrednosti: V bistvu je znana kot značilne korenine. V bistvu meri varianco vseh spremenljivk, ki jih upošteva ta faktor. Razmerje lastnih vrednosti je razmerje razlagalne pomembnosti dejavnikov glede na spremenljivke. Če je faktor nizek, potem manj prispeva k razlagi spremenljivk. Preprosto povedano, meri količino variance v skupni dani zbirki podatkov, ki jo upošteva faktor. Faktorjevo lastno vrednost lahko izračunamo kot vsoto njegove kvadratne faktorske obremenitve za vse spremenljivke.
Zdaj pa poglejmo analizo glavnih komponent s Pythonom.
Če želite nabor podatkov uporabiti pri izvedbi, kliknite tukaj .
globalna spremenljivka javascript
Korak 1: Uvažanje knjižnic
Python # importing required libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd>
2. korak: Uvažanje nabora podatkov
Uvoz nabora podatkov in porazdelitev nabora podatkov v komponente X in y za analizo podatkov.
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>
3. korak: Razdelitev nabora podatkov na nabor za usposabljanje in nabor za testiranje
# 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)>
4. korak: Skaliranje funkcij
Izvajanje dela predhodne obdelave na kompletu za usposabljanje in testiranje, kot je nastavitev standardne lestvice.
Python # performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>
5. korak: Uporaba funkcije PCA
Uporaba funkcije PCA v kompletu za usposabljanje in testiranje za analizo.
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_>
6. korak: Prilagajanje logistične regresije nizu za usposabljanje
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)>
Izhod:
skeniraj.naslednja java

7. korak: Napovedovanje rezultata testnega niza
Python # Predicting the test set result using # predict function under LogisticRegression y_pred = classifier.predict(X_test)>
8. korak: Izdelava matrike zmede
# making confusion matrix between # test set of Y and predicted value. from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)>
9. korak: Napovedovanje rezultata vadbenega niza
# 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()> Izhod:

10. korak: Vizualizacija rezultatov testnega niza
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()> 
Podatke lahko vizualiziramo v novem prostoru glavne komponente:
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> To je preprost primer, kako izvesti PCA z uporabo Pythona. Izhod te kode bo raztreseni graf prvih dveh glavnih komponent in njunega razloženega razmerja variance. Z izbiro ustreznega števila glavnih komponent lahko zmanjšamo dimenzionalnost nabora podatkov in izboljšamo naše razumevanje podatkov.