Введение
Анализ главных компонент (PCA - Principal Components Analysis) - это статистический метод, используемый для упрощения данных. Это линейное преобразование, которое позволяет выявить наиболее важные признаки или шаблоны в данных. PCA широко применяется в анализе данных и машинном обучении для уменьшения размерности, сжатия данных и извлечения признаков. В этом практическом занятии мы будем использовать библиотеку scikit-learn для выполнения PCA на наборе данных и визуализации результатов.
Советы по использованию ВМ
После запуска виртуальной машины перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике в Jupyter Notebook.
Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы столкнетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем библиотеки
Начнем с импорта необходимых библиотек для этого практического занятия. Будем использовать numpy для численной обработки, matplotlib для визуализации и scikit-learn для PCA.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
Создаем данные
Для этого практического занятия сгенерируем случайный набор данных. В наборе данных будут три переменные: x, y и z. Определим x и y как нормально распределенные случайные переменные со средним значением 0 и стандартным отклонением 0,5. z также нормально распределена со средним значением 0 и стандартным отклонением 0,1.
e = np.exp(1)
np.random.seed(4)
y = np.random.normal(scale=0.5, size=(30000))
x = np.random.normal(scale=0.5, size=(30000))
z = np.random.normal(scale=0.1, size=len(x))
Выполняем анализ главных компонент (PCA)
Далее мы выполним анализ главных компонент для нашего набора данных. Сначала объединим x, y и z, чтобы сформировать трехмерный массив Y. Затем создадим экземпляр класса PCA и подгоним его под наши данные. Затем мы можем получить доступ к главным компонентам с помощью атрибута components_ объекта PCA.
Y = np.c_[x, y, z]
pca = PCA(n_components=3)
pca.fit(Y)
components = pca.components_
Визуализируем результаты анализа главных компонент (PCA)
Мы можем визуализировать результаты нашего анализа главных компонент, построив главные компоненты. Создадим трехмерный точечный график наших данных и покрасим каждую точку в зависимости от ее плотности. Затем построим первые две главные компоненты в виде плоскости. Повторим этот процесс для двух различных представлений данных.
fig = plt.figure(figsize=(10, 5))
## Первое представление
ax = fig.add_subplot(121, projection="3d", elev=-40, azim=-80)
ax.set_title("Представление 1")
## Строим данные
density = np.exp(-(x ** 2 + y ** 2))
ax.scatter(x, y, z, c=density, cmap="plasma", marker="+", alpha=0.4)
## Строим главные компоненты
v1 = components[:, 0]
v2 = components[:, 1]
x_pca_plane = np.array([v1[0], -v1[0], -v1[0], v1[0]])
y_pca_plane = np.array([v1[1], -v1[1], -v1[1], v1[1]])
z_pca_plane = np.array([v1[2], -v1[2], v1[2], v1[2]])
ax.plot_surface(x_pca_plane, y_pca_plane, z_pca_plane, alpha=0.2)
## Второе представление
ax = fig.add_subplot(122, projection="3d", elev=30, azim=20)
ax.set_title("Представление 2")
## Строим данные
density = np.exp(-(x ** 2 + y ** 2))
ax.scatter(x, y, z, c=density, cmap="plasma", marker="+", alpha=0.4)
## Строим главные компоненты
v1 = components[:, 0]
v2 = components[:, 1]
x_pca_plane = np.array([v1[0], -v1[0], -v1[0], v1[0]])
y_pca_plane = np.array([v1[1], -v1[1], -v1[1], v1[1]])
z_pca_plane = np.array([v1[2], -v1[2], v1[2], v1[2]])
ax.plot_surface(x_pca_plane, y_pca_plane, z_pca_plane, alpha=0.2)
plt.show()
Резюме
В этом практическом занятии мы узнали, как выполнить анализ главных компонент (PCA) для набора данных с использованием библиотеки scikit-learn в Python. Мы сгенерировали случайный набор данных с тремя переменными, выполнили PCA и визуализировали результаты. Мы построили данные в трехмерном точечном графике и добавили плоскость для первых двух главных компонент. PCA - это мощный метод для уменьшения размерности данных и поиска наиболее важных паттернов или признаков.