模糊聚类分析及matlab程序实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模糊聚类分析及matlab 程序实现
采用模糊数学语言对按一定的要求进行描述和分类的数学方法称为模糊聚
类分析。聚类分析主要经过标定和聚类两步骤。
【1】 1 标定(建立模糊相似矩阵)
城市居民食品零售价格,第t 时刻第i 种食品的零售价记为),(t i x 。 相似矩阵R 的构建方法:NTV 法
设时间序列),(j i A 表示食品i 在时间t 的价格,其中i=1,2…42;t=1,2…39。 ∑∑==--=m
k jk ik m k jk ik x x
x x j i R 11
)
,max (1),((其中i,j,k=1,2…42,m=39) 42*42),(j i R R = 2 聚类
2.1 计算R 的传递闭包:
对模糊相似矩阵R,依次用平方法计算,2R ,4R ,…,t
2R ,…,当第一次出现k k k R R R =*时,则称k R 为传递闭包。
【1】
2.2 开始聚类:【2】 (1)令T={1,2,3…42},取)1(xi T ∈ ,令X 、Q 为空集;
(2)令0=j ;
(3)若λ>=),(j xi R 且X x j ∉,则令}{j X X ⋃=,}{j Q Q ⋃=;
(4)1+=j j ;
(5)若n j <,返回(1);
(6)若Q 为空集,怎输出聚类x,X -T T =;
(7))1(xi Q =,}{xi Q Q -=,返回(2)。
设置不同的置信水平λ值,就可以得到不同的分类。
Matlab 程序实现:
A=data;
[N M] = size(A);
for i = 1:N
for j = 1:N
R(i,j)=abs(1-sum(abs(A(i,:)-A(j,:)))/sum(max([A(i,:);A(j,:)])));
end
end
for j=1:42
for i=1:42
y(i,j)=0;
for k=1:42
mn(k)=min(R(i,k),R(k,j));
end
y(i,j)=max(mn);
end
end
numda=[1 0.9 0.95 0.85 0.8 0.75 0.55 0.7 0.655 0.65 0.6 0.55 0.5 0.45 0.454 0.4 0.45 0.3 0.35 0.255 0.25 0.2 0.15 0.1];
for i=1:42
TT(i)=i;
end
for i=1:length(numda)
disp ('当分类系数是');
disp(numda(i));
a=numda(i);
T=TT;
disp ('分类为');
while 1
if ~isempty(T)
xi=T(1);
end
X=[];Q=[];
while 1
for j=1:42
if (y(xi,j)>=a)&isempty(intersect(X,j))
X=union(X,j);
Q(length(Q)+1)=j;
end
end
if isempty(Q)
disp(X);
break
else
xi=Q(1);
Q(1)=[];
end
end
T=setdiff(T,X); if isempty(T) break
end
end
end