R - arules apriori Error in length(obj) : Method length not implemented for class rules

有些话、适合烂在心里 提交于 2019-12-07 08:17:17

问题


I am attempting to make an association rules set using apriori - I am using a different dataset but the starwars dataset contains similar issues. Using arules I was attempting to list the rules and apply an arulesViz plot. From my understanding all strings must be ran as factors, listed as transactions and then apriori should be functioning properly but I get the ouput below after running the following code and rules is not added to environment:

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")

The following is the output from running 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 

I have also ran this with the following argument changes

target = "rules"

And have attempted to run with using only null arguments

Any help is greatly appreciated!


回答1:


If I run your code with starwars data, I get following results -

> 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].

As you can see clearly, that there are 3 rules generated. Which means If I run inspect - I see following:

  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

But if I run the same by increasing support count, I would have have 0 rules generated(so in your case - absolute support count is 78 for starwars dataset when you have only 87 observations).

So you need to reduce(or adjust) the support or confidence and so that you have atleast 1 rule or more than that. Also, the target = "rules" could not help as you can see that it is generating 0 rules.




回答2:


the problem is solved, update packages like as below. library(arules); search() unloadNamespace("arules") update.packages("arules") library(arules)



来源:https://stackoverflow.com/questions/49308597/r-arules-apriori-error-in-lengthobj-method-length-not-implemented-for-clas

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!