求:FCM,PCM聚类算法MATLAB程序

求:FCM,PCM聚类算法MATLAB程序,第1张

function [U,center,result,w,obj_fcn]= fenlei(data)

[data_n,in_n] = size(data)

m= 2 % Exponent for U

max_iter = 100 % Max. iteration

min_impro =1e-5% Min. improvement

c=3

[center, U, obj_fcn] = fcm(data, c)

for i=1:max_iter

if F(U)>0.98

break

else

w_new=eye(in_n,in_n)

center1=sum(center)/c

a=center1(1)./center1

deta=center-center1(ones(c,1),:)

w=sqrt(sum(deta.^2)).*a

for j=1:in_n

w_new(j,j)=w(j)

end

data1=data*w_new

[center, U, obj_fcn] = fcm(data1, c)

center=center./w(ones(c,1),:)

obj_fcn=obj_fcn/sum(w.^2)

end

end

display(i)

result=zeros(1,data_n)U_=max(U)

for i=1:data_n

for j=1:c

if U(j,i)==U_(i)

result(i)=jcontinue

end

end

end

我贴部分FCM的Matlab代码:

expo = options(1) % Exponent for U

max_iter = options(2) % Max. iteration

min_impro = options(3) % Min. improvement

display = options(4) % Display info or not

obj_fcn = zeros(max_iter, 1)% Array for objective function

U = initfcm(cluster_n, data_n) % Initial fuzzy partition

% Main loop

for i = 1:max_iter,

[U, center, obj_fcn(i)] = stepfcm(data, U, cluster_n, expo)

if display,

fprintf('Iteration count = %d, obj. fcn = %f\桐宏n', i, obj_fcn(i))

end

% check termination condition

if i >1,

if abs(obj_fcn(i) - obj_fcn(i-1)) <min_impro, breakend,

end

end

其中

U = initfcm(cluster_n, data_n) % Initial fuzzy partition

这个就是初始化划分矩阵,随机产生一个隶属判轮芦度矩阵,

代码如下:

U = rand(cluster_n, data_n)

col_sum = sum(U)

U = U./col_sum(ones(cluster_n, 1), :)

上面就是它初始化的一个隶属度矩阵,

cluster_n行,data_n列。

即一列中从掘带上到下表示每个样本隶属与每一类的隶属度。

然后在算法中不断迭代

最后得到的还是如此大的一个矩阵,代表每个样本隶属与每一类的隶属度

然后选择最大的那个就是,它就属于那一类。

模糊C均值聚类算和源法,可将输入的数据集data聚为指定的cluster_n类\x0d\x0a\x0d\x0a【函数描述】 \x0d\x0a语法格式 \x0d\x0a[center, U, obj_fcn] = FCM(data, cluster_n, options)\x0d\x0a\x0d\x0a用法: \x0d\x0a1. [center,U,obj_fcn] = FCM(Data,N_cluster,options)\x0d\x0a2. [center,U,obj_fcn] = FCM(Data,N_cluster)\x0d\x0a\x0d\x0a输入前好变量 \x0d\x0adata ---- n*m矩阵,表示n个样本,每个样本具有m维特征值 \x0d\x0acluster_n ---- 标量,表示聚合中心数目,即类别数 \x0d\x0aoptions ---- 4*1列向量,其中 \x0d\x0aoptions(1): 隶属度矩阵U的指数,>1(缺省值: 2.0) \x0d\x0aoptions(2): 最大迭代次数(缺省值: 100) \x0d\x0aoptions(3): 隶属度最小变化量,迭代终止条件(缺省值: 1e-5) \x0d\x0aoptions(4): 每次迭代是否输出信息标志(缺省值慧棚铅: 0) \x0d\x0a\x0d\x0a输出变量 \x0d\x0acenter ---- 聚类中心 \x0d\x0aU ---- 隶属度矩阵 \x0d\x0aobj_fcn ---- 目标函数值


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12406513.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存