t-SNE에는 복잡도(perplexity) 및 학습률(엡실론(epsilon))과 같은 하이퍼파라미터가 있지만 이 예제에서는 생략했습니다(즉, 사이킷런 기본값을 사용했습니다). 실제로는 이런 매개변수도 살펴보는 것이 좋습니다. 이런 매개변수와 결과에 미치는 영향에 대한 자세한 내용을 Distill에 있는 훌륭한 글15에서 확인할 수 있습니다.
마지막으로 다음 코드를 사용하여 2D t-SNE 임베딩을 시각화해 보겠습니다.
>>> import matplotlib.patheffects as PathEffects
>>> def plot_projection(x, colors):
... f = plt.figure(figsize=(8, 8))
... ax = plt.subplot(aspect='equal')
... for i in range(10):
... plt.scatter(x[colors==i, 0],
... x[colors==i, 1])
... for i in range(10):
... xtext, ytext = np.median(x[colors==i, :], axis=0)
... txt = ax.text(xtext, ytext, str(i), fontsize=24)
... txt.set_path_effects([
... PathEffects.Stroke(linewidth=5, foreground="w"),
... PathEffects.Normal()])
>>> plot_projection(X_digits_tsne, y_digits)
>>> plt.show()