R:对所有带规则的篮子的建议
R: Recommendations for all baskets with 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(rules@lhs,basket)
suitableRules = rulesMatchLHS & !(is.subset(rules@rhs,basket))
order.rules = sort(rules[suitableRules], by = "lift")
LIST(order.rules@rhs)[[1]]
[1] "milk"
但是我怎样才能对所有的篮子提出建议呢?我试过了,但出现错误:
reco=function(x){
rulesMatchLHS = is.subset(rules@lhs,x)
suitableRules = rulesMatchLHS & !(is.subset(rules@rhs,x))
order.rules = sort(rules[suitableRules], by = "lift")
LIST(order.rules@rhs)[[1]]
}
results = lapply(trans, function(x) reco(x))
Error in as.vector(data) :
no method for coercing this S4 class to a vector
我怎样才能 运行 所有篮子的建议?
试试这个:
sapply(1:length(trans), function(x) reco(trans[x]))
显然,没有将交易 class 转换为向量的函数。
我的数据是这样的交易:
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(rules@lhs,basket)
suitableRules = rulesMatchLHS & !(is.subset(rules@rhs,basket))
order.rules = sort(rules[suitableRules], by = "lift")
LIST(order.rules@rhs)[[1]]
[1] "milk"
但是我怎样才能对所有的篮子提出建议呢?我试过了,但出现错误:
reco=function(x){
rulesMatchLHS = is.subset(rules@lhs,x)
suitableRules = rulesMatchLHS & !(is.subset(rules@rhs,x))
order.rules = sort(rules[suitableRules], by = "lift")
LIST(order.rules@rhs)[[1]]
}
results = lapply(trans, function(x) reco(x))
Error in as.vector(data) : no method for coercing this S4 class to a vector
我怎样才能 运行 所有篮子的建议?
试试这个:
sapply(1:length(trans), function(x) reco(trans[x]))
显然,没有将交易 class 转换为向量的函数。