すぐ忘れるのでひとまずメモ。
データ分析にアソシエーション分析(バスケット分析)っていうのがある。Rを使ってやるんですが、これをやるとき、元ネタデータの整形をどうするかいっつも忘れるので特筆。
基本的には↓感じのデータを使う想定。
1課 2課 3課 4課 5課 6課 7課 8課 9課 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1
で、これをRのアソシエーション分析(arules)で使う場合、最終的に↓の感じに変換する。
1課,2課,3課 4課,5課 6課,7課,8課,9課
こんな感じのデータをトランザクションデータというらしい。
Rでこれをやる場合、トランザクションデータをそのまま読む場合は↓の感じ。
hoge.tran <- read.transactions("test.csv",sep=",",format="basket")
トランザクションデータの場合はこのままaruleに食わせられる。
hoge.ar <- apriori(hoge.tran) inspect(hoge.ar)
↓のタイプのデータを読む場合は
1課 2課 3課 4課 5課 6課 7課 8課 9課 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1
R上は↓の感じで読む
#CSVから読み込み hoge <- read.table("test.csv",header=TRUE,sep=",",row.names=1) #行列に変換 hoge.mat <- as(hoge,"matrix") #トランザクションに変換 hoge.tran <- as (hoge.mat,"transactions") #あとは一緒 hoge.ar <- apriori(hoge.tran) inspect(hoge.ar)
データフレームからは直で変換できないっぽいので行列に一回変換する。
まー結局、Rに食わせる用のデータ形式を色々準備しないとね。基本的にはアンケートの選択肢とか、商品のマスタとかマスタを全部横に並べて、0か1のON・OFFデータを作るのが一番楽かな。
数値系のデータは値の範囲でコード化してON/OFFのデータを作らないとダメかしらね。