はじめに
t-SNE(t-Distributed Stochastic Neighbor Embedding)は、高次元データセットを可視化するために使用される次元削減技術です。このチュートリアルでは、Python の scikit-learn ライブラリを使用して t-SNE を使ってデータセットを可視化するプロセスを案内します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、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 の使用方法を示すために、3 つの異なるデータセットを作成します。最初のデータセットは、2 つの同心円です。
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 を繰り返すことができます。
まとめ
このチュートリアルでは、Python の scikit - learn ライブラリを使って高次元データセットを可視化するための t - SNE の使い方を段階的に説明しました。データの作成方法、データの可視化方法、データに t - SNE を適用する方法、および t - SNE の結果を可視化する方法を学びました。