首页 > 解决方案 > asotiation 规则,我需要如何为 fpgrowth 转换数据

问题描述

我有这样的数据

set.seed(123)
#fake data
dat <- list()
for(i in 1:1000) dat[[i]] <- LETTERS[sample(20)] [1:sample(10)[1]]
head(dat)

.

[[1]]
[1] "M" "L" "N" "H" "F" "P" "D"

[[2]]
[1] "F" "J" "C" "A" "G" "R" "M" "O" "S"

[[3]]
[1] "Q" "C" "E" "O" "P" "D"

[[4]]
[1] "K" "C" "P" "J" "N" "O" "B" "F" "Q"

[[5]]
[1] "K" "Q" "C"

[[6]]
[1] "M" "S" "A" "O" "E" "Q"

我需要找到所有与"L"

我曾经使用 apriori 从arules package

library(arules)
rules <- apriori(data = dat, 
                 parameter = list(supp = 0.01, 
                                  conf = 0.01), 
                  appearance = list(rhs="L")
                 )
rules

它工作得很好,但在某些时候它对我来说太慢了。我决定尝试 fpgrowthrCBA package

library(rCBA)
dat2 <- as(dat,"transactions")

rules <- rCBA::fpgrowth(dat2, support=0.01, 
                        confidence=0.01,
                        consequent="L")

但我得到一个错误

2020-06-20 08:09:35 rCBA: initialized
2020-06-20 08:09:36 rCBA: data 1000x20
     took: 1.21  s
����. 20, 2020 8:09:36 �� cz.jkuchar.rcba.fpg.FPGrowth run
INFO: FPG: start
java.lang.NullPointerException
Error in dimnames(x) <- dn : 
  length of 'dimnames' [2] not equal to array extent
    at java.base/java.lang.String.<init>(String.java:254)
    at cz.jkuchar.rcba.rules.Tuple.getCopy(Tuple.java:41)
    at cz.jkuchar.rcba.fpg.FPGrowth.insert(FPGrowth.java:304)
    at cz.jkuchar.rcba.fpg.FPGrowth.lambda$buildTree$0(FPGrowth.java:62)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1510)
    at cz.jkuchar.rcba.fpg.FPGrowth.buildTree(FPGrowth.java:59)
    at cz.jkuchar.rcba.fpg.FPGrowth.run(FPGrowth.java:125)
    at cz.jkuchar.rcba.fpg.FPGrowth.run(FPGrowth.java:99)
    at cz.jkuchar.rcba.r.RPruning.fpgrowth(RPruning.java:204)

虽然示例中的rCBA package工作对我来说很好.. 我知道我需要以不同的方式转换我的数据,但我不知道如何.. 谢谢你

UPD=======for==MarBlo===============请给个 更完整的答案,看不懂怎么用

dat[[1]]
[1] "M" "L" "N" "H" "F" "P" "D"

.

DAT2 <- do.call(rbind.data.frame,dat)

DAT2[1,]
 c..M....F....Q....K....K....M....O....E....O....N..
1                                                   M
  c..L....J....C....C....Q....S....D....I....H....O..
1                                                   L
  c..N....C....E....P....C....A....O....T....J....L..
1                                                   N
  c..H....A....O....J....K....O....D....G....B....F..
1                                                   H
  c..F....G....P....N....Q....E....O....C....R....M..
1                                                   F
  c..P....R....D....O....C....Q....D....Q....L....S..
1                                                   P
  c..D....M....Q....B....K....M....O....R....C....G..
1                                                   D
  c..M....O....C....F....Q....S....D....A....T....C..
1                                                   M
  c..L....S....E....Q....C....A....O....K....O....T..
1                                                   L
  c..N....F....O....K....K....O....D....P....H....K..
1                                                   N

标签: r

解决方案


推荐阅读