r - 在 R 中通过 lhs 对规则进行子集化

标签 r subset apriori

我想按以下方式对通过在 R 中运行 apiriori 算法生成的规则进行子集化。

规则子集必须有 LHS,它只能有另一个列表中的任何项目(比如项目)。 RHS 上没有应用任何约束。

我尝试了以下代码,但无法获得预期的结果:

> library(arules)
> library(datasets)
> data(Groceries)
> rules <- apriori(Groceries, parameter = list(supp = 0.001, conf = 0.8))
inspect(head(rules))
    lhs                                 rhs            support     confidence lift     
[1] {liquor,red/blush wine}          => {bottled beer} 0.001931876 0.9047619  11.235269
[2] {curd,cereals}                   => {whole milk}   0.001016777 0.9090909   3.557863
[3] {yogurt,cereals}                 => {whole milk}   0.001728521 0.8095238   3.168192
[4] {butter,jam}                     => {whole milk}   0.001016777 0.8333333   3.261374
[5] {soups,bottled beer}             => {whole milk}   0.001118454 0.9166667   3.587512
[6] {napkins,house keeping products} => {whole milk}   0.001321810 0.8125000   3.179840

items = c("curd","cereals")
rules.subset2 <- subset(rules, subset = all(lhs %in% items))

此子设置操作导致以下结果(这是错误的,因为我只想在规则子集中将“凝乳和 Cereal ”作为 LHS)

inspect(head(rules.subset2))
          lhs                                                                           rhs                support     confidence lift     
    [1]   {liquor,red/blush wine}                                                    => {bottled beer}     0.001931876 0.9047619  11.235269
    [2]   {curd,cereals}                                                             => {whole milk}       0.001016777 0.9090909   3.557863
    [3]   {yogurt,cereals}                                                           => {whole milk}       0.001728521 0.8095238   3.168192
    [4]   {butter,jam}                                                               => {whole milk}       0.001016777 0.8333333   3.261374
    [5]   {soups,bottled beer}                                                       => {whole milk}       0.001118454 0.9166667   3.587512
    [6]   {napkins,house keeping products}                                           => {whole milk}       0.001321810 0.8125000   3.179840

我试着在这个网站上寻找答案,但没有成功。我也尝试了其他各种方法,但没有成功。

如果您能提供帮助,我将不胜感激。

最佳答案

当我尝试这个时它起作用了:

rules.subset2 <- subset(rules, lhs %in% c("cereals", "curd"))

同时在 lhs 中包含“ Cereal ”和“凝乳”的多步骤:

sub_2<- subset(rules, lhs %in% "cereals")
sub_3<- subset(sub_2, lhs %in% "curd")

关于r - 在 R 中通过 lhs 对规则进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42844279/

相关文章:

perl - 如何在 Perl 中生成列表的所有子集?

python : DIY generalize this "all_subsets" function to any size subsets

data-mining - 数据挖掘的最小支持和最小信心

r - 基于日期比较的子集数据集R

r - 如何从 R 中的 apriori 调用中获取常见项集的频率?

r - 如何用 magrittr 管进行乘法运算

r - 是否有一个函数或程序包可以模拟从lm()返回的对象的预测?

值列的每次更改 R 递增 1 并重新启动计数器

r - 润滑不匹配的索引类

mysql - 将表子集从 AWS RDS mysql 复制到另一个 RDS/外部 mysql 实例