关于聚类的问题 请教
程序设计题二: F聚类算法步骤如下,试编写“F聚类”程序。第一步 建立F相似关系(求相似矩阵):
设U = { u1, u2, ……, un }为待分类的全体,其中某一待分类对象由一组数据表征如下:
ui = ( xi1, xi2, ……, xim ) ( i=1, 2, ……, n )
ui与uj的相似关系 的建立方法很多,部分列举如下:
(1) 数量积法:
其中M为一适当选择之正数,满足 ;
(2)相关系数法:
其中 , ;
(3)最大最小法:
(4)算术平均最小法:
(5)几何平均最小法:
(6)绝对值指数法:
(7)绝对值减数法:
其中,c适当选取,使 ;
(8)专家打分法(略)。
第二步 建立等价关系(求等价矩阵):
根据相似矩阵 ,采用平方法求出R的传递闭包 (即等价矩阵)。
令 ,则 ,故至多经过 次的平方法即可得到传递闭包。
注:F乘法
( “取小”,如0.2 0.6=0.2
“取大”,如0.2 0.6=0.6 )
第三步 聚类:
选定若干不同的λ值(0≤λ≤1,λ从1降至0),得到截矩阵 ,
根据 进行分类,……,最后汇总聚类。
例:环境单元分类。
每个环境单元包括空气、水分、土壤、作物四个要素。环境单元的污染状况由污染物在四要素中含量的超限度来描述。现有五个环境单元,它们的污染数据如下:
设 ,
试对U进行分类。
首先,按方法(7)建立F相似关系,取c=0.1,得F相似矩阵
接下来,用平方法求传递闭包:
所以, 是传递闭包,也就是所求的等价矩阵 。
最后,进行分类和聚类:
当λ= 0.4时:
,U分为一类:{ I, II, III, IV, V };
当λ= 0.5时:
,U分为二类:{ I, III, IV, V },{ II };
当λ= 0.6时:
,U分为三类:{ I, III },{ IV, V },{ II };
当λ= 0.8时:
,U分为四类:{ I, III },{ II },{ IV },{ V };
当λ= 1时:
,U分为五类:{ I },{ II },{ III }, { IV },{ V }。
聚类图如下所示: