Почему apriori говорит мне, что попытка применить нефункциональность - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь провести анализ корзины с помощью пакета 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 голосов
/ 13 мая 2018

Убедитесь, что ваш столбец 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].
...