1

apriori返回规则列表,您可以将其子集以找出特定规则。

但是,subset 要求您已经知道项目名称。例如,subset(rules, subset=rhs%pin%"soap")。您知道您正在寻找“肥皂”。但在一种情况下,我事先不知道这个名字,而是想以编程方式找出答案。

以编程方式查找生成规则的 rhs 上列出的所有唯一项目的过程是什么?

unique(rhs)这样的东西会给我向量中rhs上所有项目的列表,以便我可以枚举它们并subset在它们上使用?

编辑:下面是生成的规则图rules <- apriori(Adult, parameter = list(supp = 0.5, conf = 0.9, target = "rules"))。它显示 RHS 仅包含 4 个项目。如何以编程方式从生成的规则中获取这 4 个项目(并且只有这 4 个项目)? Gopalakrishna 生成的 R 图

4

4 回答 4

0

像这样的东西?

library(arules)

data("Adult")
rules <- apriori(Adult, 
                 parameter = list(supp = 0.5, conf = 0.9,
                                  target = "rules"))

rhs.unique <- unique(rules@rhs@itemInfo$labels[rules@rhs@data@i])
print(rhs.unique)
[1] "sex=Male"                       "capital-gain=High"             
[3] "native-country=Trinadad&Tobago" "race=Other"     
于 2014-03-29T14:47:53.083 回答
0

只是@hrbrmstr 答案的一个小扩展。这是你心里想的吗??

library(arules)
data("Adult")
rules <- apriori(Adult, 
                 parameter = list(supp = 0.5, conf = 0.9,
                                  target = "rules"))
result <- data.frame(do.call(rbind,strsplit(rules@rhs@itemInfo$labels,"=")))
colnames(result) <- c("LHS","RHS")
head(result,10)
#          LHS              RHS
# 1        age            Young
# 2        age      Middle-aged
# 3        age           Senior
# 4        age              Old
# 5  workclass      Federal-gov
# 6  workclass        Local-gov
# 7  workclass     Never-worked
# 8  workclass          Private
# 9  workclass     Self-emp-inc
# 10 workclass Self-emp-not-inc

然后你可以做

RHS <- unique(result$RHS)

我想,但并非所有 RHS 都与所有 LHS 一起使用。

于 2014-03-29T18:04:48.423 回答
0

您可以使用存储在 RHS 数据项中的 RHS 标签索引获取通过对 RHS 项目标签进行子集化而生成的唯一 RHS 元素的字符向量。如果rules是一组先验规则,则以下行有效:

unique(rules@rhs@itemInfo$labels[rules@rhs@data@i+1])

请注意,rules@rules@rhs@data@i标签索引的范围可以从 0 到比可能的标签数量少一。因此,我们需要在使用这些索引时加 1,因为 没有第 0 个元素rules@rhs@itemInfo$labels

于 2017-10-13T16:28:59.233 回答
0

提取一组独特规则的更紧凑的方法是使用包中的inspect()函数arules。结果是一个数据框,每一行代表一个唯一的规则。

library(arules)

data("Adult")
rules <- apriori(Adult, 
                 parameter = list(supp = 0.5, conf = 0.9,
                                  target = "rules"))

result = inspect(unique(rules@rhs))
于 2017-09-19T04:26:08.093 回答