소개
이 실습에서는 증분 주성분 분석 (IPCA) 알고리즘을 사용하여 아이리스 데이터셋에 차원 축소를 단계별로 수행하는 방법을 안내합니다. IPCA 는 데이터셋이 메모리에 맞지 않을 때, 증분 방식이 필요한 경우에 사용됩니다. 이 실습에서는 전통적인 주성분 분석 (PCA) 알고리즘과 IPCA 알고리즘의 결과를 비교해 봅니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 Jupyter Notebook을 연습에 사용할 수 있습니다.
때때로 Jupyter Notebook 이 로드되는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.
라이브러리 가져오기
NumPy, Matplotlib, scikit-learn 의 PCA 및 IPCA 모듈 등 필요한 라이브러리를 가져옵니다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA, IncrementalPCA
데이터 로드
scikit-learn 의 datasets 모듈에서 아이리스 데이터셋을 로드합니다.
iris = load_iris()
X = iris.data
y = iris.target
IPCA 수행
IPCA 클래스의 인스턴스를 초기화하고 데이터에 맞춰 적용하여 아이리스 데이터셋에 IPCA 를 수행합니다.
n_components = 2
ipca = IncrementalPCA(n_components=n_components, batch_size=10)
X_ipca = ipca.fit_transform(X)
PCA 수행
PCA 클래스의 인스턴스를 초기화하고 데이터에 맞춰 적용하여 아이리스 데이터셋에 PCA 를 수행합니다.
pca = PCA(n_components=n_components)
X_pca = pca.fit_transform(X)
결과 시각화
IPCA 및 PCA 의 결과를 변환된 데이터를 산점도에 표시하여 시각화합니다.
colors = ["navy", "turquoise", "darkorange"]
for X_transformed, title in [(X_ipca, "Incremental PCA"), (X_pca, "PCA")]:
plt.figure(figsize=(8, 8))
for color, i, target_name in zip(colors, [0, 1, 2], iris.target_names):
plt.scatter(
X_transformed[y == i, 0],
X_transformed[y == i, 1],
color=color,
lw=2,
label=target_name,
)
if "Incremental" in title:
err = np.abs(np.abs(X_pca) - np.abs(X_ipca)).mean()
plt.title(title + " of iris dataset\nMean absolute unsigned error %.6f" % err)
else:
plt.title(title + " of iris dataset")
plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.axis([-4, 4, -1.5, 1.5])
plt.show()
요약
이 실습에서는 아이리스 데이터셋에 차원 축소를 수행하기 위해 증분 주성분 분석 (IPCA) 알고리즘을 사용하는 방법을 배웠습니다. 우리는 전통적인 PCA 와 IPCA 의 결과를 비교하고 변환된 데이터를 산점도에 시각화했습니다. IPCA 는 데이터셋이 메모리에 맞지 않을 정도로 크고 증분 접근 방식이 필요할 때 유용합니다.