2016-09-22 96 views
0

我正在使用R库arules进行规则划分。R - 关联规则,lhs列为空

所以首先我想刚才看到的规则:

#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个产品,因此他们可能没有任何规则,但是我发现这种情况很糟糕。

回答

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工作,我将不胜感激。