楼主: Lisrelchen
1571 2

Mining Frequent Itemsets with the Eclat Algorithm using R [推广有奖]

  • 0关注
  • 62粉丝

VIP

已卖:4194份资源

院士

67%

还不是VIP/贵宾

-

TA的文库  其他...

Bayesian NewOccidental

Spatial Data Analysis

东西方数据挖掘

威望
0
论坛币
50288 个
通用积分
83.6306
学术水平
253 点
热心指数
300 点
信用等级
208 点
经验
41518 点
帖子
3256
精华
14
在线时间
766 小时
注册时间
2006-5-4
最后登录
2022-11-6

楼主
Lisrelchen 发表于 2015-3-13 22:40:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. #clean the workspace and memory
  2. rm( list=ls() )
  3. gc()

  4. tbl <- read.csv("data/itemsets002.csv", header=FALSE)
  5. tbl <- as.matrix(tbl)
  6. colnames(tbl) <- NULL
  7. itemsets <- t(tbl)
  8. print(itemsets)

  9. items <- c(1,2,3,4,5)
  10. min_sup <- 0.22*nrow(itemsets)

  11. f <- NULL
  12. ff <- NULL
  13. testEclat <- function(data,base_items,MIN_SUP){
  14.         print(data)
  15.         p <- GetFrequentTidSets(data,base_items,MIN_SUP)
  16.         print(p)
  17.         Eclat(p,f,MIN_SUP,length(base_items))
  18.         return(f)
  19. }

  20. GetFrequentTidSets <- function(data,base_items,MIN_SUP){
  21.         tidsets <- NULL
  22.         data <- cbind(data,apply(data,1,sum))
  23.         items <- diag(length(base_items))
  24.         for(idx in seq(nrow(data))){
  25.                 tidsets <- rbind(tidsets,c(items[idx,],data[idx,]))       
  26.         }
  27.         tidsets <- tidsets[tidsets[,ncol(tidsets)]>MIN_SUP,-ncol(tidsets)]
  28.         return(tidsets)
  29. }

  30. Eclat <- function(p,f,MIN_SUP,parameter=NULL){
  31.         len <- nrow(p)
  32.         for(idx in seq(len)){
  33.                 a <- p[idx,]
  34.                 AddFrequentItemset(f,a)
  35.                 pa <- NULL
  36.                 jdx <- idx + 1
  37.                 while(idx<jdx && jdx<=len){
  38.                         b <- p[jdx,]
  39.                         ab <- MergeTidSets(a,b,parameter)
  40.                         if(GetSupport(ab,parameter)>=MIN_SUP){
  41.                                 pa <- rbind(pa,ab)
  42.                         }
  43.                         jdx <- jdx + 1
  44.                 }
  45.                 rownames(pa) <- NULL
  46.                 if(!IsEmptyTidSets(pa)){
  47.                         #print(pa)
  48.                         Eclat(pa,f,MIN_SUP,parameter)
  49.                 }
  50.         }
  51. }

  52. IsEmptyTidSets <- function(pa){
  53.         if(length(pa)>0)return(FALSE)
  54.         return(TRUE)
  55. }

  56. MergeTidSets <- function(a,b,parameter=NULL){
  57.         len4i <- parameter
  58.         len4t <- length(a)
  59.         return(c(ifelse(a[1:len4i]+b[1:len4i],1,0),a[(len4i+1):len4t]*b[(len4i+1):len4t]))
  60. }

  61. AddFrequentItemset <- function(f,p){
  62.         ff <<- rbind(ff,p)
  63. }

  64. GetSupport <- function(ab,parameter=NULL){
  65.         len4i <- parameter
  66.         len4t <- length(ab)
  67.         return(sum(ab[(len4i+1):len4t]))
  68. }

  69. testEclat(itemsets,items,min_sup)
  70. rownames(ff) <- NULL
  71. print(ff)
复制代码
  • Learning Data Mining with R
  • Bater Makhabel
  • Published 2015-01-31

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Algorithm FREQUENT items Using item

