在杂货数据集中修剪先验规则时出错
Getting error in pruning apriori rules in grocery dataset
我正在尝试修剪由杂货数据集的先验算法创建的规则,但出现一个错误
使用 R 3.4.2 和 RStudio(版本 1.1.383)
导入的库
library(arules)
data("Groceries")
我已经创建了规则
rules <- apriori(Groceries, parameter = list(supp =0.001,
conf = 0.5,
target = "rules"))
开始修剪冗余规则
rules.sorted = sort(rules, by="lift")
subset.matrix <- is.subset(rules.sorted, rules.sorted)
在将矩阵的下三角转换为 NA 时,我收到一个警告
subset.matrix[lower.tri(subset.matrix, diag=T)] = NA
警告信息:
In `[<-`(`*tmp*`, as.vector(i), value = NA) :
x[.] <- val: x is “ngTMatrix”, val not in {TRUE, FALSE} is coerced; NA |--> TRUE
然后尝试识别冗余规则
redundant <- colSums(subset.matrix, na.rm=T) >= 1
最终修剪规则
rules.pruned = rules.sorted[!redundant]
但是在检查时什么也没显示
inspect(rules.pruned)
甚至 rules.pruned 的摘要显示 "zero" 0 条规则
summary(rules.pruned)
我猜这个错误主要是由于矩阵下三角转换为 NA 值时的警告显示警告
如何克服警告?
is.subset()
returns 自版本 1.5-2 以来为稀疏矩阵(请参阅包 NEWS)。如果你想使用你的代码,那么你需要使用:
subset.matrix <- is.subset(rules.sorted, rules.sorted, sparse = FALSE)
然而,这是非常低效的并且只适用于非常小的规则集。使用 is.redundant()
来查找冗余规则。
我正在尝试修剪由杂货数据集的先验算法创建的规则,但出现一个错误
使用 R 3.4.2 和 RStudio(版本 1.1.383)
导入的库
library(arules)
data("Groceries")
我已经创建了规则
rules <- apriori(Groceries, parameter = list(supp =0.001,
conf = 0.5,
target = "rules"))
开始修剪冗余规则
rules.sorted = sort(rules, by="lift")
subset.matrix <- is.subset(rules.sorted, rules.sorted)
在将矩阵的下三角转换为 NA 时,我收到一个警告
subset.matrix[lower.tri(subset.matrix, diag=T)] = NA
警告信息:
In `[<-`(`*tmp*`, as.vector(i), value = NA) :
x[.] <- val: x is “ngTMatrix”, val not in {TRUE, FALSE} is coerced; NA |--> TRUE
然后尝试识别冗余规则
redundant <- colSums(subset.matrix, na.rm=T) >= 1
最终修剪规则
rules.pruned = rules.sorted[!redundant]
但是在检查时什么也没显示
inspect(rules.pruned)
甚至 rules.pruned 的摘要显示 "zero" 0 条规则
summary(rules.pruned)
我猜这个错误主要是由于矩阵下三角转换为 NA 值时的警告显示警告
如何克服警告?
is.subset()
returns 自版本 1.5-2 以来为稀疏矩阵(请参阅包 NEWS)。如果你想使用你的代码,那么你需要使用:
subset.matrix <- is.subset(rules.sorted, rules.sorted, sparse = FALSE)
然而,这是非常低效的并且只适用于非常小的规则集。使用 is.redundant()
来查找冗余规则。