2017-07-02 8 views
0

Ich habe einen R-Datenrahmen mit customer_id und product_name. Ein Kunde kann mehrere Produkte haben. In der Kundenspalte gibt es doppelte customer_ids, da sie mehrere Produkte haben.Assoziationsregeln mit Arules und ArulesViz aus Daten

Ich versuche, eine grundlegende Apriori-Analyse zu tun und einige Assoziationsregeln für Produkte zu bestimmen, die zusammen gekauft werden. Ich möchte dazu das Arules- und ArulesViz-Paket in R verwenden.

Wenn ich versucht habe, dies zu laufen, bekomme ich normalerweise 0 Regeln oder lhs Produkt -> rhs customer_id. Daher glaube ich nicht, dass ich die Daten korrekt lade, um mehrere Produkte für einen einzelnen Kunden anzuzeigen, um die Assoziationen abzuleiten.

Jede Hilfe wäre willkommen!

Basisdaten Rahmen Beispiel

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 

Antwort

1

Dies ist für transactions den Beispielen entnommen (leicht modifiziert):

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 

Jetzt können Sie apriori auf trans verwenden.

+0

Das funktioniert, danke! – Andre

Verwandte Themen