我正在使用R库arules
来制定规则。
所以首先我试着看看规则:
#Get the rules
rules <- apriori(trans, parameter = list(supp=0.05, conf = 0.05)) #minlen = 2
rules <- sort(rules, by="confidence", decreasing=TRUE)
但lhs
列为空:
inspect(rules)
lhs rhs support confidence lift
3 {} => {product=CM,DD,OS} 0.501 0.501 1
2 {} => {product=CM,DD} 0.223 0.223 1
1 {} => {product=CM} 0.068 0.068 1
所以我尝试专门询问lhs
列:
rules <- apriori(data=trans, parameter=list(supp=0.05, conf = 0.05),
appearance = list(default="rhs", lhs="product=CM,DD,OS"),
control = list(verbose=F))
rules <- sort(rules, by="confidence", decreasing=TRUE)
inspect(rules)
不幸的是输出仍然相同。
其中一个原因可能是大多数客户拥有约4种产品,因此它们可能不是任何规则,但我发现它是unlikley。
答案 0 :(得分:0)
所以问题在于数据的格式。如果我在将数据转储到.csv并使用read.transactions
之前,它可以正常工作。
trans = read.transactions("C:/.../basket_analysis_data.csv", format="single",sep = ";", cols = c(2,1))
在我使用直接ODBC
连接之前,将数据放入数据框,然后将其转换为:
trans <- data.frame(product = as.factor(qry$product_owned))
trans <- as(trans, "transactions")
然而,使用.csv作为直接步骤是令人讨厌的。如果有人可以帮助如何在没有.csv的情况下使其工作,我将不胜感激。