Вернуться на страницу brain2net: https://brain2net.ru/post/analiz-glavnyh-komponent-pca/
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
%matplotlib inline
# Загружаем набор данных cancer
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
# Масштабируем данные
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(cancer.data)
X_scaled = scaler.transform(cancer.data)
from sklearn.decomposition import PCA
# оставляем первые две главные компоненты
pca = PCA(n_components=2)
# подгоняем модель PCA на наборе данных breast cancer
pca.fit(X_scaled)
# преобразуем данные к первым двум главным компонентам
X_pca = pca.transform(X_scaled)
print("Форма исходного массива: {}".format(str(X_scaled.shape)))
print("Форма массива после сокращения размерности: {}".format(str(X_pca.shape)))
df_X = pd.DataFrame(X_scaled)
list_param = list(df_X.columns)
df_X['class'] = cancer.target
df_X0 = df_X[df_X['class'] == 0].copy()
df_X1 = df_X[df_X['class'] == 1].copy()
df_X0.drop(['class'], axis='columns', inplace=True)
df_X1.drop(['class'], axis='columns', inplace=True)
X0_pca = pca.transform(df_X0.values)
X1_pca = pca.transform(df_X1.values)
# строим график первых двух главных компонент, классы выделены цветом
plt.figure(figsize=(8, 8))
plt.plot(X0_pca[:, 0], X0_pca[:, 1],'bo')
plt.plot(X1_pca[:, 0], X1_pca[:, 1],'co')
#plt.plot(X_pca[:, 0], , cancer.target)
plt.legend(cancer.target_names, loc="best")
plt.gca().set_aspect("equal")
plt.xlabel("Первая главная компонента")
plt.ylabel("Вторая главная компонента")
plt.grid()
Главные компоненты могут быть сохранены в атрибуте components_ объекта PCA в ходе подгонки
print("форма главных компонент: {}".format(pca.components_.shape))
Каждая строка в атрибуте components соответствует одной главной компоненте и они отсортированы по важности (первой приводится первая главная компонента и т.д.). Столбцы соответствуют атрибуту исходных признаков для объекта PCA в этом примере, «mean radius», «mean texture» и т.д. Давайте посмотрим на содержимое атрибута components:
print("компоненты PCA:\n{}".format(pca.components_))
Построение "тепловой карты" главных компонент
plt.matshow(pca.components_, cmap='viridis')
plt.yticks([0, 1], ["Первая компонента", "Вторая компонента"])
plt.colorbar()
plt.xticks(range(len(cancer.feature_names)),
cancer.feature_names, rotation=60, ha='left')
plt.xlabel("Характеристика")
plt.ylabel("Главные компоненты")
Вернуться на страницу brain2net: https://brain2net.ru/post/analiz-glavnyh-komponent-pca/