소개
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 결과 시각화 방법을 배웠습니다.