修剪杂货数据集中的apriori规则时出错

问题描述 投票:0回答:1

我正在尝试修剪由apriori算法为杂货数据集创建的规则,但是会出现一个错误

使用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的摘要显示“零”0规则

summary(rules.pruned)

我猜这个错误主要是由于矩阵下三角转换为NA值时的警告,显示出警告

如何克服警告?

r apriori arules
1个回答
1
投票

is.subset()从版本1.5-2返回一个稀疏矩阵(参见包NEWS)。如果您想使用您的代码,那么您需要使用:

subset.matrix <- is.subset(rules.sorted, rules.sorted, sparse = FALSE)

但是,效率非常低,仅适用于非常小的规则集。使用is.redundant()代替查找冗余规则。

© www.soinside.com 2019 - 2024. All rights reserved.