自己組織化マップ(SOM)のPythonライブラリsompyを公開しました
自己組織化マップ(Self Organizing Map: SOM)のライブラリを公開してみたので、インストール、使い方とともに紹介します。Python2.7でnumpy基盤のライブラリです。既存のSOMPYというのもあるのですが、かなり使いにくかったので作りました。まだ至らない部分が多いですが、パッと使いたい時などにどうぞ。
SOMとは
自己組織化マップ(SOM)とは人工ニューラルネットの一種で、高次元データを低次元に落とし、教師なし学習でクラスタリングすることができます。これが自己組織化と言われる理由です。SOMは、データの分類,視覚化などを得意としています。詳しくは以下のリンクなどをご覧ください。
インストール
- Pythonのバージョン: Python 2.7
インストールはpipに登録したので、簡単です。
sudo pip install sompy
使い方
使い方は以下のデモを参照ください。
import numpy as np import matplotlib.pyplot as plt # SOMクラスをインポート from sompy import SOM # 入力ベクトルを設定 input_data = np.random.rand(1000, 3) # 出力するマップのサイズと次元数を定義、ここでは二次元マップ output_shape = (40, 40) # 出力サイズと入力ベクトルを設定 som = SOM(output_shape, input_data) # SOMのパラメータを設定(neighborは近傍の比率:初期値0.25、learning_rateは学習率:初期値0.1) som.set_parameter(neighbor=0.26, learning_rate=0.22) # 学習と出力マップの取得。引数は学習ループの回数 output_map = som.train(10000) plt.imshow(output_map, interpolation='none') plt.show()
実行結果
コントリビュータ募集
Batch-Learning SOM(BL-SOM)の実装ができていないので、どなたかよかったら実装よろしくお願いいたします。
ちなみにBatch-Learning SOMとは、データの入力順に左右されないように、SOMを一気に学習するスタイルのものです。
実装は大幅に変更しても全然大丈夫です。また、別のライブラリとして公開して頂いてもかまいません。興味のある方は是非。