如何在 R 中使用 apriori 查找频繁项集?
How to find frequent itemsets using apriori in R?
我有一个文本文件:MyData.txt
这个 itemsets
:
items
[1] {542931}
[2] {542380}
[3] {81387,542448,360015,542613,542931}
[4] {546845,542614}
[5] {1123614}
[6] {542931}
[7] {1014660}
[8] {1088953}
[9] {1138035}
我要找frequent itemsets
。这是我的代码:
tr <- read.transactions("MyData.txt",format = "basket", cols = NULL)
freq_is <- apriori(tr, parameter = list(target = "frequent itemsets", support = 0.00001))
但是当我检查 freq_is
时,{542931}
的计数是两个,这是不正确的(三个 itemsets
有 542931)。事实上,Apriori
只计算 items [1]
和 items [6]
而忽略 items [3]
。我怎么解决这个问题?
你的问题是你在 MyData.txt
中使用 ','
作为分隔符,但你没有在 read.transactions()
中指定它,它默认以空格分隔。
因此,如果您将代码更改为:
tr <- read.transactions("MyData.txt",
format = "basket",
sep = ",",
cols = NULL)
你会看到542931的计数实际上是3:
summary(tr)
transactions as itemMatrix in sparse format with
9 rows (elements/itemsets/transactions) and
12 columns (items) and a density of 0.1296296
most frequent items:
542931 1014660 1088953 1123614 1138035 (Other)
3 1 1 1 1 7
使用 apriori()
创建频繁项集:
freq_is <- apriori(tr,
parameter = list(target = "frequent itemsets",
support = 0.00001))
如果您随后检查 freq_is
,您可以看到项目集 {542931}
:
的计数为 3
inspect(freq_is)
items support count
[1] {542380} 0.1111111 1
[2] {1123614} 0.1111111 1
[3] {1014660} 0.1111111 1
[4] {1088953} 0.1111111 1
[5] {1138035} 0.1111111 1
[6] {542614} 0.1111111 1
[7] {546845} 0.1111111 1
[8] {81387} 0.1111111 1
[9] {360015} 0.1111111 1
[10] {542448} 0.1111111 1
[11] {542613} 0.1111111 1
[12] {542931} 0.3333333 3
.
.
.
[39] {81387,360015,542448,542613,542931} 0.1111111 1
我有一个文本文件:MyData.txt
这个 itemsets
:
items
[1] {542931}
[2] {542380}
[3] {81387,542448,360015,542613,542931}
[4] {546845,542614}
[5] {1123614}
[6] {542931}
[7] {1014660}
[8] {1088953}
[9] {1138035}
我要找frequent itemsets
。这是我的代码:
tr <- read.transactions("MyData.txt",format = "basket", cols = NULL)
freq_is <- apriori(tr, parameter = list(target = "frequent itemsets", support = 0.00001))
但是当我检查 freq_is
时,{542931}
的计数是两个,这是不正确的(三个 itemsets
有 542931)。事实上,Apriori
只计算 items [1]
和 items [6]
而忽略 items [3]
。我怎么解决这个问题?
你的问题是你在 MyData.txt
中使用 ','
作为分隔符,但你没有在 read.transactions()
中指定它,它默认以空格分隔。
因此,如果您将代码更改为:
tr <- read.transactions("MyData.txt",
format = "basket",
sep = ",",
cols = NULL)
你会看到542931的计数实际上是3:
summary(tr)
transactions as itemMatrix in sparse format with
9 rows (elements/itemsets/transactions) and
12 columns (items) and a density of 0.1296296
most frequent items:
542931 1014660 1088953 1123614 1138035 (Other)
3 1 1 1 1 7
使用 apriori()
创建频繁项集:
freq_is <- apriori(tr,
parameter = list(target = "frequent itemsets",
support = 0.00001))
如果您随后检查 freq_is
,您可以看到项目集 {542931}
:
inspect(freq_is)
items support count
[1] {542380} 0.1111111 1
[2] {1123614} 0.1111111 1
[3] {1014660} 0.1111111 1
[4] {1088953} 0.1111111 1
[5] {1138035} 0.1111111 1
[6] {542614} 0.1111111 1
[7] {546845} 0.1111111 1
[8] {81387} 0.1111111 1
[9] {360015} 0.1111111 1
[10] {542448} 0.1111111 1
[11] {542613} 0.1111111 1
[12] {542931} 0.3333333 3
.
.
.
[39] {81387,360015,542448,542613,542931} 0.1111111 1