2016-04-08 4 views
0

Мои данные сделки, как это:R: Рекомендации для всех корзин с arules

ID=c("A123","A123","A123","A123","B456","B456","B456","C789","C789") 
item=c("bread", "butter", "milk", "eggs", "meat","milk", "peas", "peas", "meat") 

df=data.frame(cbind(ID, item)) 

ID item 
1 A123 bread 
2 A123 butter 
3 A123 milk 
4 A123 eggs 
5 B456 meat 
6 B456 milk 
7 B456 peas 

Я хочу сделать рекомендации, поэтому я преобразовать данные и правила построения

library(arules) 
trans = as(split(df$item, df$ID), "transactions") 
rules = apriori(trans, parameter = list(support = 0.006, confidence = 0.25, 
             minlen = 2)) 

Рекомендации для клиента с корзиной 3 находится так:

basket = trans[3] 
rulesMatchLHS = is.subset([email protected],basket) 
suitableRules = rulesMatchLHS & !(is.subset([email protected],basket)) 
order.rules = sort(rules[suitableRules], by = "lift") 
LIST([email protected])[[1]] 

[1] "молоко"

Но как я могу давать рекомендации для всех корзин? Я попытался это, но получаю сообщение об ошибке:

reco=function(x){ 
    rulesMatchLHS = is.subset([email protected],x) 
    suitableRules = rulesMatchLHS & !(is.subset([email protected],x)) 
    order.rules = sort(rules[suitableRules], by = "lift") 
    LIST([email protected])[[1]] 
} 

results = lapply(trans, function(x) reco(x)) 

Error in as.vector(data) : no method for coercing this S4 class to a vector

Как я мог запустить рекомендации для всех корзин?

ответ

1

попробовать это:

sapply(1:length(trans), function(x) reco(trans[x])) 

По-видимому, нет функции для преобразования транзакций класса в вектор.

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

  • Нет связанных вопросов^_^