楼主: suhui0723
3549 2

[程序分享] 求R语言 Min-apriori算法程序包 [推广有奖]

  • 0关注
  • 3粉丝

已卖:235份资源

硕士生

37%

还不是VIP/贵宾

-

威望
0
论坛币
1234 个
通用积分
0.4800
学术水平
12 点
热心指数
13 点
信用等级
9 点
经验
2381 点
帖子
119
精华
0
在线时间
159 小时
注册时间
2012-4-6
最后登录
2021-1-22

楼主
suhui0723 在职认证  发表于 2014-12-12 20:27:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问各位大牛 哪里能找到关联规则 min-apriori算法的程序包

要找程序包可以到哪里搜?
二维码

扫码加我 拉你入群

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

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

关键词:Apriori算法 Apriori Priori PRIOR Apr 程序

沙发
suhui0723 在职认证  发表于 2014-12-12 20:48:47
自己写了一个 供参考

  1. ##function:nextlist
  2. ## -input:频繁k-项集
  3. ## -output:候选(k+1)-项集
  4. nextlist <- function(old_list){
  5.         z <- 1
  6.         len <- length(old_list)
  7.         new_list <- c()
  8.         stgnum <- length(old_list[[1]])
  9.         if(len==1) return(new_list)
  10.         for (i in 1:(len-1)){
  11.                 for(j in (i+1):len){
  12.                         if(sum((old_list[[i]]==old_list[[j]])[1:(stgnum-1)])==(stgnum-1)){
  13.                                 #仅当前k-1项相同,才合并两项
  14.                                 temp <- unique(c(old_list[[i]],old_list[[j]]))
  15.                                 if (subpart(temp,old_list)==1){
  16.                                         new_list[[z]] <- temp
  17.                                         z <- z + 1
  18.                                         }
  19.                                 #检查新产生的项是否包含非频繁项集
  20.                                 }
  21.                         }
  22.                 }               
  23.         new_list <- unique(new_list)
  24.         return(new_list)
  25.         }

  26.        
  27. #function:subpart
  28. #-input:k-vector
  29. #-output:if all (k-1)-subsets in orig_list
  30. subpart <- function(vec,orig_list){
  31.         len <- length(vec)
  32.         vecsub <- c()
  33.         if (len<=2) return(1)
  34.         a <- 1
  35.         for (i in 1:(len-2)){
  36.                  temp <- ifinlist(vec[-i],orig_list)
  37.                  if (temp==0) {
  38.                         a <- 0
  39.                         break
  40.                         }
  41.                 }
  42.         return(a)
  43.         }

  44. #function:ifinlist
  45. #-input:vector
  46. #-output:if the vector in list
  47. ifinlist <- function(vec,orig_list){
  48.         len <- length(vec)
  49.         a <- 0
  50.         for (i in 1:length(orig_list)){
  51.                 if (sum(vec==orig_list[[i]])==len){
  52.                         a <- 1
  53.                         break
  54.                         }
  55.                 }
  56.         return(a)
  57.         }       


  58. SelecteData <- function(item,Base){
  59.         if (length(item)==0){
  60.                 print("warming:there's no selected data")
  61.                 return(0)
  62.                 }else{
  63.                         len <- length(item)
  64.                         selected_data <- c()
  65.                         for (i in 1:len){
  66.                                 tag <- match(item[[i]],names(Base))
  67.                                 selected_data <- cbind(selected_data,Base[,tag])
  68.                                 }
  69.                         return(as.data.frame(selected_data))
  70.                         }
  71.         }
  72.        
  73.        
  74. minApriori <- function(orig_list,Base,threshold_min){
  75.         varnum <- dim(Base)[2]
  76.         list1 <- orig_list
  77.         #list1用于迭代
  78.         #list2是符合阀值的list1
  79.         stginfo <- c()
  80.         z2 <- 1
  81.         stgnum <- 1
  82.         while (length(list1)>=1&stgnum<varnum){
  83.                 list2 <- c()
  84.                 list2_support <- c()
  85.                 z <- 1
  86.                 jishu <- 1   
  87.                 for(i in list1){
  88.                         stgnum <- length(i)
  89.                         temp_data <- SelecteData(i,Base)
  90.                         temp_support <- sum(apply(temp_data,1,min))
  91.                         if (temp_support >= threshold_min){
  92.                                 list2[[z]] <- i
  93.                                 z <- z + 1
  94.                                 list2_support <- c(list2_support,temp_support)
  95.                                 }
  96.                         jishu <- jishu + 1
  97.                         print(jishu)
  98.                         }
  99.                 list3 <- matrix(unlist(list2),ncol=stgnum,byrow=T)
  100.                
  101.                 temp_stginfo <- cbind(list3,list2_support)
  102.                 stginfo[[z2]] <- temp_stginfo
  103.                
  104.                 list1 <- nextlist(list2)
  105.                 z2 <- z2 + 1
  106.                 print(length(list1))
  107.                 }
  108.         return(stginfo)
  109.         }
  110.        
复制代码

已有 1 人评分经验 论坛币 收起 理由
李会超 + 60 + 60 精彩帖子

总评分: 经验 + 60  论坛币 + 60   查看全部评分

藤椅
wyfhdl 发表于 2015-7-6 15:44:58
suhui0723 发表于 2014-12-12 20:48
自己写了一个 供参考
要不要这么凶残,arules包里不是有么

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 12:21