t-SNEとは?
データの可視化のため、低次元空間へ埋め込みに適切な非線形次元削減手法の1つ。
- 教師なし学習の1つ
- SNEという次元削減アルゴリズムを改良した手法
〇t=SNEの使い方
<手順①>ライブラリのインポート
from sklearn.manifold import TSNE
<手順②>インスタンス作成
tsne = TSNE( )
<手順③>次元削減
tsne.fit_transform(X)
〇t-SNEの使用方法
sklearn.manifoldの中からTSNEというモジュールをインポートします。
【TSNE()の引数】
・引数n_components:削減次元数(デフォルトは2)
・引数perplexity:最近傍の数(デフォルトは30)
・引数early_exaggeration:密集度合の設定(デフォルトは12.0)
・引数learning_rate:t-SNEの学習率(デフォルトは200.0)
・引数n_iter:最適化の最大反復回数(デフォルトは1000)
・引数random_state: 乱数
・引数n_jobs: 並列処理する場合の多重度(デフォルトは1)
【クラスのメソッド】
・fit(X):計算の実行
・fit_transform(X): 変換された出力を表示する
・gets_params: パラメータの取得
・set_params: パラメータの設定
t-SNEだけでは花の分類を行うことはできませんが、k-means法などのクラスタリング手法を使うことでデータの分類を行うことが可能となります。
〇t-SNEを使った次元圧縮
# ライブラリのインポート
from sklearn.datasets import load_iris
from sklearn.manifold import TSNE
iris = load_iris()
X = iris.data
y = iris.target
また次元削減前の説明変数の大きさも確認しておきましょう。
In [1]: X.shape
Out[1]: (150, 4)
現状は4次元のデータとなっているので、t-SNEを行い2次元に次元削減を行なってみましょう。
t-SNEの場合、作成したインスタンスに対して、fit_transformを使ってデータの次元削減を行います。
# インスタンス作成
tsne = TSNE(n_components=2,random_state=0)
次元削減の変数の大きさも確認してみましょう。次元が指定の2次元となっていることが確認できます。
In [2]: print(tsne.fit_transform(X).shape)
Out[2]: (150, 2)