single
Приклади реальних проблем
Свайпніть щоб показати меню
Розглянемо реальний приклад застосування методу PCA. Імпортуємо бібліотеки, з якими будемо працювати:
# Лінійна алгебра та обробка даних
import numpy as np
import pandas as pd
з sklearn.preprocessing import StandardScaler
# Модель PCA
from sklearn.decomposition import PCA
# Візуалізація даних
import seaborn as sns
import matplotlib.pyplot as plt
Далі зчитується файл train.csv (з інтернету), який містить дані про продаж будинків з характеристиками будинків та їхніми цінами:
data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/7b22c447-77ad-48ae-a2d2-4e6714f7a4a6/train_S1.csv')
Обробимо наші дані. Цей процес включає в себе видалення багатьох характеристик з набору даних (ми залишимо лише 10 змінних - так нам буде легше працювати з отриманими результатами, щоб не було занадто багато характеристик), а також масштабування даних:
# Стовпці, які залишаться
columns_ndrop = ['YearBuilt', 'LotArea', 'MSSubClass', 'OverallQual', 'SalePrice', 'PoolArea', 'GarageArea', 'BedroomAbvGr', 'KitchenAbvGr', 'Каміни'].
data = data.drop(data.columns.difference(columns_ndrop), 1)
data_sc = StandardScaler().fit_transform(data)
Створимо модель PCA:
pca = PCA(n_components = 3, whiten = True)
pca = pca.fit(data_sc)
Тепер, щоб пояснити отримані результати, ми створимо теплову карту факторного навантаження. У наступному розділі ми дізнаємось, навіщо вона нам потрібна.
factor_analysis = pca.components_.T * np.sqrt(pca.explained_variance_)
fig, ax = plt.subplots(figsize=(3, 20))
sns.heatmap(factor_analysis, xticklabels = ["C1", "C2", "C3"],
yticklabels = data_sc.columns, annot = True,
cmap = "YlGnBu")
plt.show()
Всього за кілька кроків ми зменшили розмірність набору даних з 10 характеристик до 3! У наступному розділі ми спробуємо інтерпретувати результати PCA.
Проведіть, щоб почати кодувати
Прочитати набір даних train.csv (з Інтернету) і створити для нього PCA модель. Вона повинна містити 4 основні компоненти.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат