2017-01-11 2 views
0

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

Вот пример того, что мой необработанных данных в формате 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 
[email protected]$labels <- gsub("\"","",,[email protected]$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 

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

ответ

1

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

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

+0

Привет, спасибо @michael за отзыв, это немного помогает (название не является частью анализа, который хорош), но он не разбивает транзакцию на отдельные продукты ... :( –

Смежные вопросы