2.1. mitemset アイテム集合列挙¶
多頻度アイテム集合を列挙する。 列挙のアルゴリズムにはlcmを用いている。 以下のような特徴を持っている。
分類階層を扱うことが可能
頻出パターン, 飽和頻出パターン, 極大頻出パターンの3種類のパターンを列挙可能
分類クラスを指定することで、上記3パターンに関する顕在パターン(emerging patterns)を列挙可能
パラメータ¶
i= : 型=str , 必須
アイテム集合データベースファイル名を指定する。
O= : 型=str , 任意(default=./take_現在日付時刻)
出力ディレクトリ名を指定する。
x= : 型=str , 任意(default=階層分類を使わない)
taxonomyファイル名を指定する。x=が指定されたとき、itemに対応するtaxonomyをトランザクションに追加して実行する。例えば、アイテムa,bのtaxonomyをX、c,dのtaxonomyをYとすると、あるトランザクションabdはabdXYとなる。ただしreplaceTaxoオプションが指定されると、taxonomyは追加ではなく置換して実行する。前例ではトランザクションabdはXYに置換される。
tid= : 型=str , 任意(default=tid)
トランザクションID項目名(i=上の項目名)
item= : 型=str , 任意(default=item)
アイテム項目名(i=,t=上の項目名)
cls= : 型=str , 任意(default=class)
クラス項目名(i=上の項目名)
taxo= : 型=str , 条件付き必須(x=指定時)
type= : 型=str , 任意(default=F)
抽出するパターンの型(F,C,M)を指定する。F:頻出集合, C:飽和集合, M:極大集合
s= : 型=float , 任意(default=0.05)
最小支持度(全トランザクション数に対する割合による指定)
S= : 型=int , 任意(default=1)
最小支持度(件数による指定)s=,S=共に指定しなければ、s=0.05が指定されたことになる。両方指定されれば、S=が優先される。
sx= : 型=float , 任意(default=1.0)
最大支持度(全トランザクション数に対する割合による指定)
Sx= : 型=bool , 任意(default=False)
最大支持度(件数による指定)sx=,Sx=共に指定しなければ、sx=1.0が指定されたことになる。両方指定されれば、Sx=が優先される。
l= : 型=int , 任意(default=制限なし)
パターンサイズ(アイテム数)の下限(1以上20以下の整数)
u= : 型=int , 任意(default=制限なし)
パターンサイズ(アイテム数)の上限(1以上20以下の整数)
p= : 型=float , 任意(default=0.5)
最小事後確率
g= : 型=float , 任意(default=制限なし)
最小増加率p=,g=共に指定しなければ、p=0.5が指定されたことになる。両方指定されれば、g=が優先される。
top= : 型=int , 任意(default=制限なし)
列挙するパターン数の上限を指定する。例えばtop=10と指定すると、支持度が10番目高いパターンの支持度を最小支持度として頻出パターンを列挙する。よって、同じ支持度のパターンが複数個ある場合は10個以上のパターンが列挙されるかもしれない。
replaceTaxo= : 型=bool , 任意(default=False)
taxonomyを置換する。
T= : 型=str , 任意(default=/tmp)
ワークディレクトリを指定する。
利用例¶
入力データの準備
1with open('dat1.csv','w') as f: 2 f.write( 3'''tid,item 4T1,C 5T1,E 6T2,D 7T2,E 8T2,F 9T3,A 10T3,B 11T3,D 12T3,F 13T4,B 14T4,D 15T4,F 16T5,A 17T5,B 18T5,D 19T5,E 20T6,A 21T6,B 22T6,D 23T6,E 24T6,F 25''') 26 27with open('dat2.csv','w') as f: 28 f.write( 29'''tid,item,class 30T1,C,cls1 31T1,E,cls1 32T2,D,cls1 33T2,E,cls1 34T2,F,cls1 35T3,A,cls1 36T3,B,cls1 37T3,D,cls1 38T3,F,cls1 39T4,B,cls1 40T4,D,cls1 41T4,F,cls1 42T5,A,cls2 43T5,B,cls2 44T5,D,cls2 45T5,E,cls2 46T6,A,cls2 47T6,B,cls2 48T6,D,cls2 49T6,E,cls2 50T6,F,cls2 51''') 52 53with open('taxo.csv','w') as f: 54 f.write( 55'''item,taxonomy 56A,X 57B,X 58C,Y 59D,Z 60E,Z 61F,Z 62''')
基本例
3件以上で出現する頻出アイテム集合を列挙する。
1import nysol.take as nt 2nt.mitemset(S=3,tid="tid",item="item",i="dat1.csv",O="result").run() 3### result/patterns.csv の内容 4# pid,size,count,total,support%0nr,lift,pattern 5# 1,1,5,6,0.8333333333,1,D 6# 7,2,4,6,0.6666666667,1.2,D F 7# 6,1,4,6,0.6666666667,1,F 8# 4,1,4,6,0.6666666667,1,E 9# 2,1,4,6,0.6666666667,1,B 10# : 11### result/tid_pats.csv の内容 12# tid,pid 13# T1,4 14# T2,1 15# T2,4 16# T2,7 17# T2,6 18# :
アイテム集合のサイズに制限を加えた例
出現頻度が3以上で、アイテム集合のサイズ3のパターンを列挙する。
1import nysol.take as nt 2nt.mitemset(S=3,l=3,u=3,tid="tid",item="item",i="dat1.csv",O="result").run() 3### result/patterns.csv の内容 4# pid,size,count,total,support%0nr,lift,pattern 5# 0,3,3,6,0.5,1.35,B D F 6# 1,3,3,6,0.5,1.8,A B D
飽和集合の列挙例
1import nysol.take as nt 2nt.mitemset(S=3,type="C",tid="tid",item="item",i="dat1.csv",O="result").run() 3### result/patterns.csv の内容 4# pid,size,count,total,support%0nr,lift,pattern 5# 1,1,5,6,0.8333333333,1,D 6# 2,2,4,6,0.6666666667,1.2,B D 7# 3,1,4,6,0.6666666667,1,E 8# 5,2,4,6,0.6666666667,1.2,D F 9# 4,2,3,6,0.5,0.9,D E 10# :
極大集合の列挙例
1import nysol.take as nt 2nt.mitemset(S=3,type="M",tid="tid",item="item",i="dat1.csv",O="result").run() 3### result/patterns.csv の内容 4# pid,size,count,total,support%0nr,lift,pattern 5# 0,2,3,6,0.5,0.9,D E 6# 1,3,3,6,0.5,1.35,B D F 7# 2,3,3,6,0.5,1.8,A B D
アイテムの階層分類を使った例
1import nysol.take as nt 2nt.mitemset(S=4,tid="tid",item="item",i="dat1.csv",x="taxo.csv",taxo="taxonomy",O="result").run() 3### result/patterns.csv の内容 4# pid,size,count,total,support%0nr,lift,pattern 5# 1,1,6,6,1,1,Z 6# 2,1,5,6,0.8333333333,1,D 7# 19,2,4,6,0.6666666667,1.2,D X 8# 13,2,4,6,0.6666666667,1,B Z 9# 14,1,4,6,0.6666666667,1,X 10# :
オリジナルアイテムを階層分類で置換する例
1import nysol.take as nt 2nt.mitemset(S=4,tid="tid",item="item",i="dat1.csv",x="taxo.csv",taxo="taxonomy",replaceTaxo=True,O="result").run() 3### result/patterns.csv の内容 4# pid,size,count,total,support%0nr,lift,pattern 5# 1,1,6,6,1,1,Z 6# 2,1,4,6,0.6666666667,1,X 7# 3,2,4,6,0.6666666667,1,X Z
顕在パターンの列挙例
1import nysol.take as nt 2nt.mitemset(S=2,tid="tid",item="item",cls="class",i="dat2.csv",p=0.6,O="result").run() 3### result/patterns.csv の内容 4# class%0nr,pid,pattern,size,pos%2nr,neg,posTotal,negTotal,total,support,growthRate,postProb%1nr 5# cls2,18,B D E,3,2,0,2,4,6,1,inf,1 6# cls2,14,B E,2,2,0,2,4,6,1,inf,1 7# cls2,13,A E,2,2,0,2,4,6,1,inf,1 8# cls2,17,A D E,3,2,0,2,4,6,1,inf,1 9# cls2,15,A B E,3,2,0,2,4,6,1,inf,1 10# :
関連メソッド¶
msequence 多頻度系列パターンの列挙 : 系列列挙ならこちら