向arules中的事务对象添加项目信息
我正在使用向arules中的事务对象添加项目信息,r,arules,R,Arules,我正在使用arules包查找销售点零售数据中的关联规则。我从数据库中提取事务详细信息,然后放入事务对象中。我不熟悉arules,正在尝试找出如何在事务对象中填充itemInfo数据框。现在,我只是引入了事务和项目IDs(都是数字),它们提供的上下文很少。我希望能够添加一个项目描述,以及产品层次结构级别 以下是我今天使用的流程: 数据以以下格式来自数据库: Transaction_ID Item_ID -------------- ----------- 100
arules
包查找销售点零售数据中的关联规则。我从数据库中提取事务详细信息,然后放入事务
对象中。我不熟悉arules
,正在尝试找出如何在事务对象中填充itemInfo
数据框。现在,我只是引入了事务
和项目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")
当这些规则返回时,它们将按
项目\u ID
列出,这对我没有帮助。我希望能够通过ID
和/或描述来显示它们。此外,您还想利用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
R>df trans myLabels MyLevel 1 itemInfo(trans)检查(trans)
项目事务ID
1{牛奶,
黄油}1
2{牛奶,
黄油,
啤酒}2
3{黄油}3
###现在可以使用aggregate()了
R> 检查(聚合(trans,itemInfo(trans)[“level1”]]))
项目事务ID
1{dairy}1
2{饮料,
乳制品}2
3{奶制品}3
您可以使用类查找更多信息?交易记录
和?聚合
希望这有帮助,
迈克尔这很有帮助,谢谢你。这似乎是一个基本问题,但我如何知道应用标签的顺序?我的数据集有数千项,所以我想确定我列出的标签顺序是否正确?这只是数据集中第一次出现的顺序吗?看起来我可以使用
trans@itemInfo
,然后按此处显示的顺序分配标签。没错,您可以获取itemInfo,然后使用match以正确的顺序获取标签。当我使用aggregate for rules并对其进行检查时,它不会显示支持/信心等,任何原因都会导致数据(“杂货店”)##Aggregate rules rules@usct01:原因是无法从原始规则的度量值计算聚合规则的supp/conf/lift。您可以聚合数据,然后使用interestMeasures
计算聚合规则的度量值。或者,您可以先聚合事务,然后创建规则。这些都将有相应的措施。
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