最新 RSS

horiday blog

2006/4/23

[tool] som_pak 日本語ラベル出力

以前 som_pak で国立大学 法人化 1 年目の財務諸表をマップにしてみましたが,オリジナルの som_pak では日本語のラベルが出力できないと言われたので変更方法を書いておきます.マップ出力のフォントの部分を日本語フォントに書換えたらできました.手順は下記のような感じです.

% wget http://www.cis.hut.fi/research/som_pak/som_pak-3.1.tar
% tar xvf som_pak-3.1.tar
% cd som_pak-3.1
% foreach i (*.c *.h) do     
  sed -i.bak -e 's/Helvetica/GothicBBB-Medium-EUC-H/g' $i
  done
% make -f makefile.unix

試しにここで書いてある 16 種類の動物のデータを日本語ラベルでマップにしてみます.

まず下記のデータファイル animal-ja.dat(日本語 euc コード)として用意します(1行目の 16 はベクトルの次元数).

16
1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0.5 ハト
0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0.5 キツネ 
1 0 0 0 1 0 0 0 0 1 0.3 0 0 1 1 0.5 メンドリ 
0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0.5 ライオン 
1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 ガチョウ 
0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 ワシ 
0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 イヌ 
0 1 0 0.5 0 1 1 0 0 0 0 1 0 0 0 0 オオカミ 
0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 シマウマ 
1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 アヒル 
1 0 0 0.5 0 1 1 0 0 0 0 1 0 0 0 0 ネコ 
1 0 1 0.5 0 1 1 0 0 0 1 1 1 0 0 0 フクロウ 
0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 トラ 
0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 ウマ 
1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 タカ 
0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 ウシ

そして下記の手順でマップファイル(uma)を作成します.

% ./randinit -din animal-ja.dat -cout animal-ja.cod \
-xdim 10 -ydim 10 -topol hexa -neigh bubble -rand 123
% ./vsom -din animal-ja.dat -cin animal-ja.cod \
-cout animal-ja.cod -rlen 1000 -alpha 0.05 -radius 10 -rand 1
% ./vsom -din animal-ja.dat -cin animal-ja.cod \ 
-cout animal-ja.cod -rlen 10000 -alpha 0.02 -radius 3 -rand 1 
% ./vcal -numlabs 1 -din animal-ja.dat -cin animal-ja.cod -cout animal-ja.cod 
% ./visual -din animal-ja.dat -cin animal-ja.cod -dout animal-ja.vis
% ./sammon -cin animal-ja.cod -cout animal-ja.sam -rlen 100 -ps
% ./umat -numlabs 1 -cin animal-ja.cod -average 1 -eps -o animal-ja.uma

出来た animal-ja.uma がマップファイルで下記のようになると思います.

また SOM ノード間の距離を示したサモンマップは下記のような感じ.

その他 som_pak で参考になりそうなページ:

ただオリジナルの som_pak には仕組み的に batch som など少し改良した方が良いところもあるのかなと思います.このあたりはまた調べて書きます.