📄 nglgz.m
字号:
% 本程序是为数据挖掘作业而写
% 其中sup表示最小支持度
% conf表示最小置信度
% Shw是事务矩阵,行表示一个事务,列表示项目,若某一事务没有某项,
% 则该项用0来表示。每一个项目要用数字来表示,如:[1 2 0 4 0 6]这个事务中没有项目3 和5 .
% 本程序作者:realghost,联系方式:slqinyi@gliet.edu.cn或QQ 14564470
% 本程序最后修改时间为:2006年2月25日
% 本程序仅用于学习和交流,请不要用于毕业设计或是他用,谢谢
function y=nglgz(sup,conf,shw)
[m1,n1]=size(shw); % 事务数据库的维数
C0=1:n1; % 初始候选K项集(k=1)
C0=C0';
C=zeros(n1*(n1-1),n1,n1); % 初始化候选K项集
L=zeros(n1*(n1-1)/2,n1,n1); % 初始化频繁K项集
% 下面开始找频繁K项集
for k=1:n1
if k==1
temp_C=C0;
[m2,n2]=size(C0);
C(1:m2,1:n2,k)=C0;
else
temp_C=caoji(temp_L); % 由频繁K项集产生候选K+1项集
[m2,n2]=size(temp_C);
C(1:m2,1:n2,k)=temp_C;
end
temp_L=[];
for i=1:m2
c_count=0;
for j=1:m1
if pisin(temp_C(i,:),shw(j,:))==1
c_count=c_count+1;
end
end
if c_count>=3
temp_L=[temp_L;temp_C(i,:)];
end
end
[m3,n3]=size(temp_L);
L(1:m3,1:n3,k)=temp_L;
end
kc=[];
kl=[];
for k=1:n1
if C(:,:,k)==0
kc=[kc,k];
end
if L(:,:,k)==0
kl=[kl,k];
end
end
C(:,:,kc)=[]; % 把全是零的阵删掉
L(:,:,kl)=[];
% 以下找出关联规则
guanlian=zeros(3*n1,n1+4,n1);
for k=2:4
temp=L(:,:,k);
temp=quling(temp);
temp_g=guanlianbiaoshi(temp,shw,conf);
[m5,n5]=size(temp_g);
guanlian(1:m5,1:n5,k)=temp_g;
end
kg=[];
for k=1:n1
if guanlian(:,:,k)==0
kg=[kg,k];
end
end
guanlian(:,:,kg)=[];
% 输出所有的候选K项集
[m,n,p]=size(C);
for k=1:p
CC=quling(C(:,:,k))
end
% 输出所有的频繁K项集
[m,n,p]=size(L);
for k=1:p
LL=quling(L(:,:,k))
end
% 输出所有满足条件的关联规则
[m,n,p]=size(guanlian);
for k=1:p
gl=quling(guanlian(:,:,k))
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -