首页 文章

为什么apriori告诉我尝试应用非功能

提问于
浏览
1

我正在尝试使用 arules 包进行市场购物篮分析 . 但是,当我使用 apriori 算法时, R 报告了以下消息 .

dt <- split(deviceshowlist$prog_title, deviceshowlist$device_id)
dt2 <- as(dt,"transactions")
rules <- apriori(dt2, parameter = list(support = 0.01, confidence = 0.05, minlen=2))

Apriori参数说明:print.default(参数)出错:尝试应用非功能

我查看了我的事务数据结构和apriori的功能 . 似乎没有错 . 请希望有人之前遇到类似的问题,并可以帮助我 .

谢谢

我的dt和dt2的结构更新如下

> str(dt)
    List of 5388
    $ 000000006201   : chr [1:2] "Modern Family" "Criminal Minds"
    $ 0000000080ed   : chr [1:5] "Blindspot" "Supergirl" "The Simpsons" "The Big Bang Theory" ...
    $ 000000009c7b   : chr [1:9] "Criminal Minds" "The Big Bang Theory" "Life in Pieces" "Limitless" ...
    $ 000000009e56   : chr [1:7] "Friends" "2 Broke Girls" "Best Time Ever With Neil Patrick Harris" "Blindspot" ...

> str(dt2)
Formal class 'transactions' [package "arules"] with 3 slots
  ..@ data       :Formal class 'ngCMatrix' [package "Matrix"] with 5 slots
  .. .. ..@ i       : int [1:25272] 10 21 5 21 27 30 35 0 8 10 ...
  .. .. ..@ p       : int [1:5389] 0 2 7 16 23 24 32 39 40 50 ...
  .. .. ..@ Dim     : int [1:2] 37 5388
  .. .. ..@ Dimnames:List of 2
  .. .. .. ..$ : NULL
  .. .. .. ..$ : NULL
  .. .. ..@ factors : list()
  ..@ itemInfo   :'data.frame': 37 obs. of  1 variable:
  .. ..$ labels: chr [1:37] "2 Broke Girls" "Agent X" "Ash vs Evil Dead" "Benders" ...
  ..@ itemsetInfo:'data.frame': 5388 obs. of  1 variable:
  .. ..$ transactionID: chr [1:5388] "000000006201" "0000000080ed" "000000009c7b" "000000009e56" ...


     device_id     prog_title
1 0000000080ed      Blindspot
2 0000000080ed      Supergirl
3 000000009c7b Life in Pieces
4 000000009c7b      Limitless
5 000000009c7b       Quantico
6 000000009c7b     Code Black
7 000000009c7b    The Muppets
8 000000009c7b      Supergirl

1 回答

  • 0

    确保您的ID列是一个因素:

    library(arules)
    
    deviceshowlist <- data.frame(device_id = c("0000000080ed","0000000080ed",rep("000000009c7b",6)),
                                 prog_title = c("Blindspot","Supergirl","Life in Pieces","Limitless",
    "Quantico","Code Black","The Muppets","Supergirl"), stringsAsFactors=F)
    
    deviceshowlist$device_id <- as.factor(deviceshowlist$device_id)
    
    str(deviceshowlist)
    #'data.frame':  8 obs. of  2 variables:
    #  $ device_id : Factor w/ 2 levels "0000000080ed",..: 1 1 2 2 2 2 2 2
    #  $ prog_title: chr  "Blindspot" "Supergirl" "Life in Pieces" "Limitless" ...
    
    
    dt <- split(deviceshowlist$prog_title, deviceshowlist$device_id)
    dt2 <- as(dt,"transactions")
    rules <- apriori(dt2, parameter = list(support = 0.01, confidence = 0.05, minlen=2))
    
    # Apriori
    # 
    # Parameter specification:
    #   confidence minval smax arem  aval originalSupport maxtime support minlen
    # 0.05    0.1    1 none FALSE            TRUE       5    0.01      2
    # maxlen target   ext
    # 10  rules FALSE
    # 
    # Algorithmic control:
    #   filter tree heap memopt load sort verbose
    # 0.1 TRUE TRUE  FALSE TRUE    2    TRUE
    # 
    # Absolute minimum support count: 0
    # 
    # set item appearances ...[0 item(s)] done [0.00s].
    # set transactions ...[7 item(s), 2 transaction(s)] done [0.00s].
    # sorting and recoding items ... [7 item(s)] done [0.00s].
    # creating transaction tree ... done [0.00s].
    # checking subsets of size 1 2 3 4 5 6 done [0.00s].
    # writing ... [188 rule(s)] done [0.00s].
    # creating S4 object  ... done [0.00s].
    

相关问题