Galveno komponentu analīze ar Python

Galveno komponentu analīze ar Python

Galvenās sastāvdaļas analīze būtībā ir statistiska procedūra, lai pārveidotu, iespējams, korelētu mainīgo novērojumu kopu par lineāri nekorelētu mainīgo vērtību kopu.

Katrs no galvenajiem komponentiem ir izvēlēts tā, lai tas raksturotu lielāko daļu joprojām pieejamo dispersiju, un visas šīs galvenās sastāvdaļas ir ortogonālas viena otrai. Visos galvenajos komponentos pirmajam galvenajam komponentam ir maksimālā dispersija.

PCA lietojumi:

  1. To izmanto, lai atrastu savstarpējās attiecības starp mainīgajiem datos.
  2. To izmanto, lai interpretētu un vizualizētu datus.
  3. Mainīgo skaits samazinās, kas padara turpmāko analīzi vienkāršāku.
  4. To bieži izmanto, lai vizualizētu ģenētisko attālumu un radniecību starp populācijām.


Tās pamatā tiek veiktas uz kvadrātveida simetriskas matricas. Tā var būt tīras kvadrātu summas un krustproduktu matrica Kovariācijas matrica vai korelācijas matrica. Ja individuālā dispersija ļoti atšķiras, tiek izmantota korelācijas matrica.

PCA mērķi:

  1. Būtībā tā ir neatkarīga procedūra, kurā tā samazina atribūtu vietu no liela skaita mainīgo uz mazāku faktoru skaitu.
  2. PCA būtībā ir dimensijas samazināšanas process, taču nav garantijas, ka dimensija ir interpretējama.
  3. Galvenais uzdevums šajā PCA ir atlasīt mainīgo apakškopu no lielākas kopas, pamatojoties uz kuriem sākotnējiem mainīgajiem ir visaugstākā korelācija ar pamatsummu.
  4. Modeļu identificēšana: PCA var palīdzēt identificēt modeļus vai attiecības starp mainīgajiem, kas var nebūt redzami sākotnējos datos. Samazinot datu dimensiju, PCA var atklāt pamatā esošās struktūras, kas var būt noderīgas datu izpratnē un interpretācijā.
  5. Iezīmju izvilkšana: PCA var izmantot, lai no mainīgo kopas iegūtu līdzekļus, kas ir informatīvāki vai atbilstošāki nekā sākotnējie mainīgie. Šīs funkcijas pēc tam var izmantot modelēšanas vai citos analīzes uzdevumos.
  6. Datu saspiešana: PCA var izmantot lielu datu kopu saspiešanai, samazinot datu attēlošanai nepieciešamo mainīgo skaitu, vienlaikus saglabājot pēc iespējas vairāk informācijas.
  7. Trokšņa samazināšana: PCA var izmantot, lai samazinātu troksni datu kopā, identificējot un noņemot galvenos komponentus, kas atbilst trokšņainajām datu daļām.
  8. Vizualizācija: PCA var izmantot, lai vizualizētu augstas dimensijas datus zemākas dimensijas telpā, padarot tos vieglāk interpretējamus un saprotamus. Projicējot datus uz galvenajām sastāvdaļām, modeļus un attiecības starp mainīgajiem var vieglāk vizualizēt.

Galvenās ass metode: PCA pamatā meklē lineāru mainīgo kombināciju, lai mēs varētu iegūt maksimālu dispersiju no mainīgajiem. Kad šis process ir pabeigts, tas tiek noņemts un tiek meklēta cita lineāra kombinācija, kas sniedz skaidrojumu par atlikušās dispersijas maksimālo proporciju, kas pamatā noved pie ortogonāliem faktoriem. Šajā metodē mēs analizējam kopējo dispersiju.

Pašvektors: Tas ir vektors, kas nav nulle un kas paliek paralēls pēc matricas reizināšanas. Pieņemsim, ka x ir matricas M dimensijas r īpašvektors ar izmēru r*r, ja Mx un x ir paralēli. Tad mums jāatrisina Mx=Ax, kur gan x, gan A nav zināmi, lai iegūtu īpašvektoru un īpašvērtības.
Sadaļā Eigen-Vectors mēs varam teikt, ka galvenie komponenti parāda gan kopējo, gan unikālo mainīgā dispersiju. Būtībā tā ir uz dispersiju vērsta pieeja, kuras mērķis ir reproducēt kopējo dispersiju un korelāciju ar visiem komponentiem. Galvenās sastāvdaļas būtībā ir sākotnējo mainīgo lineāras kombinācijas, kas svērtas pēc to ieguldījuma, lai izskaidrotu dispersiju noteiktā ortogonālā dimensijā.

Pašu vērtības: Pamatā to sauc par raksturīgām saknēm. Tas pamatā mēra visu mainīgo lielumu dispersiju, ko nosaka šis faktors. Pašvērtību attiecība ir faktoru skaidrojošās nozīmes attiecība pret mainīgajiem. Ja koeficients ir zems, tas mazāk veicina mainīgo lielumu skaidrojumu. Vienkāršiem vārdiem sakot, tas mēra dispersijas apjomu kopējā dotajā datubāzē, ko veido faktors. Mēs varam aprēķināt faktora īpatnējo vērtību kā tā faktora slodzes kvadrātā summu visiem mainīgajiem.

Tagad sapratīsim galveno komponentu analīzi ar Python.

Lai iegūtu ieviešanā izmantoto datu kopu, noklikšķiniet uz šeit .

1. darbība: Bibliotēku importēšana

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

2. darbība: Datu kopas importēšana

Importējiet datu kopu un sadaliet datu kopu X un y komponentos datu analīzei.

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. darbība: Datu kopas sadalīšana apmācību kopā un testa komplektā

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) 

4. darbība: Funkciju mērogošana

Veicot apmācību un testēšanas komplekta priekšapstrādes daļu, piemēram, standarta skalas pielāgošanu.

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. darbība: PCA funkcijas izmantošana

PCA funkcijas izmantošana apmācības un testēšanas komplektā analīzei.

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. darbība: Loģistikas regresijas pielāgošana apmācības komplektam

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) 

Izvade:

7. darbība: Pārbaudes kopas rezultāta prognozēšana

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


8. darbība: Apjukuma matricas izveidošana

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) 


9. darbība: Treniņu komplekta rezultāta prognozēšana

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

Izvade:

10. darbība: Testu kopas rezultātu vizualizācija

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

Mēs varam vizualizēt datus jaunajā galveno komponentu telpā:

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 

Šis ir vienkāršs piemērs tam, kā veikt PCA, izmantojot Python. Šī koda izvade būs pirmo divu galveno komponentu izkliedes diagramma un to izskaidrotā dispersijas attiecība. Atlasot atbilstošu skaitu galveno komponentu, mēs varam samazināt datu kopas dimensiju un uzlabot savu izpratni par datiem.