apriori
返回规则列表,您可以将其分组以找出特定规则。
但是,子集要求您已知道项目名称。例如,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个项目)?
答案 0 :(得分: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"
答案 1 :(得分: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一起使用。
答案 2 :(得分: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))
答案 3 :(得分:0)
您可以使用存储在RHS数据项中的RHS标签索引来获取通过对RHS项标签进行子集生成的唯一RHS元素的字符向量。如果rules
是一组先验规则,则以下行有效:
unique(rules@rhs@itemInfo$labels[rules@rhs@data@i+1])
请注意,rules@rules@rhs@data@i
是标签索引,其范围可以比可能的标签数量小0到1。因此,我们需要在使用这些索引时添加1,因为rules@rhs@itemInfo$labels
没有第0个元素。