2017-07-02 184 views
0

我有一個帶有customer_id和product_name的R數據框。一個客戶可以有多個產品。在客戶欄中,由於他們有多個產品,因此存在重複的customer_id。使用數據中的Arules和ArulesViz的關聯規則

我正在嘗試做一個基本的apriori分析,並確定一起購買的產品的一些關聯規則。我想用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

這是從實例採取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 

現在你可以使用transapriori

+0

This Works,thank you! – Andre