模糊等价矩阵.docx
《模糊等价矩阵.docx》由会员分享,可在线阅读,更多相关《模糊等价矩阵.docx(8页珍藏版)》请在冰豆网上搜索。
![模糊等价矩阵.docx](https://file1.bdocx.com/fileroot1/2023-1/24/4e60033e-b28d-446a-9d76-37187c3a1578/4e60033e-b28d-446a-9d76-37187c3a15781.gif)
模糊等价矩阵
模糊等价矩阵”;英文对照
fuzzyequivalencematrix;
”模糊等价矩阵”;在学术文献中的解释
1、R满足自反性、对称性,且满足:
(3)传递性min(r*k,r助)镇r.j’称为模糊等价矩阵,根据任意指定的闭值(0耳入蕊1),将R‘载为普通等价矩阵R‘,‘人
文献来源
2、这一矩阵称为模糊等价矩阵.用平方自合成法可以构造出等价矩阵,方法如下:
R.R==R.R.R.=R.若R=R.则R为模糊等价矩阵
基于模糊等价关系的模糊聚类分析收藏
假设R是X上的模糊等价关系,则对任意的a,R的a-截集是X上的普通等价关系,因此,可以根据X上的模糊关系,对X进行模糊分类。
当取不同的a值,则可以得到不同的分类结果,即分类是动态的。
实际操作中,一般情况下,我们所获得是一系列样本,假设有N个,每个样本可以看作是M维空间中的一个点。
可以表示如下,论域:
对第i个元素有
1.数据预处理
考虑到不同的数据可能有不同的量纲,因此,再处理之前,有必要对数据进行相当的变换。
常用的变换标准差变换和极差变换:
标准差变换:
经过变换后,每个变量的均值为0,标准差为1,并可以消除量纲的影响,但值不一定在0和1之间。
极差变换:
经过变换后,消除了量纲的影响,并且值在0和1之间。
2模糊相似矩阵的建立
由已知的数据,可以建立论域上的模糊关系矩阵,其目的是为构造模糊等价矩阵提供数据。
计算模糊关系矩阵由很多方法,如夹角余弦法,相关系数法,算术平均法,几何平均法,最大最小法,以夹角余弦为例,可用下述公式计算:
3用传递闭包法求模糊等价矩阵
由以上过程所建立的矩阵一般仅具有自反性和对称性,不满度传递性,必须进行变换转换为模糊等价矩阵。
常采用传递闭包法,即从上述R矩阵出发,求R^2-->R^4-->R^8...,直到第一次出现R^k×R^k=R^k,这时表明R以具有传递性。
4根据模糊等价矩阵和某以a得到分类结果。
部分代码实现:
'**********************************数据的标准差变化****************************
'
'过程名:
Norm_Diff
'参数:
Data()-Double,待变换的二维数组
'说明:
执行改函数后数组中了保存变换的数据
'作者:
'修改者:
laviepbt
'修改日期:
2006-11-1
'
'**********************************数据的标准差变化****************************
PublicSubNorm_Diff(ByRefData()AsDouble)
DimmAsInteger,NAsInteger,iAsInteger,jAsInteger
DimAveAsDouble,sAsDouble
N=UBound(Data,1):
m=UBound(Data,2)'n样品数,m变量数Forj=1Tom
Ave=0
Fori=1ToN
Ave=Ave+Data(i,j)
Next
Ave=Ave/N'ave是平均值
s=0
Fori=1ToN
s=s+(Data(i,j)-Ave)^2's是标准差
Next
s=Sqr(s/N)
Fori=1ToN
Data(i,j)=(Data(i,j)-Ave)/s
Next
Next
EndSub
'**********************************数据的极差变换****************************
'
'过程名:
Extre_Diff
'参数:
Data()-Double,待变换的二维数组
'说明:
执行改函数后数组中了保存变换的数据
'作者:
'修改者:
laviepbt
'修改日期:
2006-11-1
'
'**********************************数据的极差变换****************************
PublicSubExtre_Diff(ByRefData()AsDouble)
DimmAsInteger,NAsInteger,iAsInteger,jAsInteger
DimMaxAsDouble,MinAsDouble,dAsDouble
N=UBound(Data,1):
m=UBound(Data,2)'N样品数,M变量数Forj=1Tom
Max=-10000000000#:
Min=10000000000#
Fori=1ToN
IfData(i,j)>MaxThenMax=Data(i,j)
IfData(i,j)Next
d=Max-Min'd是极差
Fori=1ToN
Data(i,j)=(Data(i,j)-Min)/d'极差标准化变换
Next
Next
EndSub
'**********************************夹角余弦法****************************
'
'过程名:
Angle_Cos
'参数:
Data()-Double,二维数组数据
'R()-Double,相似矩阵
'说明:
'作者:
'修改者:
laviepbt
'修改日期:
2006-11-1
'
'**********************************夹角余弦法****************************
PublicSubAngle_Cos(ByRefData()AsDouble,ByRefR()AsDouble)DimmAsInteger,NAsInteger,iAsInteger,jAsInteger,kAsIntegerDimS1AsDouble,Si2AsDouble,Sj2AsDouble
N=UBound(Data,1):
m=UBound(Data,2)'N样品数,M变量数Fori=1ToN
Forj=1ToN
Ifi=jThen
R(i,j)=1
Else
S1=0:
Si2=0:
Sj2=0
Fork=1Tom
S1=S1+Data(i,k)*Data(j,k)
Si2=Si2+Data(i,k)^2
Sj2=Sj2+Data(j,k)^2
Next
R(i,j)=Int((S1/Sqr(Si2*Sj2))*1000+0.5)/1000
EndIf
Next
Next
EndSub
'**********************************相关系数法****************************
'
'过程名:
Correlation
'参数:
Data()-Double,二维数组数据
'R()-Double,相似矩阵
'说明:
'作者:
'修改者:
laviepbt
'修改日期:
2006-11-1
'
'**********************************相关系数法****************************
PublicSubCorrelation(ByRefData()AsDouble,ByRefR()AsDouble)DimmAsInteger,NAsInteger,iAsInteger,jAsInteger,kAsInteger
DimXiaAsDouble,XjaAsDouble
DimS1AsDouble,Si2AsDouble,Sj2AsDouble
N=UBound(Data,1):
m=UBound(Data,2)'N样品数,M变量数Fori=1ToN
Forj=1ToN
Ifi=jThen
R(i,j)=1
Else
Xia=0:
Xja=0
Fork=1Tom
Xia=Xia+Data(i,k)
Xja=Xja+Data(j,k)
Next
Xia=Xia/m
Xja=Xja/m
S1=0:
Si2=0:
Sj2=0
Fork=1Tom
S1=S1+Abs((Data(i,k)-Xia)*(Data(j,k)-Xja))
Si2=Si2+(Data(i,k)-Xia)^2
Sj2=Sj2+(Data(j,k)-Xja)^2
Next
R(i,j)=Int((S1/Sqr(Si2*Sj2))*1000+0.5)/1000
EndIf
Next
Next
EndSub
'**********************************传递闭包法****************************
'
'过程名:
TR
'参数:
R()-Double,相似矩阵
'RR()-Double,模糊乘积矩阵
'说明:
'作者:
'修改者:
laviepbt
'修改日期:
2006-11-1
'
'**********************************传递闭包法****************************
PublicSubTR(ByRefR()AsDouble,ByRefRR()AsDouble)
DimNAsInteger,lAsInteger
DimiAsInteger,jAsInteger,kAsInteger
Dimi1AsInteger,j1AsInteger
DimdMaxAsDouble
N=UBound(R,1)
ReDimdMin(1ToN)AsDouble
l=0
100:
l=l+1
Ifl>100Then
MsgBox"已进行100次自乘,仍然没有获得传递性",vbCritical,"错误"
ExitSub
EndIf
Fori=1ToN
Forj=1ToN
Fork=1ToN
IfR(i,k)<=R(k,j)Then
dMin(k)=R(i,k)
Else
dMin(k)=R(k,j)
EndIf
Next
dMax=dMin
(1)'模糊矩阵的乘法,取小取大
Fork=1ToN
IfdMin(k)>dMaxThendMax=dMin(k)
Next
RR(i,j)=dMax
Next
Next
Fori=1ToN
Forj=1ToN
'判断是否式模糊等价矩阵,若非则继续做
IfR(i,j)<>RR(i,j)Then
Fori1=1ToN
Forj1=1ToN
R(i1,j1)=RR(i1,j1)
Next
Next
GoTo100
EndIf
Next
NextEndSub