고차원 데이터 시각화를 위한 t-SNE

Beginner

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

소개

t-SNE (t-분포 확률적 이웃 임베딩) 는 고차원 데이터셋을 시각화하는 데 사용되는 차원 축소 기술입니다. 이 튜토리얼에서는 파이썬의 scikit-learn 라이브러리를 사용하여 t-SNE 를 통해 데이터셋을 시각화하는 과정을 안내합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 가져오기

이 튜토리얼에서 필요한 라이브러리를 가져옵니다.

import numpy as np
import matplotlib.pyplot as plt

from matplotlib.ticker import NullFormatter
from sklearn import manifold, datasets
from time import time

데이터 생성

t-SNE 의 사용을 보여주기 위해 세 가지 다른 데이터셋을 생성합니다. 첫 번째 데이터셋은 두 개의 동심원입니다.

n_samples = 150
n_components = 2

X, y = datasets.make_circles(
    n_samples=n_samples, factor=0.5, noise=0.05, random_state=0
)

red = y == 0
green = y == 1

데이터 시각화

산점도를 사용하여 동심원 데이터셋을 시각화할 수 있습니다.

ax = plt.subplot(1, 1, 1)
ax.scatter(X[red, 0], X[red, 1], c="r")
ax.scatter(X[green, 0], X[green, 1], c="g")
ax.xaxis.set_major_formatter(NullFormatter())
ax.yaxis.set_major_formatter(NullFormatter())
plt.axis("tight")

t-SNE 적용

다음으로, 동심원 데이터셋에 t-SNE 를 적용합니다.

t0 = time()
tsne = manifold.TSNE(
    n_components=n_components,
    init="random",
    random_state=0,
    perplexity=perplexity,
    n_iter=300,
)
Y = tsne.fit_transform(X)
t1 = time()

t-SNE 결과 시각화

마지막으로, 산점도를 사용하여 t-SNE 결과를 시각화할 수 있습니다.

ax = plt.subplot(1, 1, 1)
ax.scatter(Y[red, 0], Y[red, 1], c="r")
ax.scatter(Y[green, 0], Y[green, 1], c="g")
ax.xaxis.set_major_formatter(NullFormatter())
ax.yaxis.set_major_formatter(NullFormatter())
plt.axis("tight")

다른 데이터셋에 대해 반복

S-곡선이나 2 차원 균일 그리드와 같은 다른 데이터셋에 대해서도 2 단계부터 5 단계까지의 과정을 반복할 수 있습니다.

요약

이 튜토리얼에서는 파이썬의 scikit-learn 라이브러리를 사용하여 고차원 데이터셋을 시각화하기 위한 t-SNE 사용법을 단계별로 안내했습니다. 데이터 생성, 데이터 시각화, 데이터에 t-SNE 적용, 그리고 t-SNE 결과 시각화 방법을 배웠습니다.