沙发
Lisrelchen 发表于 2015-3-13 22:44:47
  1. > #clean the workspace and memory
  2. > rm( list=ls() )
  3. > gc()
  4.          used (Mb) gc trigger  (Mb) max used  (Mb)
  5. Ncells 302204 16.2     597831  32.0   597831  32.0
  6. Vcells 543603  4.2   22487081 171.6 43286117 330.3
  7. >
  8. > tbl <- read.csv("data/itemsets002.csv", header=FALSE)
  9. > tbl <- as.matrix(tbl)
  10. > colnames(tbl) <- NULL
  11. > itemsets <- t(tbl)
  12. > print(itemsets)
  13.      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
  14. [1,]    1    0    0    1    1    0    1    1    1
  15. [2,]    1    1    1    1    0    1    0    1    1
  16. [3,]    0    0    1    0    1    1    1    1    1
  17. [4,]    0    1    0    1    0    0    0    0    0
  18. [5,]    1    0    0    0    0    0    0    1    0
  19. >
  20. > items <- c(1,2,3,4,5)
  21. > min_sup <- 0.22*nrow(itemsets)
  22. >
  23. > f <- NULL
  24. > ff <- NULL
  25. > testEclat <- function(data,base_items,MIN_SUP){
  26. +         print(data)
  27. +         p <- GetFrequentTidSets(data,base_items,MIN_SUP)
  28. +         print(p)
  29. +         Eclat(p,f,MIN_SUP,length(base_items))
  30. +         return(f)
  31. + }
  32. >
  33. > GetFrequentTidSets <- function(data,base_items,MIN_SUP){
  34. +         tidsets <- NULL
  35. +         data <- cbind(data,apply(data,1,sum))
  36. +         items <- diag(length(base_items))
  37. +         for(idx in seq(nrow(data))){
  38. +                 tidsets <- rbind(tidsets,c(items[idx,],data[idx,]))       
  39. +         }
  40. +         tidsets <- tidsets[tidsets[,ncol(tidsets)]>MIN_SUP,-ncol(tidsets)]
  41. +         return(tidsets)
  42. + }
  43. >
  44. > Eclat <- function(p,f,MIN_SUP,parameter=NULL){
  45. +         len <- nrow(p)
  46. +         for(idx in seq(len)){
  47. +                 a <- p[idx,]
  48. +                 AddFrequentItemset(f,a)
  49. +                 pa <- NULL
  50. +                 jdx <- idx + 1
  51. +                 while(idx<jdx && jdx<=len){
  52. +                         b <- p[jdx,]
  53. +                         ab <- MergeTidSets(a,b,parameter)
  54. +                         if(GetSupport(ab,parameter)>=MIN_SUP){
  55. +                                 pa <- rbind(pa,ab)
  56. +                         }
  57. +                         jdx <- jdx + 1
  58. +                 }
  59. +                 rownames(pa) <- NULL
  60. +                 if(!IsEmptyTidSets(pa)){
  61. +                         #print(pa)
  62. +                         Eclat(pa,f,MIN_SUP,parameter)
  63. +                 }
  64. +         }
  65. + }
  66. >
  67. > IsEmptyTidSets <- function(pa){
  68. +         if(length(pa)>0)return(FALSE)
  69. +         return(TRUE)
  70. + }
  71. >
  72. > MergeTidSets <- function(a,b,parameter=NULL){
  73. +         len4i <- parameter
  74. +         len4t <- length(a)
  75. +         return(c(ifelse(a[1:len4i]+b[1:len4i],1,0),a[(len4i+1):len4t]*b[(len4i+1):len4t]))
  76. + }
  77. >
  78. > AddFrequentItemset <- function(f,p){
  79. +         ff <<- rbind(ff,p)
  80. + }
  81. >
  82. > GetSupport <- function(ab,parameter=NULL){
  83. +         len4i <- parameter
  84. +         len4t <- length(ab)
  85. +         return(sum(ab[(len4i+1):len4t]))
  86. + }
  87. >
  88. > testEclat(itemsets,items,min_sup)
  89.      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
  90. [1,]    1    0    0    1    1    0    1    1    1
  91. [2,]    1    1    1    1    0    1    0    1    1
  92. [3,]    0    0    1    0    1    1    1    1    1
  93. [4,]    0    1    0    1    0    0    0    0    0
  94. [5,]    1    0    0    0    0    0    0    1    0
  95.      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
  96. [1,]    1    0    0    0    0    1    0    0    1     1     0     1     1     1
  97. [2,]    0    1    0    0    0    1    1    1    1     0     1     0     1     1
  98. [3,]    0    0    1    0    0    0    0    1    0     1     1     1     1     1
  99. [4,]    0    0    0    1    0    0    1    0    1     0     0     0     0     0
  100. [5,]    0    0    0    0    1    1    0    0    0     0     0     0     1     0
  101. NULL
  102. > rownames(ff) <- NULL
  103. > print(ff)
  104.       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
  105. [1,]    1    0    0    0    0    1    0    0    1     1     0     1     1     1
  106. [2,]    1    1    0    0    0    1    0    0    1     0     0     0     1     1
  107. [3,]    1    1    1    0    0    0    0    0    0     0     0     0     1     1
  108. [4,]    1    1    0    0    1    1    0    0    0     0     0     0     1     0
  109. [5,]    1    0    1    0    0    0    0    0    0     1     0     1     1     1
  110. [6,]    1    0    0    0    1    1    0    0    0     0     0     0     1     0
  111. [7,]    0    1    0    0    0    1    1    1    1     0     1     0     1     1
  112. [8,]    0    1    1    0    0    0    0    1    0     0     1     0     1     1
  113. [9,]    0    1    0    1    0    0    1    0    1     0     0     0     0     0
  114. [10,]    0    1    0    0    1    1    0    0    0     0     0     0     1     0
  115. [11,]    0    0    1    0    0    0    0    1    0     1     1     1     1     1
  116. [12,]    0    0    0    1    0    0    1    0    1     0     0     0     0     0
  117. [13,]    0    0    0    0    1    1    0    0    0     0     0     0     1     0
  118. >
复制代码

藤椅
tonyme2 在职认证  发表于 2015-3-16 08:32:59
support

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-28 17:40