lcm Linear time Closed itemset Miner
------------------------------------------------------------------------
実装の詳細は |lcmorg| を参照されたい。
.. |lcmorg| raw:: html
lcmのオリジナル解説ページ
パラメータ
''''''''''''''''''''''
**type=** : 型=str , 必須
| 列挙するアイテム集合のタイプ(F|C|M)、及び出力形式を文字列として指定する。
| アイテム集合のタイプとして以下の3つから一つを選ぶ。
|
| * F:頻出アイテム集合
| * C:飽和アイテム集合
| * M:極大アイテム集合
|
| また出力形式として以下の組み合わせで指定する。
|
| * f:アイテム集合の後ろに出現件数を出力する。
| * Q:アイテム集合の前に出現件数を出力する。
| * I:アイテム集合の次の行に出現集合(出現するトランザクション行番号)を出力する。
| * t:トランザクションデータベースを転置する(アイテムiはi番目のトランザクションとなり、j番目のトランザクションはアイテムjとなる)。
| * A:w=でプラスとマイナスのトランザクションの重みを指定した場合、プラス/マイナスそれぞれの件数とその比を出力する。
| * P:positive-closed itemset mining
| * R:output redundant items for rule mining (usually, redundant items are removed, to be minimal, in the case of rule mining)
| * i:do not output itemset to the output file (only rules)
| * s:output confidence and item frequency by absolute values
**i=** : 型=str , 必須
| トランザクションファイル名を指定する。
**o=** : 型=str , 必須
| 出力ファイル名を指定する。
**sup=** : 型= , 必須
| 最小サポートを指定する。
**U=** : 型= , 任意(default=上限なし)
| 最大サポートを指定する。
**K=** : 型= , 任意(default=制限なし)
| 頻出な上位のアイテム集合のみ出力する
**l=** : 型= , 任意(default=制限なし)
| アイム集合のサイズの下限値を指定する。
**u=** : 型= , 任意(default=制限なし)
| アイム集合のサイズの上限値を指定する。
**w=** : 型=str , 任意(default=全トランザクションの重みは等しいものとする)
| トランザクションの重みファイル名を指定する。
**a=** : 型=float(0以上1以下) , 任意(default=制限なし)
| 相関ルールマイニングを実施しconfidenceの下限値を与える。
**A=** : 型=float(0以上1以下) , 任意(default=制限なし)
| 相関ルールマイニングを実施しconfidenceの上限値を与える。
**r=** : 型=float(0以上1以下) , 任意(default=制限なし)
| 相関ルールマイニングを実施しrelational confidenceの下限値を与える。
**R=** : 型=float(0以上1以下) , 任意(default=制限なし)
| 相関ルールマイニングを実施しrelational confidenceの上限値を与える。
**item=** : 型=int , 任意(default=)
| 指定した番号のアイテムに関する相関ルールを出力する。
**so=** : 型=str , 任意(default=ファイル出力しない)
| 標準出力の内容を指定のファイルに出力する。
**separator=** : 型=str , 任意(default=スペース)
| 出力時のアイテムの区切り文字を指定する。
利用例
''''''''''''
**入力データの準備**
.. code-block:: python
:linenos:
with open('dat1.tra','w') as f:
f.write(
'''2 4
3 4 5
0 1 3 5
1 3 5
0 1 3 4
0 1 3 4 5
''')
with open('weight.txt','w') as f:
f.write(
'''-1
1
-1
1
1
-1
''')
**基本例**
頻出アイテム集合( ``F`` )の列挙。
``type=`` に ``f`` を指定すると出現件数を出力する。
``type=`` に ``_`` を含めることでメッセージを表示しなくなる。
出力結果の各行が頻出アイテム集合を表しており、末尾の括弧内の数字が出現件数を表している。
一行目には空のアイテム集合が出力されている。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="Ff_",sup=3,i="dat1.tra",o="result.txt")
### result.txt の内容
# (6)
# 3 (5)
# 1 (4)
# 1 3 (4)
# 4 (4)
# 4 3 (3)
# 5 (4)
# 5 3 (4)
# 5 1 (3)
# 5 1 3 (3)
# 0 (3)
# 0 1 (3)
# 0 1 3 (3)
# 0 3 (3)
**飽和集合の列挙**
``type=`` に ``C`` を指定することで、頻出飽和アイテム集合を列挙する。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="Cf_",sup=3,i="dat1.tra",o="result.txt")
### result.txt の内容
# (6)
# 3 (5)
# 1 3 (4)
# 4 (4)
# 4 3 (3)
# 5 3 (4)
# 5 1 3 (3)
# 0 3 1 (3)
**極大集合の列挙**
``type=`` に ``M`` を指定することで、頻出極大アイテム集合を列挙する。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="Mf_",sup=3,i="dat1.tra",o="result.txt")
### result.txt の内容
# 4 3 (3)
# 5 1 3 (3)
# 0 3 1 (3)
**アイテム集合サイズを制限**
``l=3`` でアイテム集合のサイズを3以上に限定する。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="Mf_",sup=3,l=3,i="dat1.tra",o="result.txt")
### result.txt の内容
# 5 1 3 (3)
# 0 3 1 (3)
**出現集合の出力**
``type=`` に ``I`` を加えることで、アイテム集合の下に出現集合が出力される。
アイテム集合 ``{5,1,3}`` はトランザクションデータ( ``dat1.tra`` )の2,3,5行目に出現している(先頭行は0行目と数える}。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="FfI_",sup=3,l=3,i="dat1.tra",o="result.txt")
### result.txt の内容
# 5 1 3 (3)
# 2 3 5
# 0 1 3 (3)
# 2 4 5
**データベースの転置**
``type=`` に ``t`` を加えることでトランザクションデータベースを転置してから実行する。
トランザクション集合 ``{4,2,5}`` はアイテム ``{0,1,3}`` に出現する(先頭行は0行目と数える}。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="FftI_",sup=3,l=3,i="dat1.tra",o="result.txt")
### result.txt の内容
# 4 2 5 (3)
# 0 1 3
# 3 2 5 (3)
# 1 3 5
**上位k番目の出現件数**
``K=4`` で頻出上位4番目の出現件数を出力する。
「基本例」での結果から、頻出上位4番目のルールは ``1 3 (4)`` であり、その出現件数 ``4`` が出力されている。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="Ff",K=4,sup=1,i="dat1.tra",so="topk.txt")
### topk.txt の内容
# 4
**トランザクション重みの利用**
``w=`` を指定すると、指定されたトランザクションの重みで件数をカウントする。
``type=`` に ``A`` を加えることで、マイナス重みとプラス重みの件数情報が表示される。
アイテム ``3`` は、1,2,3,4,5行目に含まれ、その重み合計は1(=1-1+1+1-1)となる
(プラス重み件数3件、マイナス重み件数2件、プラス率は3/5=0.6)。
同様にアイテム集合{4,3}は1,4,5行目に含まれ、その重み合計は1(=1+1-1)となる
(プラス重み件数2件、マイナス重み件数1件、プラス率は2/3=0.6666)。
.. code-block:: python
:linenos:
from nysol.take.extcore import lcm
lcm(type="FfA_",sup=1,w="weight.txt",i="dat1.tra",o="result.txt")
### result.txt の内容
# 3 (1) (3,2,0.6)
# 4 3 (1) (2,1,0.6666)
関連メソッド
''''''''''''''''''''