MNISTデータセットをT-SNEで可視化
Page content
scikit learnからMNISTデータセットを取得して、T-SNEを適応した後に描画する。
from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original')
type(mnist)
sklearn.utils.Bunch
ランダムに10000
のデータを選択する
import numpy as np
np.random.seed(42)
m = 10000
idx = np.random.permutation(60000)[:m]
idx
array([12628, 37730, 39991, ..., 3256, 14474, 41816])
Yはtargetで、1-9までの数値に当てはまる。
X = mnist['data'][idx]
Y = mnist['target'][idx]
MNISTを2次元のデータに変換するのは2分ぐらいかかります。
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, random_state=42)
X_reduced = tsne.fit_transform(X)
変換したテータを描画して、クラスタになっていることを確認する。
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.figure(figsize=(13,10))
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=Y, cmap="jet")
plt.colorbar()
plt.show()