2016-06-01 9 views
-1

мой набор данных выглядит следующим образомВ R, я пытаюсь реализовать априорно с помощью arules,

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 

Я хочу иметь только а, Ь, с и d столбцов в левой и правой частях должны быть только те столбцы, PR1, PR2, PR3, PR4, который содержит значение 1. ЭГ результата я ожидал в

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

Я использую следующий код, но я не получаю желаемого результата

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

Может кто-то пожалуйста, обеспечить решение этой

ответ

1

«не получают желаемого результата» не лучшее описание того, что пошло не так. Например, это, кажется, работает для меня, когда снижение минимального требуемого доверия:

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 

данных:

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

Здравствуйте Лука, спасибо за Ваш ответ. Понятно, что, понизив пороговые значения, я получу ожидаемые результаты. Я хотел знать, есть ли какие-либо средства для решения ожидаемого решения без снижения пороговых значений? –

+0

Нет, я не думаю, что они есть. – lukeA