2016-06-01 15 views
-1

sieht mein Datensatz wie dieseIn R, versuche ich apriori mit arules zu implementieren,

A   B  C  D PR1 PR2 PR3 PR4 
Values Values Values Values 0 1 0 0 
Values Values Values Values 1 0 0 0 
Values Values Values Values 0 0 1 0 
Values Values Values Values 0 0 0 1 
Values Values Values Values 0 1 0 0 
Values Values Values Values 1 0 0 0 
Values Values Values Values 0 0 1 0 
Values Values Values Values 0 0 0 1 
Values Values Values Values 0 1 0 0 
Values Values Values Values 1 0 0 0 
Values Values Values Values 0 0 1 0 
Values Values Values Values 0 0 0 1 
Values Values Values Values 0 1 0 0 
Values Values Values Values 1 0 0 0 

ich die Spalten nur nur a, b, c und d Spalten in lhs und rhs haben will sein müssen PR1, PR2, PR3, PR4 einen Wert 1. ein Beispiel des Ergebnisses enthält, ich erwarte ist

lhs = {a,b}, RHS{PR1=1} 
lhs= {b,c,d}, RHS {PR3 =1} 

ich den Code unten verwendet haben, aber ich bin nicht das gewünschte Ergebnis zu erzielen

r <- apriori(b, parameter = list(supp = 0.1, conf = 0.9),    
      appearance = list(lhs = c("A","B","C","D"))) 

Kann jemand eine Lösung für dieses

Antwort

1

geben Sie bitte „nicht das gewünschte Ergebnis zu erzielen“ ist nicht die beste Beschreibung dessen, was schief gelaufen ist. Zum Beispiel scheint es für mich zu arbeiten, wenn das minimal erforderliche Vertrauen senken:

library(arules) 
r <- apriori(b, parameter = list(supp = .2, conf = .2), 
           appearance=list(lhs=c("A","B","C","D"))) 
inspect(subset(r, rhs(r) %ain% "PR1" & lhs(r) %ain% c("A", "B"))) 
# lhs   rhs support confidence lift 
# 41 {A,B}  => {PR1} 0.2857143 0.2857143 1 
# 58 {A,B,C} => {PR1} 0.2857143 0.2857143 1 
# 59 {A,B,D} => {PR1} 0.2857143 0.2857143 1 
# 64 {A,B,C,D} => {PR1} 0.2857143 0.2857143 1 
inspect(subset(r, rhs(r) %ain% "PR1" & labels(lhs(r))=="{A,B}")) 
# lhs  rhs support confidence lift 
# 41 {A,B} => {PR1} 0.2857143 0.2857143 1 
inspect(subset(r, labels(rhs(r))=="{PR3}" & labels(lhs(r))=="{B,C,D}")) 
# 45 {B,C,D} => {PR3} 0.2142857 0.2142857 1 

Daten:

b <- new("transactions" 
    , data = new("ngCMatrix" 
    , i = c(0L, 1L, 2L, 3L, 5L, 0L, 1L, 2L, 3L, 4L, 0L, 1L, 2L, 3L, 6L, 
0L, 1L, 2L, 3L, 7L, 0L, 1L, 2L, 3L, 5L, 0L, 1L, 2L, 3L, 4L, 0L, 
1L, 2L, 3L, 6L, 0L, 1L, 2L, 3L, 7L, 0L, 1L, 2L, 3L, 5L, 0L, 1L, 
2L, 3L, 4L, 0L, 1L, 2L, 3L, 6L, 0L, 1L, 2L, 3L, 7L, 0L, 1L, 2L, 
3L, 5L, 0L, 1L, 2L, 3L, 4L) 
    , p = c(0L, 5L, 10L, 15L, 20L, 25L, 30L, 35L, 40L, 45L, 50L, 55L, 60L, 
65L, 70L) 
    , Dim = c(8L, 14L) 
    , Dimnames = list(NULL, NULL) 
    , factors = list() 
) 
    , itemInfo = structure(list(labels = c("A", "B", "C", "D", "PR1", "PR2", "PR3", 
"PR4")), .Names = "labels", row.names = c(NA, -8L), class = "data.frame") 
    , itemsetInfo = structure(list(transactionID = c("1", "2", "3", "4", "5", "6", 
"7", "8", "9", "10", "11", "12", "13", "14")), .Names = "transactionID", row.names = c(NA, 
-14L), class = "data.frame") 
) 
+0

Hallo luke, danke für deine Antwort. Ich verstehe, dass ich durch die Senkung der Schwellenwerte die erwarteten Ergebnisse erhalten würde. Ich wollte wissen, ob es irgendwelche Mittel gibt, die Lösung zu erhalten, ohne die Schwellenwerte zu senken. –

+0

Nein, ich glaube nicht, dass es welche gibt. – lukeA