아이리스 데이터셋에 대한 증분 주성분 분석

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 증분 주성분 분석 (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 는 데이터셋이 메모리에 맞지 않을 정도로 크고 증분 접근 방식이 필요할 때 유용합니다.