Apriori не работает должным образом с набором данных 0 и 1
У меня есть датафрейм, который выглядит так:
Cus T C B
1: C1 0 1 1
2: C2 0 1 0
3: C3 0 1 0
4: C4 0 1 0
5: C5 0 1 0
6: C6 0 1 1
Когда я использую apriori на этом точном кадре данных, он дает такие результаты, как
lhs rhs support confidence lift count
[1] {} => {c=0} 0.8360112 0.8360112 1 616223
[2] {} => {t=0} 0.8765905 0.8765905 1 646134
[3] {} => {a=0} 0.8953804 0.8953804 1 659984
[4] {} => {b=0} 0.9103811 0.9103811 1 671041
[5] {} => {d=0} 0.9441812 0.9441812 1 695955
Я попытался преобразовать этот фрейм данных в транзакции BB, а затем исключить результаты, которые показывают 0 с помощью
excluded <- grep("=0", itemLabels(bb), value = TRUE)
rules = apriori(bb, appearance = list(none = excluded))
который оставляет только вывод с 0 правилами.
Как я могу получить некоторые полезные результаты, которые имеют только значение признака =1 в выводе apriori?
2 ответа
Я думаю, что вы хотите, чтобы столбцы T, B и C были логичными с
data$T <- as.logical(data$T)
data$B <- as.logical(data$B)
data$C <- as.logical(data$C)
а затем преобразовать в transactions
,
Вы можете преобразовать свои данные в транзакции, а затем использовать их в apriori
алгоритм:
library(arules)
library(reshape2)
library(dplyr)
trans <-
melt(data,id ='Cus') %>% # long format
filter(value > 0) %>% # filter value > 0
select(-value) # remove the numbers
# as transactions
trans <- as(split(trans[,"variable"], trans[,"Cus"]), "transactions")
inspect(trans)
items transactionID
[1] {C,B} C1
[2] {C} C2
[3] {C} C3
[4] {C} C4
[5] {C} C5
[6] {C,B} C6
# here the apriori
rules <- apriori(trans, parameter = list(supp = 0.3, conf = 0.3, target="rules", minlen=2))
inspect(rules)
lhs rhs support confidence lift count
[1] {B} => {C} 0.3333333 1.0000000 1 2
[2] {C} => {B} 0.3333333 0.3333333 1 2