Внутри Ай

Что такое PCA и как мы можем применить Real Quick and Easy Way?

Узнайте, как применять анализ основных компонентов (PCA) с помощью python.

Что такое анализ главных компонентов (АГК)?

Анализ основных компонентов или PCA — это статистическая процедура, которая позволяет нам суммировать/извлекать единственные важные данные, объясняющие весь набор данных.

Анализ главных компонент на сегодняшний день является одним из самых популярных многомерных статистических методов. PCA — основной метод многомерного анализа данных MVDA

Он широко используется в областях распознавания образов и обработки сигналов, а также в статистическом анализе для уменьшения размерности, проще говоря, для понимания и извлечения только важных факторов, объясняющих все данные. Это помогает избежать обработки ненужных данных.

Давайте разберемся с этим на примере:

В этом примере мы будем использовать один из известных доступных наборов данных «wine_quality», где у нас есть ключевые факторы компонентов вина и его потребителя.

Что мы будем делать, так это с помощью PCA мы попытаемся выяснить несколько ключевых факторов компонентов, которые описывают весь набор данных, и для проверки мы проверим его с помощью показателей производительности.

Давайте начнем!

Сначала мы импортируем необходимые библиотеки и импортируем набор данных, затем определяем нашу независимую переменную X и зависимую переменную y, а затем разделяем набор данных на обучение и тестирование.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('Wine.csv')
X = dataset.iloc[:, 0:13].values
y = dataset.iloc[:, 13].values
#Splitting the dataset into the Training set and Test 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)

Мы также нормализуем/масштабируем данные в общий диапазон, чтобы уменьшить величину/разброс точек данных без потери их первоначального значения.

#Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

Пришло время применить PCA!

#Applying PCA
from sklearn.decomposition import PCA
pca = PCA(n_components = 3)
X_train = pca.fit_transform(X_train)
X_test = pca.transform(X_test)

N_components дают нам 3 важных компонента/столбца, которые объясняют большую часть набора данных.

Теперь извлечения сделаны из наших независимых переменных X_train и X_test, давайте посмотрим, что мы получили в наших X_train и X_test.

И да, я думаю, вы знаете, что нам не нужно снова писать «pca.fit…..», достаточно просто «pca.transform». Python автоматически узнает, что вы используете PCA для этой цели преобразования.

Теперь, используя объясненную_вариантность, мы можем понять, насколько каждый из трех основных компонентов объясняет.

Хорошо, это 65%

Если мы хотим просмотреть, насколько каждая переменная объясняет весь набор данных, просто замените n_components = 3 на «n_components = None» и на «explained_variance = pca.explained_variance_ratio_' вы увидите высокие оценки трех самых верхних компонентов.

Примечание: в PCA. Как вы видели, компоненты отсортированы по шкале от наивысшей к низшей. Поэтому трудно определить, какие компоненты соответствуют конкретному столбцу набора данных. Для решения этой проблемы у нас есть еще один метод, называемый Feature Selection, о котором мы поговорим в следующей статье. Подписывайтесь и оставайтесь с нами!

Таким образом, PCA очень полезен, когда дело доходит до анализа больших данных, когда у вас есть 100 000 столбцов, и обработка всех их, конечно, требует много времени, и где прогнозное моделирование для прогнозирования будущего события важнее, чем просто анализ.

Теперь пришло время вписать наши данные в модель и проверить, насколько точно мы можем получить

# Fitting Logistic Regression to the Training set
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)
# Predicting the Test set results
y_pred = classifier.predict(X_test)

Здесь, как вы можете видеть, мы используем логистическую регрессию, random_state — это просто начальное число, чтобы избежать случайности для набора данных при каждом вычислении алгоритма. Затем мы будем прогнозировать с невидимыми данными (X_test)

Мы будем использовать нашу обычную матрицу путаницы, а затем метрику оценки точности.

# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#Another evaluation Metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))

Ничего себе, у нас есть 100% -ная оценка точности, даже в матрице путаницы (см), которая способна идеально предсказать класс для нашего тестового набора данных (невидимые данные).

Давайте повторим с 5 n_components и посмотрим, сможем ли мы взять больше компонентов.

#Splitting the dataset into the Training set and Test 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)
#Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#Applying PCA
from sklearn.decomposition import PCA
pca = PCA(n_components = 5)
X_train = pca.fit_transform(X_train)
X_test = pca.transform(X_test)
explained_variance = pca.explained_variance_ratio_
#Fitting Logistic Regression to the Training set
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)
#Predicting the Test set results
y_pred = classifier.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#Another evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))

Ну, производительность ухудшилась до 97%. Таким образом, 3 n_components объясняют 100% набора данных. Поэтому мы можем использовать эти 3 n_components из 13 компонентов (столбцов) для создания прогнозируемой модели со 100% точностью.

Теперь подумайте об этом, имея более 10000 столбцов, и мы можем извлечь только несколько основных компонентов, которые объясняют весь набор данных.

Только представьте, насколько полезным будет анализ основных компонентов PCA.

Давайте сложим все части воедино.

#Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Importing the dataset
dataset = pd.read_csv('Wine.csv')
X = dataset.iloc[:, 0:13].values
y = dataset.iloc[:, 13].values
#Splitting the dataset into the Training set and Test 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)
#Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#Applying PCA
from sklearn.decomposition import PCA
pca = PCA(n_components = 3)
X_train = pca.fit_transform(X_train)
X_test = pca.transform(X_test)
explained_variance = pca.explained_variance_ratio_
#Fitting Logistic Regression to the Training set
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)
#Predicting the Test set results
y_pred = classifier.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#Another evaluation Metrics 
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))
#---------------------------------------------------------------
#Let's redo and check the accuracy of our model with 5 components
#Splitting the dataset into the Training set and Test 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)
#Feature Scaling
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
#Applying PCA
from sklearn.decomposition import PCA
pca = PCA(n_components = 5)
X_train = pca.fit_transform(X_train)
X_test = pca.transform(X_test)
explained_variance = pca.explained_variance_ratio_
#Fitting Logistic Regression to the Training set
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)
#Predicting the Test set results
y_pred = classifier.predict(X_test)
#Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
#Another evaluation Metrics 
from sklearn import metrics
print('Accuracy Score:', metrics.accuracy_score(y_test, y_pred))

Теперь для тех, кто хочет выполнять PCA с программированием на R, у меня есть совершенно новый курс для выполнения различных типов PCA. PCA с большими данными, PCA с случайным лесом, далее разделенным на классификацию и регрессию , PCA с обобщенными усиленными моделями (GBM), PCA с обобщенными линейными моделями (GLMNET), PCA с Ensemble, PCA с fscaret и многое другое.

Обратили ли вы внимание на то, что PCA, которую мы только что провели, НЕ НАБЛЮДАЕТСЯ? да это

Далее мы увидим другой тип PCA, линейный дискриминантный анализ (LDA) или PCA с учителем.

Спасибо, что уделили время дочитать до конца. Я изо всех сил старался сделать его кратким и простым, имея в виду, что этот код можно использовать в повседневной жизни.

Я надеюсь, что вам понравилось.

Не стесняйтесь спрашивать, потому что «любопытство ведет к совершенству».

Некоторые из моих альтернативных сайтов в Интернете: Facebook, Instagram, Udemy, Blogger, Issuu и другие.

Также доступно на Quora @ https://www.quora.com/profile/Rupak-Bob-Roy

Следите за обновлениями.! хорошего дня….

~ Будьте счастливы и наслаждайтесь!