logo

Hoofdcomponentenanalyse met Python

Hoofdcomponentenanalyse is in feite een statistische procedure om een ​​reeks waarnemingen van mogelijk gecorreleerde variabelen om te zetten in een reeks waarden van lineair niet-gecorreleerde variabelen.

Elk van de hoofdcomponenten is zo gekozen dat het de meeste van de nog beschikbare variantie zou beschrijven en al deze hoofdcomponenten zijn orthogonaal ten opzichte van elkaar. In alle hoofdcomponenten heeft de eerste hoofdcomponent een maximale variantie.

Gebruik van PCA:



  1. Het wordt gebruikt om onderlinge relaties tussen variabelen in de gegevens te vinden.
  2. Het wordt gebruikt om gegevens te interpreteren en te visualiseren.
  3. Het aantal variabelen neemt af, wat verdere analyse eenvoudiger maakt.
  4. Het wordt vaak gebruikt om genetische afstand en verwantschap tussen populaties te visualiseren.


Deze worden in principe uitgevoerd op een vierkante symmetrische matrix. Het kan een zuivere som van kwadraten en een kruisproductmatrix zijn. Covariantiematrix of correlatiematrix. Als de individuele variantie veel verschilt, wordt een correlatiematrix gebruikt.

Doelstellingen van PCA:

hoeveel weken heeft een maand
  1. Het is in feite een niet-afhankelijke procedure waarbij de attribuutruimte wordt gereduceerd van een groot aantal variabelen naar een kleiner aantal factoren.
  2. PCA is in feite een proces voor het verkleinen van dimensies, maar er is geen garantie dat de dimensie interpreteerbaar is.
  3. De hoofdtaak in deze PCA is het selecteren van een subset van variabelen uit een grotere set, op basis van welke originele variabelen de hoogste correlatie hebben met de hoofdsom.
  4. Patronen identificeren: PCA kan helpen bij het identificeren van patronen of relaties tussen variabelen die mogelijk niet duidelijk zichtbaar zijn in de oorspronkelijke gegevens. Door de dimensionaliteit van de gegevens te verminderen, kan PCA onderliggende structuren blootleggen die nuttig kunnen zijn bij het begrijpen en interpreteren van de gegevens.
  5. Functie-extractie: PCA kan worden gebruikt om kenmerken te extraheren uit een reeks variabelen die informatiever of relevanter zijn dan de oorspronkelijke variabelen. Deze functies kunnen vervolgens worden gebruikt bij modellering of andere analysetaken.
  6. Gegevenscompressie: PCA kan worden gebruikt om grote gegevenssets te comprimeren door het aantal variabelen dat nodig is om de gegevens weer te geven te verminderen, terwijl zoveel mogelijk informatie behouden blijft.
  7. Ruisreductie: PCA kan worden gebruikt om de ruis in een dataset te verminderen door de belangrijkste componenten die overeenkomen met de luidruchtige delen van de gegevens te identificeren en te verwijderen.
  8. Visualisatie: PCA kan worden gebruikt om hoogdimensionale gegevens in een lagerdimensionale ruimte te visualiseren, waardoor deze gemakkelijker te interpreteren en te begrijpen zijn. Door de gegevens op de belangrijkste componenten te projecteren, kunnen patronen en relaties tussen variabelen gemakkelijker worden gevisualiseerd.

Hoofdasmethode: PCA zoekt in principe naar een lineaire combinatie van variabelen, zodat we maximale variantie uit de variabelen kunnen halen. Zodra dit proces is voltooid, wordt het verwijderd en wordt gezocht naar een andere lineaire combinatie die uitleg geeft over het maximale percentage resterende variantie dat in feite tot orthogonale factoren leidt. Bij deze methode analyseren we de totale variantie.

Eigenvector: Het is een niet-nulvector die parallel blijft na matrixvermenigvuldiging. Laten we aannemen dat x een eigenvector is van dimensie r van matrix M met dimensie r*r als Mx en x parallel zijn. Vervolgens moeten we Mx=Ax oplossen waarbij zowel x als A onbekend zijn om de eigenvector en eigenwaarden te verkrijgen.
Onder Eigen-Vectoren kunnen we zeggen dat Principal-componenten zowel gemeenschappelijke als unieke variantie van de variabele vertonen. Kortom, het is een variantiegerichte benadering die de totale variantie en correlatie met alle componenten probeert te reproduceren. De belangrijkste componenten zijn in feite de lineaire combinaties van de oorspronkelijke variabelen, gewogen naar hun bijdrage aan het verklaren van de variantie in een bepaalde orthogonale dimensie.

Eigen Values: Het staat eigenlijk bekend als karakteristieke wortels. Het meet in feite de variantie in alle variabelen die door die factor wordt verklaard. De verhouding van de eigenwaarden is de verhouding van het verklarende belang van de factoren ten opzichte van de variabelen. Als de factor laag is, draagt ​​deze minder bij aan de verklaring van variabelen. In eenvoudige bewoordingen meet het de hoeveelheid variantie in de totale gegeven database, rekening houdend met de factor. We kunnen de eigenwaarde van de factor berekenen als de som van de kwadratische factorlading voor alle variabelen.

binaire zoekboom]

Laten we nu de hoofdcomponentenanalyse met Python begrijpen.

Klik op om de dataset op te halen die bij de implementatie wordt gebruikt hier .

Stap 1: Importeren van de bibliotheken

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

Stap 2: Importeren van de dataset

Importeer de dataset en distribueer de dataset in X- en y-componenten voor data-analyse.

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>


Stap 3: De gegevensset opsplitsen in de trainingsset en de testset

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

Stap 4: Functieschaling

wat is hashset-java

Het voorbewerkingsgedeelte uitvoeren op het gebied van training en testen, zoals het aanpassen van de standaardschaal.

uitzonderingsafhandeling in Java
Python
# performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>

Stap 5: PCA-functie toepassen

Toepassen van de PCA-functie in de trainings- en testset voor 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_>

Stap 6: Logistieke regressie passend bij de trainingsset

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

Uitgang:

Stap 7: Het voorspellen van het resultaat van de testset

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


Stap 8: Het maken van de verwarringsmatrix

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


Stap 9: Het voorspellen van het resultaat van de trainingsset

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

Uitgang:

Booleaans naar tekenreeks

Stap 10: Visualiseren van de resultaten van de testset

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

We kunnen de gegevens visualiseren in de nieuwe hoofdcomponentenruimte:

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>

Dit is een eenvoudig voorbeeld van hoe u PCA kunt uitvoeren met Python. De uitvoer van deze code zal een spreidingsdiagram zijn van de eerste twee hoofdcomponenten en hun verklaarde variantieverhouding. Door het juiste aantal hoofdcomponenten te selecteren, kunnen we de dimensionaliteit van de dataset verminderen en ons begrip van de gegevens verbeteren.