R:Apriori算法找不到任何关联规则

问题描述

我生成了一个数据集,其中包含两个不同的列:与客户相关联的ID列和与客户有效产品相关联的另一列:

head(df_itemList)

      ID      PRD_LISTE
1     1       A,B,C
3     2       C,D
4     3       A,B
5     4       A,C,D,E
7     5       B,A,D
8     6       A,D

我只选择拥有多个产品的客户。我总共有589.454行,并且有16种不同的产品。

接下来,我将data.frame写入这样的csv文件中:

df_itemList$ID <- NULL
colnames(df_itemList) <- c("itemList")
write.csv(df_itemList,"Basket_List_13-08-2020.csv",row.names = TRUE)

然后,我将csv文件转换为购物篮格式,以便应用arules-package中实现的apriori算法。

library(arules)  
txn <- read.transactions(file="Basket_List_13-08-2020.csv",rm.duplicates= TRUE,format="basket",sep=",",cols=1)
txn@itemInfo$labels <- gsub("\"","",txn@itemInfo$labels)

summary-function产生以下输出:

summary(txn)
transactions as itemMatrix in sparse format with
 589455 rows (elements/itemsets/transactions) and
 1737 columns (items) and a density of 0.0005757052 

most frequent items:
                   A,C                    A,B                     C,F                     C,D
                  57894                   32150                   31367                   29434 
                  A,C                 (Other) 
                  29035                  409575 

element (itemset/transaction) length distribution:
sizes
     1 
589455 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 

includes extended item information - examples:
                                                                             labels
1 G,H,I,F,J
2 G,F
3 G,K,D

includes extended transaction information - examples:
  transactionID
1              
2             1
3             3

现在,我尝试运行apriori算法:

basket_rules <- apriori(txn,parameter = list(sup = 1e-15,conf = 1e-15,minlen = 2,target="rules"))

这是输出:

   Apriori

Parameter specification:
 confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target  ext
       0.01    0.1    1 none FALSE            TRUE       5   1e-15      2     10  rules TRUE

Algorithmic control:
 filter tree heap memopt load sort verbose
    0.1 TRUE TRUE  FALSE TRUE    2    TRUE

Absolute minimum support count: 0 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[1737 item(s),589455 transaction(s)] done [0.20s].
sorting and recoding items ... [1737 item(s)] done [0.00s].
creating transaction tree ... done [0.16s].
checking subsets of size 1 done [0.00s].
writing ... [0 rule(s)] done [0.00s].
creating S4 object  ... done [0.04s].

即使支持和信心低得可笑,也不会产生任何规则...

summary(basket_rules)
set of 0 rules

这真的是因为我的数据集吗?还是我的代码有错误?

解决方法

您的摘要显示未正确读取数据:

most frequent items:
                   A,C                    A,B                     C,F                     C,D
                  57894                   32150                   31367                   29434 
                  A,B,C                 (Other) 
                  29035                  409575 

看起来像“ A,C”被读为一个项目,但它应该是两个项目“ A”和“ C”。分隔符不起作用。我认为这可能是由于文件中的引号引起的。确保Basket_List_13-08-2020.csv看起来正确。另外,在阅读交易记录时,您需要使用skip = 1跳过第一行(标题)。

,

@Michael我现在很肯定我正在阅读的.csv文件有问题。由于还有其他人遇到过类似的问题,我想这是错误的常见原因。您能否描述读入后的.csv文件的外观?

输入data <- read.csv("file.csv",header = TRUE,sep = ",")时,我得到以下data.frame:

X     Prd
1     A
2     A,B
3     B,A
4     B
5     C

-如果一个客户X有多个产品-这些产品全部写在一个栏中,是否正确?还是应该写在不同的栏中?

此外,在编写txn <- read.transactions(file="Versicherungen2_ItemList_Short.csv",rm.duplicates= TRUE,format="basket",sep=",",cols=1,skip=1)summary(txn)时,我看到以下问题:

most frequent items:
A             B            C           A,B            B,A
1256          1235         456         235            125

(数字是随机选择的)

所以read.transaction函数可以区分A,B和B,A ...所以我猜测.csv文件有问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...