R - arules apriori长度错误(obj):没有为类规则实现的方法长度

问题描述 投票:4回答:2

我试图使用apriori设置关联规则 - 我使用的是不同的数据集,但是starwars数据集包含类似的问题。使用arules我试图列出规则并应用arulesViz图。根据我的理解,所有字符串必须作为因子运行,列为事务,然后apriori应该正常运行但我在运行以下代码后获得以下输出,并且规则未添加到环境中:

install.packages("arules")
install.packages("arulesViz")
library(arulesViz)
library(arules)
data <- starwars[,c(4:6,8:10)]
data <- data.frame(sapply(data,as.factor))
data <- as(data, "transactions")
rules <- apriori(data, parameter = list(supp = 0.15, conf = 0.80))


inspect(rules)
inspect(sort(rules))

subrules <- head(sort(rules, by="lift"), 10)
plot(subrules, method="graph")

以下是运行apriori的输出

rules <- apriori(data, parameter = list(supp = 0.15, conf = 0.80))
Apriori

Parameter specification:
 confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target   ext
        0.8    0.1    1 none FALSE            TRUE       5    0.15      1     10  rules FALSE

Algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

Absolute minimum support count: 78 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[131 item(s), 522 transaction(s)] done [0.00s].
sorting and recoding items ... [0 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 done [0.00s].
writing ... [0 rule(s)] done [0.00s].
creating S4 object  ... done [0.02s].
Error in length(obj) : Method length not implemented for class rules 

我也通过以下参数更改来运行它

target = "rules"

并尝试仅使用null参数运行

任何帮助是极大的赞赏!

r plot apriori arules
2个回答
3
投票

如果我用starwars数据运行你的代码,我得到以下结果 -

> data <- starwars[,c(4:6,8:10)]
> data <- data.frame(sapply(data,as.factor))
> data <- as(data, "transactions")
> rules <- apriori(data, parameter = list(supp = 0.15, conf = 0.80))
Apriori

Parameter specification:
 confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target   ext
        0.8    0.1    1 none FALSE            TRUE       5    0.15      1     10  rules FALSE

Algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

Absolute minimum support count: 13 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[147 item(s), 87 transaction(s)] done [0.00s].
sorting and recoding items ... [8 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 done [0.00s].
writing ... [3 rule(s)] done [0.00s].
creating S4 object  ... done [0.00s].

如您所见,生成了3条规则。这意味着如果我运行检查 - 我看到以下内容:

  lhs                  rhs             support   confidence lift    
[1] {skin_color=fair} => {species=Human} 0.1839080 0.9411765  2.339496
[2] {skin_color=fair} => {gender=male}   0.1609195 0.8235294  1.155598
[3] {eye_color=brown} => {species=Human} 0.1954023 0.8095238  2.012245

但是,如果我通过增加支持计数来运行相同的操作,我将生成0个规则(因此在您的情况下 - 当您只有87个观察值时,对于星球数据集,绝对支持计数为78)。

因此,您需要减少(或调整)支持或信心,以便您拥有至少1条规则或更多规则。此外,target = "rules"无法帮助,因为你可以看到它产生0规则。


0
投票

问题解决了,更新包如下所示。 library(arules); search() unloadNamespace("arules") update.packages("arules") library(arules)

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