【发布时间】:2013-04-30 05:27:35
【问题描述】:
使用 arules 包,'apriori' 返回一个 'rules' 对象。
我们如何进行查询 - 规则 {lhs, rhs} 中的项目来自哪一列?
示例:
我在文件“input.csv”中有一些表格形式的数据,并希望将返回的规则项集与文件中的列标题关联/解释。我怎么可能这样做?
任何指针表示赞赏。 谢谢,
一个可重现的例子: input.csv
ABC,DEF,GHI,JKL,MNO
11,56789,1,0,10
12,57685,0,0,10
11,56789,0,1,11
10,57689,1,0,12
11,56789,0,1,12
10,57685,1,0,12
10,57689,1,0,10
11,56789,0,1,12
11,56789,0,0,10
11,56789,0,0,10
11,56789,0,1,10
11,56789,0,0,10
调用 Apriori:
transactions <- read.transactions("input.csv", format="basket", sep = ',', cols = NULL, rm.duplicates = TRUE)
Rules <- apriori(transactions, parameter = list(supp = 0.45, conf = 0.50, target = "rules"))
返回结果:
> inspect(Rules)
lhs rhs support confidence lift
1 {} => {11} 0.6153846 0.6153846 1.000000
2 {} => {56789} 0.6153846 0.6153846 1.000000
3 {} => {1} 0.6153846 0.6153846 1.000000
4 {} => {10} 0.6923077 0.6923077 1.000000
5 {} => {0} 0.9230769 0.9230769 1.000000
6 {11} => {56789} 0.6153846 1.0000000 1.625000
7 {56789} => {11} 0.6153846 1.0000000 1.625000
8 {11} => {0} 0.6153846 1.0000000 1.083333
9 {0} => {11} 0.6153846 0.6666667 1.083333
10 {56789} => {0} 0.6153846 1.0000000 1.083333
11 {0} => {56789} 0.6153846 0.6666667 1.083333
12 {1} => {0} 0.6153846 1.0000000 1.083333
13 {0} => {1} 0.6153846 0.6666667 1.083333
14 {10} => {0} 0.6923077 1.0000000 1.083333
15 {0} => {10} 0.6923077 0.7500000 1.083333
16 {11, 56789} => {0} 0.6153846 1.0000000 1.083333
17 {0, 11} => {56789} 0.6153846 1.0000000 1.625000
18 {0, 56789} => {11} 0.6153846 1.0000000 1.625000
现在,我想区分一下规则 13 的项目
13 {0} => {1} 0.6153846 0.6666667 1.083333
{0} => {1} 表示,0 在维度 "GHI" 中的值意味着 1 在 "JKL" 中的值,反之亦然?
那么,有没有一种方法可以获取规则对象中返回的项集值的列名/id?
【问题讨论】:
-
你能发一个小例子吗?
-
@RomanLuštrik :我添加了一个小例子。感谢您的关注。
-
@SimonO101 :谢谢,我已经添加了正在执行的代码。我在
rules类中找不到任何方法,它可以返回这些项集值所属的列名/ID。 -
@srbhkmr 我们需要一些示例代码,我们可以运行这些代码来制作类似的对象。我们无权访问
input.csv,因此我们无法运行它。它不必与您的完全相同,只要能充分说明您的问题即可。请在reproducible examples 上查看本指南。谢谢。 -
@SimonO101 :是的,我很快会想出一个简短的可重现示例,但要点是 - 我的数据集中的两列共享来自同一域的值,我想在何时区分它们我把它们放在规则项集中。
标签: r data-mining apriori arules