公開されているライブラリを使って画像データを二次元データに圧縮して散布図としてプロットしてみます。
今回はT-SNEというアルゴリズムを使います。ライブラリが公開されているので、それを使うだけですので、すごい簡単です。
イメージとしては以下になります。
データはMNISTを使います。
コードはライブラリを使うのでめちゃくちゃ簡単です。以下のようになります。
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
import tensorflow as tf
from tensorflow.keras import datasets
(x_train, y_train), (x_test, y_test) = datasets.fashion_mnist.load_data()
x_train = x_train[:2000]
x_train = tf.reshape(x_train, (x_train.shape[0],x_train.shape[1]*x_train.shape[2]))
y_train = y_train[:2000]
X_reduced = TSNE(n_components=2, random_state=0).fit_transform(x_train)
plt.figure(figsize=(14,10))
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y_train, cmap="tab10")
plt.colorbar()
MNISTのデータのうち使うのは2000個だけにしておきます(計算時間がかかるので)。
上のコードを実行すると以下のような散布図が出てきます。
だいたいですが、クラスごとに分かれていることが確認できます。
T-SNE様様です。
コメント