【入門,圧縮】画像を二次元のデータに圧縮してプロットする【T-SNE】

公開されているライブラリを使って画像データを二次元データに圧縮して散布図としてプロットしてみます。

今回は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様様です。

コメント

タイトルとURLをコピーしました