R中的Apriori算法,不是否定规则
Apriori algorithm in R, not negative rules
我有一个大型二进制数据集,我希望在其中 运行 R 中的先验算法。问题在于算法正在制定所有 0 的规则,而我只想查看 1 .
例如获取这些规则:
lhs rhs support confidence lift count
[1] {SPA=0,SPD=0,SPE=0,SPF=1,SPJ=0} => {SPC=0} 0.2036065 0.9866727 1.0174854 6515
[2] {SPA=0,SPD=0,SPE=0,SPF=1} => {SPC=0} 0.2163885 0.9864653 1.0172715 6924
[3] {SPA=0,SPD=0,SPF=1,SPJ=0} => {SPC=0} 0.2070754 0.9852788 1.0160479 6626
有谁知道如何只查找变量为 1 而不是 0 的规则?谢谢!
您可以使用 apriori
的 appearance
参数来控制它。由于您不提供数据,我将以内置的 Adult 数据为例,但我认为您需要在先验语句中添加 appearance=list(rhs = "SPC=1")
。
例子
我将只生成 rhs 为 native-country=United-States 的规则
rules <- apriori(Adult,
parameter = list(supp = 0.4, conf = 0.6,
minlen=2, target = "rules"),
appearance=list(rhs = "native-country=United-States")
)
inspect(rhs(rules[1:5]))
items
[1] {native-country=United-States}
[2] {native-country=United-States}
[3] {native-country=United-States}
[4] {native-country=United-States}
[5] {native-country=United-States}
加法
我还以为你只想在 rhs 上设置 SPC=1。根据您的评论,我现在认为您想要生成根本不包含 XYZ=0 项的规则。您也可以使用 appearance
获取此信息。首先确定 XYZ=0 的可能项目,然后使用外观排除这些。我不知道你的变量叫什么,所以我叫交易TransactionData
## identify items to exclude
excluded <- grep("=0", itemLabels(TransactionData), value = TRUE)
然后将此添加到您的 apriori
声明中。
appearance=list(none = excluded)
解决此问题的最简单方法是在创建交易之前使矩阵符合逻辑。对于矩阵 m
,您可以执行以下操作:
storage.mode(m) <- "logical"
trans <- as(m, transactions)
我有一个大型二进制数据集,我希望在其中 运行 R 中的先验算法。问题在于算法正在制定所有 0 的规则,而我只想查看 1 . 例如获取这些规则:
lhs rhs support confidence lift count
[1] {SPA=0,SPD=0,SPE=0,SPF=1,SPJ=0} => {SPC=0} 0.2036065 0.9866727 1.0174854 6515
[2] {SPA=0,SPD=0,SPE=0,SPF=1} => {SPC=0} 0.2163885 0.9864653 1.0172715 6924
[3] {SPA=0,SPD=0,SPF=1,SPJ=0} => {SPC=0} 0.2070754 0.9852788 1.0160479 6626
有谁知道如何只查找变量为 1 而不是 0 的规则?谢谢!
您可以使用 apriori
的 appearance
参数来控制它。由于您不提供数据,我将以内置的 Adult 数据为例,但我认为您需要在先验语句中添加 appearance=list(rhs = "SPC=1")
。
例子
我将只生成 rhs 为 native-country=United-States 的规则
rules <- apriori(Adult,
parameter = list(supp = 0.4, conf = 0.6,
minlen=2, target = "rules"),
appearance=list(rhs = "native-country=United-States")
)
inspect(rhs(rules[1:5]))
items
[1] {native-country=United-States}
[2] {native-country=United-States}
[3] {native-country=United-States}
[4] {native-country=United-States}
[5] {native-country=United-States}
加法
我还以为你只想在 rhs 上设置 SPC=1。根据您的评论,我现在认为您想要生成根本不包含 XYZ=0 项的规则。您也可以使用 appearance
获取此信息。首先确定 XYZ=0 的可能项目,然后使用外观排除这些。我不知道你的变量叫什么,所以我叫交易TransactionData
## identify items to exclude
excluded <- grep("=0", itemLabels(TransactionData), value = TRUE)
然后将此添加到您的 apriori
声明中。
appearance=list(none = excluded)
解决此问题的最简单方法是在创建交易之前使矩阵符合逻辑。对于矩阵 m
,您可以执行以下操作:
storage.mode(m) <- "logical"
trans <- as(m, transactions)