将物品信息添加到规则中的交易对象
Adding item information to transaction object in arules
我正在使用 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
and/or 描述来显示它们。另外,想利用 arules
包中内置的聚合功能。
您可以使用 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
找到更多信息。
希望这对您有所帮助,
迈克尔
我正在使用 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
and/or 描述来显示它们。另外,想利用 arules
包中内置的聚合功能。
您可以使用 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
找到更多信息。
希望这对您有所帮助, 迈克尔