R子集arules由lhs
问题描述:
我想通过以下方式在R中运行apiriori算法产生的规则的子集。R子集arules由lhs
规则子集必须具有只有其他列表(如项目)中的任何项目的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
我试图在本网站上找到答案,但没有运气。我也尝试了其他各种方法,但我没有成功。
我将不胜感激您的任何帮助。
答
它工作时,我尝试这样做:
rules.subset2 <- subset(rules, lhs %in% c("cereals", "curd"))
多步,包括 “谷物”,并在同一时间LHS “豆腐”:
sub_2<- subset(rules, lhs %in% "cereals")
sub_3<- subset(sub_2, lhs %in% "curd")
答
我想运营商是%ain%
,所以像这样:
lhs %oin% c('cereals', 'curd')
谢谢@jiayao。这个给出了至少有LHS中的一个项目的所有规则。这里是你建议的陈述的输出:hs rhs支持信心 [1] {curd,cereals} => {whole milk} 0.001016777 0.9090909 [2] {酸奶,谷物} => {全脂牛奶} 0.001728521 0.8095238 [3] {turkey,curd} => {其他蔬菜} 0.001220132 0.8000000'。但是我需要R命令来获得只有“items”中的项目的规则,而不是任何项目 – sri
哦好吧,所以你只需要在lhs中同时“谷物”和“凝乳”。我在rstudio中玩了一下,但没有找到一种方法来做到这一点,但我认为你可以通过多个步骤来做到这一点。 'sub_2