Sorting rules by lift and confidence

后端 未结 2 1960
难免孤独
难免孤独 2020-12-21 16:03

I am trying to find association rules using the apriori function from arules package in R.

rules <- apriori(data=data, parameter=list(supp=0.001,conf = 0.         


        
相关标签:
2条回答
  • 2020-12-21 16:35

    I have not thought about this. You can copy & paste the following code into your R session after you load arules.

    setMethod("sort", signature(x = "associations"),
      function (x, decreasing = TRUE, na.last = NA, by = "support", ...) {
        q <- quality(x)
        q <- q[, pmatch(by, colnames(q)), drop = FALSE]
        if(is.null(q)) stop("Unknown interest measure to sort by.")
        if(length(x) == 0) return(x)
    
        x[do.call(order, c(q, list(na.last = na.last, decreasing = decreasing)))]
    }) 
    

    Now your original code should work.

    > data("Adult")
    > rules <- apriori(Adult, parameter = list(supp = 0.5, conf = 0.9, target = "rules"))
    > inspect(head(sort(rules, by=c("supp", "conf"))))
      lhs                               rhs                   support confidence      lift
    1 {}                             => {capital-loss=None} 0.9532779  0.9532779 1.0000000
    2 {}                             => {capital-gain=None} 0.9173867  0.9173867 1.0000000
    3 {capital-gain=None}            => {capital-loss=None} 0.8706646  0.9490705 0.9955863
    4 {capital-loss=None}            => {capital-gain=None} 0.8706646  0.9133376 0.9955863
    5 {native-country=United-States} => {capital-loss=None} 0.8548380  0.9525461 0.9992323
    6 {native-country=United-States} => {capital-gain=None} 0.8219565  0.9159062 0.9983862
    

    This will be part of the next release of arules.

    0 讨论(0)
  • 2020-12-21 16:43

    Assuming you got

    library(arules)
    data("Adult")
    rules <- apriori(Adult, parameter = list(supp = 0.5, conf = 0.9, target = "rules"))
    

    then you could try

    df <- as(rules, "data.frame") 
    df[order(df$lift, df$confidence), ]
    
    0 讨论(0)
提交回复
热议问题