古い記事
ランダムジャンプ
新しい記事
公式サイトにあるCのコードを比較的素直に Perl に移植しました。もともとがメモリ効率重視な実装なので、Perl っぽい書き換えをもうちょっとやった方がいいんだろうけど、とりあえずはこれで。(単に力尽きただけ……)

元のCのソースはこちら:
http://www.psi.toronto.edu/affinitypropagation/apcluster_unsupported.txt

今回実装した Perl のソースはこちら:
http://chalow.net/misc/src/ap.pl

随時修正します。

実行例:
% ./ap.pl ToyProblem/Similarities.txt ToyProblem/Preferences.txt output.txt

Number of identified clusters: 3
Fitness (net similarity): -116.689864
  Similarities of data points to exemplars: -70.006096
  Preferences of selected exemplars: -46.683768
Number of iterations: 54

% cat output.txt 
3
3
3
3
3
3
7
7
7
7
3
7
3
7
7
20
20
20
20
20
20
3
20
20
7

結果はCのと同じになるけど、ちょっと遅めです。まあ当然ですが。

関連記事


- Affinity Propagation についてのリンク集[2014-07-05-2]