粗糙集属性约简matlab程序解析
- 格式:doc
- 大小:18.00 KB
- 文档页数:8
广义多粒度粗糙集属性约简和matlab计算
张先韬
【期刊名称】《计算机工程与应用》
【年(卷),期】2016(052)008
【摘要】定义了基于广义多粒度粗糙集的属性约简,研究了约简的一些基本性质,给出matlab计算的过程,并给出计算实例.定义了信息系统的严格协调、软不协调性、粒度协调、粒度不协调,定义了广义多粒度下约简、粒度约简、(下/上近似)分布协
调约简、(下/上近似)质量协调约简,并给出部分结论.广义多粒度粗糙集的约简适用于乐观多粒度粗糙集和悲观多粒度粗糙集.研究结果可完善多粒度粗糙集理论,为理
论研究和应用奠定基础.
【总页数】6页(P43-48)
【作者】张先韬
【作者单位】中煤科工集团重庆研究院有限公司,重庆 400039;瓦斯灾害监控与应
急技术国家重点实验室,重庆 400039
【正文语种】中文
【中图分类】TP18
【相关文献】
1.多粒度粗糙集模型下的矩阵属性约简算法 [J], 李丹
2.基于决策表的多粒度粗糙集属性约简研究 [J], 赵思雨;钱婷;魏玲
3.基于局部可调节多粒度粗糙集的属性约简 [J], 侯成军; 米据生; 梁美社
4.利用多粒度粗糙集属性约简和TOPSIS的IPv6负载均衡机制 [J], 罗宏等;蓝耿;聂良刚;粟光旺;伍一坤
5.多源覆盖信息系统下的加权广义多粒度粗糙集模型及其应用 [J], 骆公志;陈佳馨因版权原因,仅展示原文概要,查看原文内容请购买。
粗糙集属性约简注:这是我学粗糙集时老师给的作业属性约简的顺序如下:求正域、生成未经处理的区分矩阵、对区分矩阵进行化简、求核、对已经处理过的区分矩阵进行属性约简。
约简后的决策表有26行,所有12个属性都是正域中的属性,核为空程序:% main.mtic;a=[ 1,1,1,1,0,0,0,0,1,1,0,1;0,0,0,0,0,0,0,0,0,0,0,0;1,0,1,0,0,0,0,0,0,1,0,0;0,0,0,1,1,1,1,0,1,0,1,1;1,0,0,1,1,1,1,1,0,1,1,0;0,1,0,1,1,1,1,1,1,0,0,1;1,0,0,0,1,1,1,0,0,1,1,1;1,1,1,1,0,0,0,0,1,1,0,1;1,0,1,1,1,0,0,0,1,1,0,1;1,1,1,1,0,0,0,0,1,1,0,1;1,0,1,1,1,0,0,0,1,1,0,1;1,0,1,1,1,0,0,0,1,1,0,1 ];d=[1;0;0;0;0;0;0;1;1;1;1;1];pos=posCD(a,d);dismat=dismatrix(a,d,pos);dism=disbe(dismat);core=cor(dism); [red,row]=redu(dism); time=toc% dismatrix.m% 生成未经处理的区分矩阵dismatfunction dismat=dismatrix(a,d,pos)[m,n]=size(a);p=1;index1=0;index2=0;index=0;dis=-1*ones(m*(m-1)/2,n);for i=1:mfor j=i+1:mif (isxbelongtopos(i,pos)&~isxbelongtopos(j,pos))...|(~isxbelongtopos(i,pos)&isxbelongtopos(j,pos)). ..|(isxbelongtopos(i,pos)&isxbelongtopos(j,pos)&~i sxybelongtoindD(i,j,d))index2=1;endif index2==0continue;endfor k=1:nif a(i,k)~=a(j,k)dis(p,k)=1;index1=1;else dis(p,k)=0;endendif index1==1p=p+1;index=1;endindex1=0;index2=0;endendif p<=m*(m-1)/2if index==0dismat=[];return;endif dis(p,1)==-1p=p-1;endelse p=m*(m-1)/2;enddismat=dis(1:p,:);% redu.m% 对已经处理过的区分矩阵进行知识约简function [red,row]=redu(dism)[m,n]=size(dism);red=[];row=0;if m<=0return;endfor i=1:nif dism(1,i)~=0row=row+1;endendred(1:row,:)=zeros(row,n);j=1;for i=1:rowwhile dism(1,j)==0j=j+1;endred(i,j)=1;j=j+1;endtemp=[];tempdis=[];rowd=0;rowd1=0;for i=2:mj=1;while j<=rowtemp=uni(dism(i,:),red(j,:));[s,n]=size(temp);rowd1=rowd+s;tempdis(rowd+1:rowd1,:)=temp;rowd=rowd1;j=j+1;temp=[];endred=[];red=disbe(tempdis);tempdis=[];[row,n]=size(red);rowd=0;rowd1=0;end% disbe.m% 对区分矩阵或者约简矩阵进行化简即去掉包含关系function dism=disbe(dis)[m,n]=size(dis);p=m;for i=1:mif dis(i,1)~=-1for j=1:mif i~=j & dis(j,1)~=-1if dis(i,:)<=dis(j,:)dis(j,1)=-1;p=p-1;elseif dis(i,:)>=dis(j,:)dis(i,:)=dis(j,:);dis(j,1)=-1;p=p-1;endendendendenddism=ones(p,n);j=1;for i=1:pwhile j<=m & dis(j,1)==-1j=j+1;enddism(i,:)=dis(j,:);j=j+1;end% posCD.m% a为条件属性矩阵,d为决策属性向量% pos为正域,保存条件属性矩阵的索引值function pos=posCD(a,d)[m,n]=size(a);p=m;index=0;for i=1:mif a(i,1)~=-1for j=i+1:mif a(j,1)~=-1 &(a(i,:)==a(j,:)&d(i)~=d(j))a(j,1)=-1;p=p-1;index=1;endendif index==1a(i,1)=-1;p=p-1;index=0;endendendpos=zeros(p,1);i=1;for r=1:pwhile a(i,1)==-1&i<=mi=i+1;endpos(r)=i;r=r+1;i=i+1;end% cor.m% 对已经处理过的区分矩阵求核function core=cor(dism)[m,n]=size(dism);core1=zeros(1,n);number=0;for i=1:mnum=0;p=0;for j=1:nif dism(i,j)~=0num=num+1;p=j;endendif num==1core1(p)=1;number=number+1;endendif number==0core=0;elsecore=zeros(1,number);j=1;for i=1:numberwhile core1(j)==0j=j+1;endcore(i)=core1(j);j=j+1;endend% uni.m%对区分矩阵的第i行和red(j,:)运算,即将a中%所有的1分别插入到red(j,:)中,待去掉包含关系function tempred=uni(disa,red)[m,n]=size(red);num=0;for i=1:nif disa(i)~=0num=num+1;endendtempred=ones(m*num,n);temp=[];j=1;for i=1:numwhile disa(j)==0j=j+1;endtemp=red;temp(:,j)=ones(m,1);tempred((i-1)*m+1:i*m,:)=temp;j=j+1;end% isxbelongtopos.m% 判断x是否在正域pos中% x为索引值% 返回值p,如果x在pos中p=1否则p=0 function p=isxbelongtopos(x,pos)[m,n]=size(pos);p=0;if x<=0p=-1;return;endfor i=1:mif x==pos(i)p=1;break;endend% isxybelongtoindD.m% 判断x,y是否在indD中% x,y为索引值% 返回值p,如果x,y在indD中p=1否则p=0 function p=isxybelongtoindD(x,y,d)if x<=0 | x>size(d) | y<=0 | y>size(d) p=-1;return;endif d(x)==d(y)p=1;else p=0;end约简后的决策表如有侵权请联系告知删除,感谢你们的配合!。
第21卷第4期重庆邮电大学学报(自然科学版)Vol .21 No .42009年8月Journa l of Chongq i n g Un i versity of Posts and Teleco mm un i ca ti on s(Na tura l Sc i ence Ed iti on)Aug .2009一种基于Rough 集的海量数据属性约简方法收稿日期:2009203225 基金项目:国家自然科学基金(60573068);重庆市自然科学基金重点项目(2008BA2017);重庆市教育委员会科学技术研究项目(KJ090512,KJ7150080050)胡 峰,张 杰,刘 静,肖大伟(重庆邮电大学计算机科学与技术研究所,重庆400065)摘 要:海量数据属性约简的研究是数据挖掘研究中的一个难点。
已有的许多属性约简算法对于空间复杂度考虑得不够,导致了算法不能适应大数据集的约简处理。
结合分治法,在给定属性序下,提出了基于分治策略的属性约简算法。
利用该算法可以快速得到海量数据的属性约简结果。
仿真实验结果说明了该算法的高效性。
关键词:粗集;数据挖掘;分治;属性约简;属性序中图分类号:TP18 文献标识码:A文章编号:16732825X (2009)0420455206A ttr i bute reducti on a lgor ith m for huge da t a ba sed on rough set theoryHU Feng,ZHANG J ie,L IU J ing,X I A O Da 2wei(I nstitute of Computer Science and Technol ogy,Chongqing University of Posts and Telecommunicati ons,Chongqing 400065,P .R.China )Abstract:The attribute reducti on of huge data is a difficult p r oble m in the research of data m ining .A t p resent,many at 2tribute reducti on algorith m s lack considerati on on s pace comp lexity,which makes the m cannot adap t t o the reducti on of large data set .I n this paper,an attribute reducti on algorith m of ordered attributes was p r oposed based on the divide and conquer,and this algorith m can be used t o dealwith huge data reducti on .Si m ulati on results show the efficiency of the algo 2rith m.Key words:r ough set;data m ining;divide and conquer;attribute reducti on;attribute order0 引 言海量数据是指巨大的、浩瀚的数据。
粗糙集-属性约简-matlab程序
Data2为条件属性,decision2为决策属性
%%%my_test函数实现
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取信息系统文件
file = textread('data2.txt','%s','delimiter','\n','whitespace',''; %读取文件信息,每一行为一个胞元
[m,n]=size(file; %胞元的大小
for i=1:m
words=strread(file{i},'%s','delimiter',' ';%读取每个胞元中字符,即分解胞元为新的胞元
words=words';%转置
X{i}=words;
end
X=X';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%
[B,num,AT]=my_reduct(X; %信息系统的约简
ind_A T=ind(X; %信息系统的不可等价关系
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%显示约简信息系统
disp('约简后的条件系统为:';
[m,n]=size(B;
for i=1:m
disp(B{i};
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %读取决策系统文件
file = textread('decision2.txt','%s','delimiter','\n','whitespace','';
[m,n]=size(file;
for i=1:m
words=strread(file{i},'%s','delimiter',' ';
words=words';
D{i}=words;
end
D=D';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%决策系统的正域约简
X_D=X;
[l,k]=size(X_D{1};
pos_d=pos(X_D,D;%正域
for i=1:m %%%%%%%%%%%%%%正域有问
题%%%%%%%%%%%%%%%%%%%%%%%%%%%
if(~ismember(num(i,pos_d
B{i}=''; %若约简后的信息系统B{i}不在正域中则删除该行
end %因为相同的条件得到的决策不一样,
end
%将在正域规则下约简过的信息系统B连接决策系统D
[m,n]=size(B;
for i=1:m
if(~isequal(B{i},''
B{i}{1,k+1}=D{i}{1};
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%显示约简决策系统
disp('约简后的决策系统为:';
[m,n]=size(B;
for i=1:m
disp(B{i};
end
--------------------------------------------------------------------------------
%%%%%my_reduct函数实现
function [C,num,reduct_attr]=my_reduct(X
%%%%%y为约简后的cell数组,reduct_attr为可约去的属性
%X为行向量(元素为胞元
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%约简
[m,n]=size(X;
[p,k]=size(X{1};
ind_A T=ind(X;%寻找不可等价关系
reduct_attr=[]; %可约去的的属性
num=zeros(m,1;%约简后的信息对应的个体
for i=1:k
B=delete_A T(X,i;
if(isequal(ind_A T,ind(B %若IND(AT-{a}=IND(A T
reduct_attr=union(reduct_attr,i; %则寻找到可约去的属性
X=B;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%剔除重复的行
k=1;
for i=1:m
if(~isequal(ind_A T{i},[]
C_i=ind_A T{i,1}(1;
num(k=i;
C{k,1}=X{C_i}; %返回约简后的信息系统
k=k+1;
end
end
--------------------------------------------------------------------------------
%%%%%ind函数实现
function
yy=ind(X %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%寻找不可分辨关系[m,n]=size(X;
k=1;
ind_A T=cell(m,1;
for i=1:m
for j=(i+1:m %潜在问题,如i=m是终止循环,此时若最后一行不为空的话,将漏扫if(~isequal(X{i},'' %若X{i}不为空
ind_A T{k}=union(ind_A T{k},i; %不可等价关系赋初值
if(isequal(X{i},X{j}
X{j}=''; %若X{i}==X{j},则删除X{j}
ind_A T{k}=union(ind_A T{k},j; %寻找不可等价关系
end
end
end
k=k+1;
end
--------------------------------------------------------------------------------
%%%delete_A T函数的源代码
function y=delete_AT(X,ATi % 删除X中第i列的属性值
[m,n]=size(X;
[l,k]=size(X{1};
for i=1:m
X{i}{A Ti}='';
end
y=X;
-------------------------------------------------------------------------------- %%%%%pos函数实现
function pos_d=pos(X,D%求决策系统的正域函数
%X为条件属性,D为决策属性
ind_D=ind(D; %求决策属性D的不可等价关系
[m,n]=size(ind_D;
ind_X=ind(X; %求信息系统属性X的不可等价关系
low=[]; %存储正域个体的编号
for i=1:m
for j=1:m
if(~isequal(ind_X{i},[]&&~isequal(ind_D{j},[]
if(ismember(ind_X{i},ind_D{j}
low=union(low,ind_X{i};%由性质Pos_A T(d=low_AT(X1Ulow_A T(X2U... end
end
end
end
pos_d=low;。