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()

png

About Wang Zhijun
機械学習好きなプログラマー