logo

Analiza głównych komponentów w języku Python

Analiza głównych składowych jest w zasadzie procedurą statystyczną mającą na celu przekształcenie zbioru obserwacji potencjalnie skorelowanych zmiennych na zbiór wartości zmiennych liniowo nieskorelowanych.

Każdy z głównych składników jest tak dobrany, aby opisywał większość z nich, wciąż dostępnej wariancji, a wszystkie te główne składniki są względem siebie ortogonalne. We wszystkich głównych składnikach pierwszy główny składnik ma maksymalną wariancję.



Zastosowania PCA:

  1. Służy do wyszukiwania powiązań pomiędzy zmiennymi w danych.
  2. Służy do interpretacji i wizualizacji danych.
  3. Liczba zmiennych maleje, co ułatwia dalszą analizę.
  4. Często używa się go do wizualizacji dystansu genetycznego i pokrewieństwa między populacjami.


Są one zasadniczo wykonywane na kwadratowej matrycy symetrycznej. Może to być czysta suma kwadratów i macierz iloczynów krzyżowych, macierz kowariancji lub macierz korelacji. Jeśli wariancja indywidualna znacznie się różni, stosuje się macierz korelacji.

Cele PCA:



najpiękniejszy uśmiech
  1. Zasadniczo jest to procedura niezależna, w której redukuje się przestrzeń atrybutów z dużej liczby zmiennych do mniejszej liczby czynników.
  2. PCA to w zasadzie proces redukcji wymiarów, ale nie ma gwarancji, że wymiar będzie możliwy do interpretacji.
  3. Głównym zadaniem w tym PCA jest wybranie podzbioru zmiennych z większego zbioru, w oparciu o to, które zmienne pierwotne mają najwyższą korelację z kwotą kapitału.
  4. Identyfikacja wzorców: PCA może pomóc w zidentyfikowaniu wzorców lub relacji między zmiennymi, które mogą nie być widoczne w oryginalnych danych. Zmniejszając wymiarowość danych, PCA może ujawnić podstawowe struktury, które mogą być przydatne w zrozumieniu i interpretacji danych.
  5. Ekstrakcja cech: PCA można wykorzystać do wyodrębnienia cech ze zbioru zmiennych, które mają więcej informacji lub są istotne niż zmienne oryginalne. Funkcje te można następnie wykorzystać w modelowaniu lub innych zadaniach analitycznych.
  6. Kompresja danych: PCA można wykorzystać do kompresji dużych zbiorów danych poprzez zmniejszenie liczby zmiennych potrzebnych do reprezentowania danych, przy jednoczesnym zachowaniu jak największej ilości informacji.
  7. Redukcja szumu: PCA można zastosować do zmniejszenia szumu w zbiorze danych poprzez identyfikację i usunięcie głównych składników odpowiadających zaszumionym częściom danych.
  8. Wizualizacja: PCA można wykorzystać do wizualizacji danych wielowymiarowych w przestrzeni o niższych wymiarach, co ułatwia ich interpretację i zrozumienie. Projektując dane na główne komponenty, można łatwiej wizualizować wzorce i relacje między zmiennymi.

Metoda osi głównej: PCA zasadniczo przeszukuje liniową kombinację zmiennych, dzięki czemu możemy wyodrębnić maksymalną wariancję ze zmiennych. Po zakończeniu tego procesu usuwa go i szuka innej kombinacji liniowej, która daje wyjaśnienie maksymalnej proporcji pozostałej wariancji, co zasadniczo prowadzi do czynników ortogonalnych. W tej metodzie analizujemy wariancję całkowitą.

Wektor własny: Jest to wektor niezerowy, który po pomnożeniu macierzy pozostaje równoległy. Załóżmy, że x jest wektorem własnym wymiaru r macierzy M o wymiarze r*r, jeśli Mx i x są równoległe. Następnie musimy rozwiązać Mx=Ax, gdzie nieznane są zarówno x, jak i A, aby uzyskać wektor własny i wartości własne.
W ramach wektorów własnych możemy powiedzieć, że składowe główne wykazują zarówno wspólną, jak i unikalną wariancję zmiennej. Zasadniczo jest to podejście skoncentrowane na wariancji, którego celem jest odtworzenie całkowitej wariancji i korelacji ze wszystkimi składnikami. Główne składniki to w zasadzie liniowe kombinacje oryginalnych zmiennych ważone ich wkładem w wyjaśnienie wariancji w określonym wymiarze ortogonalnym.

Własne wartości: Jest to zasadniczo znane jako charakterystyczne korzenie. Zasadniczo mierzy wariancję wszystkich zmiennych, która jest wyjaśniana przez ten czynnik. Stosunek wartości własnych to stosunek wyjaśniającej ważności czynników w odniesieniu do zmiennych. Jeśli współczynnik jest niski, w mniejszym stopniu przyczynia się do wyjaśnienia zmiennych. Krótko mówiąc, mierzy wielkość wariancji w całkowitej danej bazie danych uwzględnionej przez czynnik. Wartość własną współczynnika możemy obliczyć jako sumę kwadratów jego ładunku czynnikowego dla wszystkich zmiennych.



Teraz zrozumiemy analizę głównych składowych w Pythonie.

Aby pobrać zbiór danych wykorzystany w implementacji kliknij Tutaj .

Krok 1: Importowanie bibliotek

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

Krok 2: Importowanie zbioru danych

Zaimportuj zbiór danych i rozdziel go na komponenty X i Y w celu analizy danych.

Pyton
# 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>


Krok 3: Podział zbioru danych na zbiór uczący i testowy

ciąg jest pusty
Pyton
# 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)>

Krok 4: Skalowanie funkcji

Wykonanie części przetwarzania wstępnego na zestawie treningowym i testowym, takiej jak dopasowanie skali Standard.

Pyton
# performing preprocessing part from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)>

Krok 5: Stosowanie funkcji PCA

Zastosowanie funkcji PCA do zbioru uczącego i testującego do analizy.

Pyton
# 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_>

Krok 6: Dopasowanie regresji logistycznej do zbioru uczącego

Pyton
# Fitting Logistic Regression To the training set from sklearn.linear_model import LogisticRegression classifier = LogisticRegression(random_state = 0) classifier.fit(X_train, y_train)>

Wyjście:

jak znaleźć zablokowane numery na Androidzie

Krok 7: Przewidywanie wyniku zestawu testowego

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


Krok 8: Tworzenie macierzy zamieszania

wielkaandra
Pyton
# making confusion matrix between # test set of Y and predicted value. from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)>


Krok 9: Przewidywanie wyniku zbioru uczącego

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

Wyjście:

Krok 10: Wizualizacja wyników zestawu testowego

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

Możemy wizualizować dane w nowej przestrzeni komponentów głównych:

Pyton
# 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 jest prosty przykład wykonania PCA przy użyciu Pythona. Dane wyjściowe tego kodu będą wykresem punktowym pierwszych dwóch głównych składników i ich wyjaśnionego współczynnika wariancji. Wybierając odpowiednią liczbę głównych składników, możemy zmniejszyć wymiarowość zbioru danych i poprawić nasze zrozumienie danych.