使用数据中的Arules和ArulesViz的关联规则

时间:2017-07-02 16:58:31

标签: r associations apriori market-basket-analysis

我有一个带有customer_id和product_name的R数据框。客户可以拥有多种产品。在客户列中,由于拥有多个产品,因此存在重复的customer_ids。

我试图进行基本的先验分析并确定一起购买的产品的一些关联规则。我想用R中的Arules和ArulesViz包来做这件事。

当我尝试运行此操作时,我通常会获得0个规则或lhs产品 - > rhs customer_id。因此,我不相信我正确加载数据,以便向单个客户查看多个产品,以获得关联。

任何帮助将不胜感激!

基本数据框示例

df <- data.frame( cust_id = as.factor(c('1aa2j', '1aa2j', '2b345',
'2b345', 'g78a8', 'y67r3')), product = as.factor(c("Bat", "Sock",
"Hat", "Shirt", "Ball", "Shorts")))

rules <- apriori(df) inspect(rules)

lhs rhs support confidence lift 1 {product=Bat} => {cust_id=1aa2j} 0.167 1 3
2 {product=Sock} => {cust_id=1aa2j} 0.167 1 3
3 {product=Hat} => {cust_id=2b345} 0.167 1 3
4 {product=Shirt} => {cust_id=2b345} 0.167 1 3
5 {cust_id=g78a8} => {product=Ball} 0.167 1 6
6 {product=Ball} => {cust_id=g78a8} 0.167 1 6
7 {cust_id=y67r3} => {product=Shorts} 0.167 1 6
8 {product=Shorts} => {cust_id=y67r3} 0.167 1 6

1 个答案:

答案 0 :(得分:1)

这取自transactions(稍加修改)的例子:

library(arules)
df <- data.frame( cust_id = as.factor(c('1aa2j', '1aa2j', '2b345',
'2b345', 'g78a8', 'y67r3')), product = as.factor(c("Bat", "Sock",
"Hat", "Shirt", "Ball", "Shorts")))

trans <- as(split(df[,"product"], df[,"cust_id"]), "transactions")
inspect(trans)

    items       transactionID
[1] {Bat,Sock}  1aa2j        
[2] {Hat,Shirt} 2b345        
[3] {Ball}      g78a8        
[4] {Shorts}    y67r3 

现在,您可以在apriori上使用trans