程序输入:支持度=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)