Pagrindinių komponentų analizė iš esmės yra statistinė procedūra, skirta paversti galimai koreliuojančių kintamųjų stebėjimų rinkinį į tiesiškai nekoreliuojančių kintamųjų verčių rinkinį.
Kiekvienas iš pagrindinių komponentų parenkamas taip, kad apibūdintų daugumą jų vis dar turimą dispersiją ir visi šie pagrindiniai komponentai yra statmeni vienas kitam. Visų pagrindinių komponentų pirmasis pagrindinis komponentas turi didžiausią dispersiją.
PCA naudojimas:
- Jis naudojamas norint rasti duomenų kintamųjų tarpusavio ryšius.
- Jis naudojamas duomenims interpretuoti ir vizualizuoti.
- Kintamųjų skaičius mažėja, todėl tolesnė analizė tampa paprastesnė.
- Jis dažnai naudojamas vizualizuoti genetinį atstumą ir ryšį tarp populiacijų.
Tai iš esmės atliekama kvadratinėje simetrinėje matricoje. Tai gali būti grynos kvadratų sumos ir kryžminių sandaugų matrica Kovariacijos matrica arba koreliacijos matrica. Jei individuali dispersija labai skiriasi, naudojama koreliacijos matrica.
PCA tikslai:
simbolis į eilutę java
- Iš esmės tai yra nepriklausoma procedūra, kurios metu ji sumažina atributų erdvę nuo didelio kintamųjų skaičiaus iki mažesnio veiksnių skaičiaus.
- PCA iš esmės yra matmenų mažinimo procesas, tačiau nėra garantijos, kad matmenį galima interpretuoti.
- Pagrindinė šio PCA užduotis yra pasirinkti kintamųjų poaibį iš didesnės rinkinio, pagal kurį pradiniai kintamieji turi didžiausią koreliaciją su pagrindine suma.
- Modelių identifikavimas: PCA gali padėti nustatyti modelius arba ryšius tarp kintamųjų, kurių gali nebūti pirminiuose duomenyse. Sumažinus duomenų matmenis, PCA gali atskleisti pagrindines struktūras, kurios gali būti naudingos norint suprasti ir interpretuoti duomenis.
- Funkcijų išskyrimas: PCA gali būti naudojamas funkcijoms išgauti iš kintamųjų, kurie yra informatyvesni arba tinkamesni nei pirminiai kintamieji, rinkinio. Šios funkcijos gali būti naudojamos modeliavimo ar kitose analizės užduotyse.
- Duomenų glaudinimas: PCA gali būti naudojamas dideliems duomenų rinkiniams suspausti, sumažinant kintamųjų, reikalingų duomenims reprezentuoti, skaičių, išsaugant kuo daugiau informacijos.
- Triukšmo mažinimas: PCA gali būti naudojamas duomenų rinkinio triukšmui sumažinti, nustatant ir pašalinant pagrindinius komponentus, atitinkančius triukšmingas duomenų dalis.
- Vizualizacija: PCA gali būti naudojamas vizualizuoti didelės apimties duomenis žemesnio matmens erdvėje, kad būtų lengviau interpretuoti ir suprasti. Projektuojant duomenis į pagrindinius komponentus, modelius ir ryšius tarp kintamųjų galima lengviau vizualizuoti.
Pagrindinės ašies metodas: PCA iš esmės ieško tiesinio kintamųjų derinio, kad galėtume išgauti didžiausią kintamųjų dispersiją. Kai šis procesas bus baigtas, jis pašalinamas ir ieškoma kito linijinio derinio, kuris paaiškina didžiausią likusios dispersijos dalį, kuri iš esmės lemia ortogonalinius veiksnius. Šiuo metodu analizuojame bendrą dispersiją.
Savasvektorius: Tai nulinis vektorius, kuris lieka lygiagretus po matricos daugybos. Tarkime, kad x yra matricos M r matmens savasis vektorius, kurio matmuo r*r, jei Mx ir x yra lygiagretūs. Tada turime išspręsti Mx=Ax, kur ir x, ir A yra nežinomi, kad gautume savąjį vektorių ir savąsias reikšmes.
Pagal Eigen-vektorius galime pasakyti, kad pagrindiniai komponentai rodo tiek bendrą, tiek unikalią kintamojo dispersiją. Iš esmės tai yra į dispersiją orientuotas metodas, kuriuo siekiama atkurti bendrą dispersiją ir koreliaciją su visais komponentais. Pagrindiniai komponentai iš esmės yra linijiniai pradinių kintamųjų deriniai, svertiniai pagal jų indėlį paaiškinant konkretaus stačiakampio matmens dispersiją.
Nuosavos vertybės: Iš esmės tai vadinama būdingomis šaknimis. Iš esmės jis matuoja visų kintamųjų dispersiją, kurią lemia šis veiksnys. Savųjų reikšmių santykis – tai veiksnių aiškinamosios svarbos santykis kintamųjų atžvilgiu. Jei koeficientas yra mažas, jis mažiau prisideda prie kintamųjų paaiškinimo. Paprastais žodžiais tariant, jis matuoja visos duotosios duomenų bazės dispersijos dydį, atsižvelgiant į veiksnį. Faktoriaus savąją reikšmę galime apskaičiuoti kaip jo kvadratinio faktoriaus apkrovos visiems kintamiesiems sumą.
internetinės bankininkystės trūkumai
Dabar supraskime pagrindinių komponentų analizę su Python.
Norėdami gauti duomenų rinkinį, naudojamą įgyvendinant, spustelėkite čia .
1 žingsnis: Bibliotekų importavimas
Java stygų metodaiPython
# importing required libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd>
2 žingsnis: Duomenų rinkinio importavimas
Importuokite duomenų rinkinį ir paskirstykite duomenų rinkinį į X ir y komponentus duomenų analizei.
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 veiksmas: Duomenų rinkinio padalijimas į mokymo rinkinį ir testo rinkinį
# 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 veiksmas: Funkcijų mastelio keitimas
Atliekant mokymo ir testavimo rinkinio išankstinio apdorojimo dalį, pvz., standartinės skalės pritaikymą.
pd sujungtiPython
# performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>
5 veiksmas: PCA funkcijos taikymas
PCA funkcijos taikymas mokymo ir testavimo rinkinyje analizei.
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 veiksmas: Logistinės regresijos pritaikymas prie mokymo komplekto
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)>
Išvestis:

7 veiksmas: Bandymo rinkinio rezultato numatymas
Python # Predicting the test set result using # predict function under LogisticRegression y_pred = classifier.predict(X_test)>
8 veiksmas: Sukimo matricos sudarymas
# 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 veiksmas: Treniruočių rinkinio rezultato numatymas
# 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()> Išvestis:
shilpa shetty amžius

10 veiksmas: Testo rinkinio rezultatų vizualizavimas
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()> 
Galime vizualizuoti duomenis naujoje pagrindinių komponentų erdvėje:
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> Tai paprastas pavyzdys, kaip atlikti PCA naudojant Python. Šio kodo išvestis bus pirmųjų dviejų pagrindinių komponentų ir jų paaiškinto dispersijos santykio sklaidos diagrama. Pasirinkę tinkamą pagrindinių komponentų skaičių, galime sumažinti duomenų rinkinio matmenis ir pagerinti duomenų supratimą.