【问题标题】:subsetting arules by lhs in RR中lhs的子集化规则
【发布时间】:2017-03-16 20:34:55
【问题描述】:

我想按以下方式对在 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))

此子设置操作导致以下结果(这是错误的,因为我只想在规则子集中将“凝乳和谷物”作为 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

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

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

【问题讨论】:

  • 你找到答案了吗?我认为没有一个答案适用

标签: r subset apriori


【解决方案1】:

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

rules.subset2 &lt;- subset(rules, lhs %in% c("cereals", "curd"))

在 lhs 中同时包含“cereals”和“curd”的多步骤:

sub_2&lt;- subset(rules, lhs %in% "cereals")
sub_3&lt;- subset(sub_2, lhs %in% "curd")

【讨论】:

  • 谢谢@jiayao。这个给出了在 LHS 中至少包含一项的所有规则。这是您建议的语句的输出:hs rhs support confidence [1] {curd,cereals} =&gt; {whole milk} 0.001016777 0.9090909 [2] {yogurt,cereals} =&gt; {whole milk} 0.001728521 0.8095238 [3] {turkey,curd} =&gt; {other vegetables} 0.001220132 0.8000000。但我需要 R 命令来获取只有“项目”向量中的项目而不是任何项目的规则
  • 哦,好的,所以你只需要 lhs 中的“cereals”和“curd”。我在 rstudio 中玩了一点,但没有想出一种方法来做到这一点,但我认为你可以通过多个步骤来做到这一点。 sub_2&lt;- subset(rules, lhs %in% "cereals") sub_3&lt;- subset(sub_2, lhs %in% "curd") 我会继续搜索。
【解决方案2】:

我认为运营商是%ain%,所以类似于:

lhs %oin% c('cereals', 'curd')

【讨论】:

    【解决方案3】:

    文档中有一个示例

    ## select only rules with items "age=Young" and "workclass=Private" in
    ## the left-hand-side
    rules.sub <- subset(rules, subset = lhs %ain% 
        c("age=Young", "workclass=Private"))
    

    【讨论】:

      猜你喜欢
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      相关资源
      最近更新 更多