多次元データの次元を削減し、2次元平面などで可視化するためにumapという手法がよく使用されるようです。
umap-learnというパッケージが活用すれば、pythonで実行できます。
今回は、jupyter lab上にumapの実行結果を表示する方法について紹介します。
インストール方法
conda install -c conda-forge umap-learn
実行例
sklearnのMNISTデータにumapを適用した例が以下になります。
作図パッケージのbokehを活用してインタラクティブな図が作図可能になっています。
図上のプロットに、マウスカーソルを合わせることで、hover_dataの内容を表示させることができます。
umapの機能を使用して作図する場合には、umapだけでなく、umap.plotをimportする必要があることに注意が必要です。
import sklearn.datasets
import pandas as pd
import numpy as np
import umap
import umap.plot #作図を実行するのに必要
from bokeh.plotting import show, save, output_notebook, output_file
# データセットのロード
fmnist = sklearn.datasets.fetch_openml('Fashion-MNIST')
# umapの実行
mapper = umap.UMAP(random_state=0).fit(fmnist.data[:30000])
# ラベルデータの準備
hover_data = pd.DataFrame({'index':np.arange(30000),
'label':fmnist.target[:30000]})
hover_data['item'] = hover_data.label.map(
{
'0':'T-shirt/top',
'1':'Trouser',
'2':'Pullover',
'3':'Dress',
'4':'Coat',
'5':'Sandal',
'6':'Shirt',
'7':'Sneaker',
'8':'Bag',
'9':'Ankle Boot',
}
)
# 可視化の準備
p = umap.plot.interactive(mapper, labels=fmnist.target[:30000], hover_data=hover_data, point_size=2)
# jupyter lab上での可視化
output_notebook()
output_notebook() #2回記載が必要
show(p)

表示データの内容
hover_dataのデータ内容は、以下のような形になります。

jupyter labで作図するときの注意
umap ver0.4.6時点では、jupyter labまたはnotebook上で、umap.plotの機能を使用すると、以下のようなエラーが表示されます。
AttributeError: module ‘umap.plot’ has no attribute ‘output_notebook’
以下のようにoutput_notebook()を二回実行することで、jupyter lab上でも表示が出来るようになるようです。
# jupyter lab上での可視化
output_notebook()
output_notebook() #2回記載が必要
show(p)
参考
AttributeError: module 'umap.plot' has no attribute 'output_notebook' · Issue #422 · lmcinnes/umap
import umap import umap.plot umap.__version__ '0.4.2'. After import umap in Jupyter notebook I get the same issue as in #321. I assumed that with version >0.4 i...
コメント