2016-09-22 93 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工作,我將不勝感激。