R通过改变支持和项目外观的关联规则挖掘(arules)循环
R loop through association rule mining (arules) with changing supports and item appearances
这里对 R 相当陌生。我正在寻找 R 中特定项目的关联规则,但我想改变每个项目对这些规则的最低支持目标(即交易中 项目 总频率的 10%列表)。每个项目都有不同的交易量,所以我相信改变支持是有价值的。
我使用 Excel 在单独的电子表格中计算了每个项目的支持目标。
我可以手动编写 arules 代码并手动输入支持的最小值和项目外观,但过程很慢,尤其是有很多不同的项目。
例如
arules <- apriori(trans, parameter = list(sup = 0.001, conf = 0.25,target="rules"),
appearance=list(rhs= c("Apples")))
arules2 <- apriori(trans, parameter = list(sup = 0.002, conf = 0.25,target="rules"),
appearance=list(rhs= c("Oranges")))
combined <- c(arules,arules2)
我如何使用 R 中的 for 循环执行此操作,该循环将在特定支持最小值下计算每个指定项目的规则,并在每次循环运行时将这些生成的规则保存到新变量?我打算稍后根据它们的类型对这些规则进行分组。
试过类似这样循环了太多次的东西。我也想不出一种方法将每个循环保存到一个新变量(即 arules1、arules2、arules3....)
min_supp <- c(0.001,0.002,0.003)
names <- c("Apples","Oranges","Grape")
for (inames in names) {
for (supports in min_supp) {
apriori(trans, parameter = list(sup = supports, conf = 0.25,target="rules"),
appearance=list(rhs= inames))
}}
提前致谢!
考虑 Map
(mapply
的简化包装器),它可以通过相同长度的向量逐元素迭代 m 多个 apply 方法。此外,Map
将输出返回的项目列表,可以用 setNames
命名。列表始终是首选,因为您可以避免单独的、结构相似的对象充斥全局环境。
min_supp <- c(0.001,0.002,0.003)
names <- c("Apples","Oranges","Grape")
arules_fun <- function(n, s) apriori(trans, parameter = list(sup = s, conf = 0.25, target="rules"),
appearance=list(rhs= n))
# PROCESS FUNCTION ELEMENTWISE
arules_list <- Map(arules_fun, names, min_supp)
# NAME LIST ITEMS
arules_list <- setNames(arules_list, paste0("arules", 1:length(arules_list)))
arules_list$arules1
arules_list$arules2
arules_list$arules3
...
这里对 R 相当陌生。我正在寻找 R 中特定项目的关联规则,但我想改变每个项目对这些规则的最低支持目标(即交易中 项目 总频率的 10%列表)。每个项目都有不同的交易量,所以我相信改变支持是有价值的。
我使用 Excel 在单独的电子表格中计算了每个项目的支持目标。
我可以手动编写 arules 代码并手动输入支持的最小值和项目外观,但过程很慢,尤其是有很多不同的项目。
例如
arules <- apriori(trans, parameter = list(sup = 0.001, conf = 0.25,target="rules"),
appearance=list(rhs= c("Apples")))
arules2 <- apriori(trans, parameter = list(sup = 0.002, conf = 0.25,target="rules"),
appearance=list(rhs= c("Oranges")))
combined <- c(arules,arules2)
我如何使用 R 中的 for 循环执行此操作,该循环将在特定支持最小值下计算每个指定项目的规则,并在每次循环运行时将这些生成的规则保存到新变量?我打算稍后根据它们的类型对这些规则进行分组。
试过类似这样循环了太多次的东西。我也想不出一种方法将每个循环保存到一个新变量(即 arules1、arules2、arules3....)
min_supp <- c(0.001,0.002,0.003)
names <- c("Apples","Oranges","Grape")
for (inames in names) {
for (supports in min_supp) {
apriori(trans, parameter = list(sup = supports, conf = 0.25,target="rules"),
appearance=list(rhs= inames))
}}
提前致谢!
考虑 Map
(mapply
的简化包装器),它可以通过相同长度的向量逐元素迭代 m 多个 apply 方法。此外,Map
将输出返回的项目列表,可以用 setNames
命名。列表始终是首选,因为您可以避免单独的、结构相似的对象充斥全局环境。
min_supp <- c(0.001,0.002,0.003)
names <- c("Apples","Oranges","Grape")
arules_fun <- function(n, s) apriori(trans, parameter = list(sup = s, conf = 0.25, target="rules"),
appearance=list(rhs= n))
# PROCESS FUNCTION ELEMENTWISE
arules_list <- Map(arules_fun, names, min_supp)
# NAME LIST ITEMS
arules_list <- setNames(arules_list, paste0("arules", 1:length(arules_list)))
arules_list$arules1
arules_list$arules2
arules_list$arules3
...