R语言 关联规则简单实现

一、数据集

二、要求

程序输入:支持度=50%;置信度=80%

程序输出:

2频繁项集L2: {1,3},{2,3},{2,5},{3,5}

满足条件的2项集关联规则:{1,3}, {2,5}, {5,2}

三、代码

rm(list=ls())
#setwd("D:/AUniversity/GameDesign/R/Project/关联规则")
#最小支持度、置信度
minsup=0.5
mincon=0.8

#创建数据集array
# vec1=c(1,3,4,0)
# vec2=c(2,3,5,0)
# vec3=c(1,2,3,5)
# vec4=c(2,5,0,0)
# dim1=c(1,2,3,4)
# dim2=c("T1","T2","T3","T4")
# data=array(c(vec1,vec2,vec3,vec4),dim=c(4,4),dimnames=list(dim1,dim2))

#创建数据集matrix
T1=c(1,3,4,0)
T2=c(2,3,5,0)
T3=c(1,2,3,5)
T4=c(2,5,0,0)
data=rbind(T1,T2,T3,T4)
max_data=max(data)
#创建所有项集
num_sup=0
for(i in 1:max_data-1){
  num_sup=num_sup+i
}
item=array(dim = c(num_sup,2))
i=1
for(j in 1:(max(data)-1)){
  for(k in (j+1):max(data)){
    item[i,]=c(j,k)
    i=i+1
  }
}

#选出2频繁项集
#统计每种项集出现的次数
find_sup=vector()
find_sup[1:nrow(item)]=0
for(i in 1:nrow(item)){
  for(j in 1:nrow(data)){
    if((item[i,1] %in% data[j,])&(item[i,2] %in% data[j,]))
      find_sup[i]=find_sup[i]+1
  }
}
#计算支持度并重新划分项集,times记录共同出现的次数
sup_index=which(find_sup/nrow(data)>=minsup)
times=find_sup[sup_index]
arr1=item[sup_index,]
arr2=arr1[,c(2,1)]
arr=rbind(arr1,arr2)
#arr

#计算项集置信度
#先计算第一列出现次数
find_con=vector()
find_con[1:nrow(arr)]=0
for(i in 1:nrow(arr)){
  for(j in 1:nrow(data)){
    if(arr[i,1] %in% data[j,])
      find_con[i]=find_con[i]+1
  }
}
#同时出现/第一列出现
temp=1
confidence=vector()
confidence[1:nrow(arr)]=0
for(i in 1:nrow(arr)){
  confidence[i]=times[temp]*1.0/find_con[i]
  temp=temp+1
  if(temp==5)
    temp=1
}
#当置信度大于最小置信度,显示项集
con_index=which(confidence>=mincon)
result=arr[con_index,]
print("2频繁项集")
print(arr)
print("满足条件的2项集关联规则",result)
print(result)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值