我正在使用arules
包来查找销售点零售数据中的关联规则。我从数据库中提取事务详细信息,然后放入transaction
对象。我是arules
的新用户,正在尝试弄清楚如何在事务对象中填充itemInfo
数据框。现在,我只是引入transaction
和item ID
s(都是数字),它们提供的上下文很少。我希望能够添加项目描述以及产品层次结构级别。
以下是我今天使用的流程:
数据来自数据库,格式如下:
Transaction_ID Item_ID
-------------- -----------
100 1
100 2
100 3
101 2
101 3
102 1
102 2
要创建transaction
对象,请使用以下命令,如arules
文档中所述:
txdata <- as(split(txdata[, "Item_ID"], txdata[, "Transaction_ID"]), "transactions")
注意:我发现我需要为Item_ID
设置一个数值,否则我会遇到使用字符串的主要性能问题(由于使用因子字符串时分割效果不佳)。
创建并查看关联规则
rules <- apriori(txdata, parameter = list(support=0.00015, confidence=0.5))
inspect(head((sort(rules, by="confidence")), n=5))
当规则返回时,它们会被Item_ID
列出,这对我没有帮助。我希望能够通过ID
和/或说明来显示它们。此外,还希望利用arules
包中内置的聚合功能。
答案 0 :(得分:2)
您可以使用itemInfo更改项目的名称。这是一个例子:
R> df <- data.frame(
TID = c(1,1,2,2,2,3),
item=c("a","b","a","b","c", "b")
)
R> trans <- as(split(df[,"item"], df[,"TID"]), "transactions")
### this is how you replace item labels and set a hierachy (here level1)
R> myLabels <- c("milk", "butter", "beer")
R> myLevel1 <- c("dairy", "dairy", "beverage")
R> itemInfo(trans) <- data.frame(labels = myLabels, level1 = myLevel1)
R> inspect(trans)
items transactionID
1 {milk,
butter} 1
2 {milk,
butter,
beer} 2
3 {butter} 3
### now you can use aggregate()
R> inspect(aggregate(trans, itemInfo(trans)[["level1"]]))
items transactionID
1 {dairy} 1
2 {beverage,
dairy} 2
3 {dairy} 3
您可以使用class? transactions
和? aggregate
找到更多信息。
希望这有帮助, 迈克尔