Проблема с априорными правилами в r — отсутствуют продукты lhs

Я следую инструкциям с сайта https://www.r-bloggers.com/implementing-apriori-algorithm-in-r/ для создания правил ассоциации, но я не могу создавать продукты lhs в своих правилах. Я предполагаю, что это потому, что мои транзакции не могут быть разбиты.

Вот пример того, как выглядят мои необработанные данные csv:

  itemList
1 ContentManagement
2 Migration,Explorer
3 Explorer,Migration
4 Explorer,ContentManagement
5 Migration,Explorer

Затем я применяю следующее:

#load package required
library(arules)

#convert csv file to basket format
txn = read.transactions(
  file = "ItemList.csv",
  rm.duplicates = TRUE,
  format = "basket",
  sep = ",",
  col = 1
);
inspect(txn)

#remove quotes from transactions
txn@itemInfo$labels <- gsub("\"","",,txn@itemInfo$labels)

Транзакции выглядят так:

[1] {ContentManagement}            1
[2] {Migration,Explorer}           2
[3] {Explorer,Migration}           3
[4] {Explorer,ContentManagement}   4
[5] {Migration,Explorer}           5

Когда я применяю следующее:

#run apriori algorithm
basket_rules <-
  apriori(txn,
          parameter = list(
            minlen = 1,
            sup = 0.01,
            conf = 0.01,
            target = "rules",
            maxtime=10
          ))
#basket_rules <- apriori(txn,parameter = list(sup = 0.00001, conf = 0.01, target="rules"),appearance = list(lhs = "Migration")))

#view rules
inspect(basket_rules)

Это дает неутешительные результаты, а именно:

     lhs    rhs                                    support    confidence lift
[1]  {}  => {ContentManagement}                    0.01175068 0.01175068 1   
[2]  {}  => {Migration, Explorer}                  0.01226158 0.01226158 1   
[3]  {}  => {Explorer,Migration}                   0.02145777 0.02145777 1

Не могли бы вы помочь?


person Olivier Blais    schedule 11.01.2017    source источник


Ответы (1)


Проблема в том, как устроен ваш файл. Это не файл, разделенный запятыми, потому что между номером строки (меткой строки) и элементами, разделенными запятой, есть пробел, а не число. Удалите номер строки, оставив только элементы, и установите col = NULL в read.transactions.

Если вы написали свой файл с помощью R, убедитесь, что вы используете row.names = FALSE в write.csv.

person Michael Hahsler    schedule 11.01.2017
comment
Привет, спасибо @michael за подсказку, это немного помогает (название не является частью анализа, что хорошо), но не разделяет транзакцию на отдельные продукты... :( - person Olivier Blais; 28.01.2017