如何解决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文件有问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。