ATNDはアテンションのデータとしても興味深いわけで、ATteNtion Dataとして使ってみたいなぁと常々かんがえていたわけですが。
静岡javaScript勉強会が丁度よさげなデータだったので、対象者の参加した他のイベントに参加(1)不参加(0)っていう10のビットをフィンガープリントとして bayonを使ってクラスタリングをしてみた。
import json import requests import time event_id = 19418 event_url = "http://api.atnd.org/events/users/?event_id=%d&format=json" % event_id r = requests.get(event_url) ev = json.loads(r.text) for u in ev['events'][0]['users']: nickname = u['nickname'] user_url = "http://api.atnd.org/events/users/?user_id=%d&format=json" % u['user_id'] r = requests.get(user_url) ev = json.loads(r.text) events = [str(e['event_id']) + "\t1" for e in ev['events']] print "%s\t%s" % (nickname, "\t".join(events)) time.sleep(1)
これでTSVのファイルを吐くので、js.tsvとでもしてbayonで実行する。44人いるので6クラスにわけてみた。
$ bayon -n 6 js.tsv 1 まあこ logicraft y.yabe tomof 2 Kaz_110 yukio.47 secondarykey となか ando_ando_ando harumakiyukko keito5656 3 polidog でみ/DEMi k0sukey 4 tano4510 bontakun_R aalt wangzhi planpot オーイシ 5 Hotti kawario you39 ahonuishino jamireon motokix _wa_ toniokatanuki Wataru \ Yokoyama deep keiyuyama haru_iida fmmfm enkue dongame Shinichi Nabeta nckt \ muchico Lasty 6 fujimaruJP w1mvy taka2geek eibiisii iori_ma
5群はその他をまとめた感じですね。1群はフロントエンド寄りの人達で、2群はサーバーまわりを好む人達ですね。3,4群は地理的な制約も受けてるのかなぁと思ってそれぞれの人達の参加したイベント眺めてみたんだけど別れ方がよくわからん。クラスタ数を小さくしてっても3群はなかなかどこにもマージされんしなぁ。ネガティブな特徴(不参加の状況が似ている)が出ているんだろうかねぇ。