5

R でパッケージ ルールを使用して関連付けルールを生成しています。ルールを制限して、左側に特定の要素が 1 つだけあるようにしたいと思います。それを「ポテト」と呼びましょう。

私がこれを行う場合:

rules <- apriori(dtm.mat, parameter = list(sup = 0.4, conf =
0.9,target="rules"), appearance = list(lhs = c("potatoe")))

私はlhsで「ポテト」を手に入れましたが、他のすべての種類のものも手に入れました。ルールに要素が 1 つだけ含まれるようにするにはどうすればよいですか? パラメーター maxlen は、私が見る限り、左側の要素に適用する maxlen を指定できないため、私が望むことを行いません。

4

4 に答える 4

6

ルール(質問では「ルール」)を生成したと仮定すると、それをサブセット化する方法は次のとおりです。基本的に、データをデータ フレームに変換してからサブセット化する必要があります。

#Here are the original rules generated with some data I created
# categories are "G", "T", "D", and "potatoe"

> inspect(rules);
lhs        rhs      support    confidencelift
1  {}  => {T}       0.3333333  0.3333333 1.0000000
2  {}  => {G}       0.5000000  0.5000000 1.0000000
3  {}  => {potatoe} 0.5000000  0.5000000 1.0000000
4  {}  => {D}       0.5000000  0.5000000 1.0000000
5  {T} => {G}       0.1666667  0.5000000 1.0000000
6  {G} => {T}       0.1666667  0.3333333 1.0000000
7  {T} => {D}       0.1666667  0.5000000 1.0000000
8  {D} => {T}       0.1666667  0.3333333 1.0000000
9  {G} => {potatoe} 0.1666667  0.3333333 0.6666667
10 {potatoe} => {G} 0.1666667  0.3333333 0.6666667
11 {potatoe} => {D} 0.3333333  0.6666667 1.3333333
12 {D} => {potatoe} 0.3333333  0.6666667 1.3333333

#Coerce into data frame
as(rules, "data.frame");

#Restrict LHS to only certain value (here, "potatoe")
rules_subset <- subset(rules, (lhs %in% c("potatoe")));

#Check to see subset rules
inspect(rules_subset);
lhs            rhs support    confidencelift
1 {potatoe} => {G} 0.1666667  0.3333333 0.6666667
2 {potatoe} => {D} 0.3333333  0.6666667 1.3333333

この方法では、1 つだけでなく、任意の数の LHS 値も使用できます。以前に提案した回答よりもはるかに簡単です。

于 2013-06-05T17:47:22.890 に答える
-6

1 つの方法を次に示します。

  1. inspect() を使用してルールのリストを生成します。
  2. すべてのルールをテキスト エディターにコピーします。
  3. .txt ファイルとして保存します。
  4. Excel で等幅区切りファイルとして開きます。
  5. LHS をフィルタリングして、「ポテト」のみを含めます [原文のまま]。

もっと簡単な方法があるかもしれませんが、少なくとも左側で「ポテト」を手動で検索する必要はありません。

于 2013-05-29T15:25:46.327 に答える