LoginSignup
1
4

More than 3 years have passed since last update.

somocluでクラスタリング

Last updated at Posted at 2021-02-21

はじめに

somoclueというSOM(自己組織化マップ)ライブラリでクラスタリングをしてみたときにメモ。完全自分用メモ

環境

  • somoclue 1.7.5.1

手順

somocluのインストール

pip install somoclu

必要ライブラリのインストール

今回はirisを使う。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.manifold import TSNE
from sklearn.datasets import load_iris

irisのロード

おまじない。

iris_data = load_iris()

SOMによる学習とクラスタリング

実行すると自己組織化マップが得られる(図省略)


# セルの定義
n_rows = 16
n_cols = 24

som = Somoclu(n_rows=n_rows, n_columns=n_cols, compactsupport=False)

# 学習
som.train(data=iris_data.data, epochs=1000)

# K-meansでクラスタリング
kmeans = KMeans(n_clusters=5, random_state=42)

som.cluster(algorithm=kmeans)
som.view_umatrix(bestmatches=True, labels=iris_data.target)

クラスタリング結果の取得

How Can I get the cluster number or class for an specific data point? を参考にクラスタリング結果を取得。

cluster_ids = []
for i in range(len(x)):
  cluster_ids.append(som.clusters[som.bmus[i, 1], som.bmus[i, 0]])

tSNEの次元削減図に対し、クラスタのラベルをマッピング

実行するとスキャッタープロットが得られる(図省略)

tsn_model = TSNE(n_components=2)
tsn_result = tsn_model.fit_transform(iris_data.data)
plt.title("tSNA")
plt.scatter(tsn_result[:, 0], tsn_result[:, 1], c=cluster_ids)

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4