聚类——KFCM的matlab程序

在聚类——KFCM文章中已介绍了KFCM-F算法的理论知识,现在用matlab进行实现,下面这个例子是用FCM初始化聚类中心,也可以随机初始化聚类中心。

1.matlab程序

KFCM_main.m

%function [ave_acc_KFCM,max_acc_KFCM,min_acc_KFCM,ave_iter_KFCM,ave_run_time]=KFCM_main(X,real_label,K)

function [ave_acc_KFCM,max_acc_KFCM,min_acc_KFCM,ave_iter_FCM,ave_iter_KFCM,ave_run_time]=KFCM_main(X,real_label,K)

%输入K:聚的类,real_label:真实的标签,X:数据集

%输出ave_acc_KFCM:迭代max_iter次之后的平均准确度,iter:实际KFCM迭代次数

t0=cputime;

max_iter=20;

s_1=0;

s_2=0;

s_3=0;

accuracy=zeros(max_iter,1);

iter_KFCM_t=zeros(max_iter,1);

iter_FCM_t=zeros(max_iter,1);

%对data做最大-最小归一化处理

% [data_num,~]=size(data);

% X=(data-ones(data_num,1)*min(data))./(ones(data_num,1)*(max(data)-min(data)));

for i=1:max_iter

%[label,iter_KFCM]=My_KFCM(X,K);

[label,iter_KFCM,~,iter_FCM]=My_KFCM(X,K);

iter_KFCM_t(i)=iter_KFCM;

iter_FCM_t(i)=iter_FCM;

accuracy(i)=succeed(real_label,K,label);

s_1=s_1+accuracy(i);

s_2=s_2+iter_KFCM_t(i);

s_3=s_3+iter_FCM_t(i);

%fprintf('第 %2d 次,KFCM的迭代次数为:%2d,准确度为:%.8f\n', i, iter_KFCM_t(i), accuracy(i));

fprintf('第 %2d 次,FCM的迭代次数为:%2d,KFCM的迭代次数为:%2d,准确度为:%.8f\n', i, iter_FCM_t(i), iter_KFCM_t(i), accuracy(i));

end

ave_iter_FCM=s_3/max_iter;

ave_iter_KFCM=s_2/max_iter;

ave_acc_KFCM=s_1/max_iter;

max_acc_KFCM=max(accuracy);

min_acc_KFCM=min(accuracy);

run_time=cputime-t0;

ave_run_time=run_time/max_iter;

My_KFCM.m

%function [label, iter_KFCM, para_miu]=My_KFCM(X,K)

function [label, iter_KFCM, para_miu,iter_FCM]=My_KFCM(X,K)

%输入K:聚类数,X:数据集

%输出:label:聚的类, para_miu:模糊聚类中心μ,iter_KFCM:KFCM迭代次数

format long

eps=1e-4; %定义迭代终止条件的eps

alpha=2; %模糊加权指数,[1,+无穷)

T=100; %最大迭代次数

%sigma_2=2^(-4); %高斯核函数的参数sigma^2

sigma_2=150; %高斯核函数的参数sigma^2

[X_num,X_dim]=size(X);

fitness=zeros(X_num,1); %目标函数

responsivity=zeros(X_num,K); %隶属函数

R_up=zeros(X_num,K); %隶属函数的分子部分

count=zeros(X_num,1); %统计distant中每一行为0的个数

%随机初始化K个聚类中心

% [X_num,~]=size(X);

% rand_array=randperm(X_num); %产生1~X_num之间整数的随机排列

% para_miu=X(rand_array(1:K),:); %随机排列取前K个数,在X矩阵中取这K行作为初始聚类中心

%用FCM初始聚类中心

[~,para_miu,iter_FCM]=My_FCM(X,K);

% KFCM算法

for t=1:T

%欧氏距离,计算(X-para_miu)^2=X^2+para_miu^2-2*para_miu*X',矩阵大小为X_num*K

distant=(sum(X.*X,2))*ones(1,K)+ones(X_num,1)*(sum(para_miu.*para_miu,2))'-2*X*para_miu';

%高斯核函数,X_num*K的矩阵

kernel_fun=exp((-distant)./(sigma_2));

%更新隶属度矩阵X_num*K

for i=1:X_num

count(i)=sum(kernel_fun(i,:)==1);

if count(i)>0

for k=1:K

if kernel_fun(i,k)==1

responsivity(i,k)=1./count(i);

else

responsivity(i,k)=0;

end

end

else

R_up(i,:)=(1-kernel_fun(i,:)).^(-1/(alpha-1)); %隶属度矩阵的分子部分

responsivity(i,:)= R_up(i,:)./sum( R_up(i,:),2);

end

end

%目标函数值

fitness(t)=2*sum(sum((ones(X_num,K)-kernel_fun).*(responsivity.^(alpha))));

%更新聚类中心K*X_dim

miu_up=(kernel_fun.*(responsivity.^(alpha)))'*X; %μ的分子部分

para_miu=miu_up./(sum(kernel_fun.*(responsivity.^(alpha)))'*ones(1,X_dim));

if t>1

if abs(fitness(t)-fitness(t-1))

break;

end

end

end

iter_KFCM=t; %实际迭代次数

[~,label]=max(responsivity,[],2);

2.在UCI数据库的iris上的运行结果

>> [ave_acc_KFCM,max_acc_KFCM,min_acc_KFCM,ave_iter_FCM,ave_iter_KFCM,ave_run_time]=KFCM_main(data,real_label,3)

第 1 次,FCM的迭代次数为:12,KFCM的迭代次数为: 2,准确度为:0.89333333

第 2 次,FCM的迭代次数为:12,KFCM的迭代次数为: 2,准确度为:0.89333333

第 3 次,FCM的迭代次数为:18,KFCM的迭代次数为: 2,准确度为:0.89333333

第 4 次,FCM的迭代次数为:12,KFCM的迭代次数为: 2,准确度为:0.89333333

第 5 次,FCM的迭代次数为:14,KFCM的迭代次数为: 2,准确度为:0.89333333

第 6 次,FCM的迭代次数为:27,KFCM的迭代次数为: 2,准确度为:0.89333333

第 7 次,FCM的迭代次数为:15,KFCM的迭代次数为: 2,准确度为:0.89333333

第 8 次,FCM的迭代次数为:20,KFCM的迭代次数为: 2,准确度为:0.89333333

第 9 次,FCM的迭代次数为:13,KFCM的迭代次数为: 2,准确度为:0.89333333

第 10 次,FCM的迭代次数为:16,KFCM的迭代次数为: 2,准确度为:0.89333333

第 11 次,FCM的迭代次数为:15,KFCM的迭代次数为: 2,准确度为:0.89333333

第 12 次,FCM的迭代次数为:10,KFCM的迭代次数为: 2,准确度为:0.89333333

第 13 次,FCM的迭代次数为:24,KFCM的迭代次数为: 2,准确度为:0.89333333

第 14 次,FCM的迭代次数为:19,KFCM的迭代次数为: 2,准确度为:0.89333333

第 15 次,FCM的迭代次数为:10,KFCM的迭代次数为: 2,准确度为:0.89333333

第 16 次,FCM的迭代次数为:16,KFCM的迭代次数为: 2,准确度为:0.89333333

第 17 次,FCM的迭代次数为:15,KFCM的迭代次数为: 2,准确度为:0.89333333

第 18 次,FCM的迭代次数为:27,KFCM的迭代次数为: 2,准确度为:0.89333333

第 19 次,FCM的迭代次数为:15,KFCM的迭代次数为: 2,准确度为:0.89333333

第 20 次,FCM的迭代次数为:12,KFCM的迭代次数为: 2,准确度为:0.89333333

ave_acc_KFCM =

0.893333333333333

max_acc_KFCM =

0.893333333333333

min_acc_KFCM =

0.893333333333333

ave_iter_FCM =

16.100000000000001

ave_iter_KFCM =

2

ave_run_time =

0.028125000000000

matlab kfcm,聚类——KFCM的matlab程序相关推荐

  1. matlab 聚类 源程序,聚类——KFCM的matlab程序

    聚类--KFCM的matlab程序 在聚类--KFCM文章中已介绍了KFCM-F算法的理论知识,现在用matlab进行实现,下面这个例子是用FCM初始化聚类中心,也可以随机初始化聚类中心. 1.mat ...

  2. 聚类分析matlab检验,「matlab聚类分析」聚类分析的Matlab 程序—系统聚类(附有案例分析) - 金橙教程网...

    matlab聚类分析 聚类分析的Matlab 程序-系统聚类 (1)计算数据集每对元素之间的距离,对应函数为pdistw. 调用格式:Y=pdist(X),Y=pdist(X,'metric'), Y ...

  3. sum idx i matlab,聚类——FCM的matlab程序

    聚类--FCM的matlab程序 在聚类--FCM文章中已介绍了FCM算法的理论知识,现在用matlab进行实现. 1.matlab程序 FCM_main.m function [ave_acc_FC ...

  4. 光谱分类算法 matlab,Matlab K-means聚类算法对多光谱遥感图像进行分类(一)

    Matlab K-means聚类算法对多光谱遥感图像进行分类 作者: 白艺亭 测试了下matlab自带kmeans函数,作者编写函数,以及ENVI下的Kmeans方法,对比其效果,代码及结果图展示见下 ...

  5. matlab中存档算法代码,MATLAB 智能算法超级学习手册中程序代码

    [实例简介] MATLAB 智能算法超级学习手册中程序代码 [实例截图] [核心代码] dc90ef43-7920-434e-bdb8-0636c31c0b44 └── MATLAB 智能算法超级学习 ...

  6. matlab 层次聚类不均等巨雷,matlab层次聚类

    层次聚类是基于距离的聚类方法,MATLAB中通过pdist.linkage.dendrogram.cluster等函数 来完成.层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的. ...

  7. matlab实现ica,ica算法matlab程序

    ICA使用的是smooth之后的数据. 使用GIFT软件做独立成分分割 ? 软件包如同SPM 只需添加到matlab搜索路 径中保存然后在matlab中输入:gift 即可调 用. ? 其使用.... ...

  8. matlab 层次聚类

    MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法: 1.层次聚类 hierarchical clustering 2.k-means聚类 这里用最简单的实例说明以下层次聚类原理和应用 ...

  9. morlet小波matlab代码,morlet小波matlab程序

    论-Matlab 7.0复Morlet小波分析操作实例.? 92? 2015年5 月 科技创新 中文科技期刊数据库 ( 文摘版 )自然科学 Matlab 7.0复MorletP]~ 波分析 操作 .. ...

  10. 【雷达干扰】基于matlab速度聚类欺骗式干扰仿真【含Matlab源码 2221期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达干扰]基于matlab速度聚类欺骗式干扰仿真[含Matlab源码 2221期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...

最新文章

  1. 独家 | 降维是数据科学家的必由之路
  2. String字符串中获取所有匹配结果的索引值
  3. SVM推导过程及SMO详细求解过程(转载+自己笔记)
  4. phpcms9-6-0 一键getshell工具
  5. mysql 相邻记录时间差_sql 相邻2条记录时间差比较
  6. 清华姚班毕业生不配自信?张昆玮在豆瓣征女友,却被网友群嘲......
  7. hibernate状态_Hibernate状态的自然身份证
  8. python自动化测试脚本可以测php吗_python unittest实现api自动化测试_python
  9. 生成icon图标 1005 html 左上角icon图标
  10. django 1.8 官方文档翻译:7-3 Django管理文档生成器
  11. 项目团队中的五种人(之一)
  12. Swift语言指南(一)--语言基础之常量和变量
  13. 联合主键违反唯一性约束_(变强、变秃)Java从零学习024/252数据库之定义约束。...
  14. [转载] python程序所需的图片通过base64编码成字符串放在代码中
  15. mysql可视化工具
  16. 佩服Google敏锐和创意!人肉搜索引擎志愿者招募
  17. 内网html预览word,C# 实现Office在线预览
  18. ubuntu下解决longene-qq 退出之后再登录出现登录失败的问题
  19. 运动用品品牌排行榜,2022年最值得买的运动装备
  20. anaconda创建新环境

热门文章

  1. 24. Navigator taintEnabled() 方法
  2. Hadoop报错 Failed to locate the winutils binary in the hadoop
  3. Linux实战教学笔记01:计算机硬件组成与基本原理
  4. background-size属性
  5. Python学习之OS模块初识
  6. 批处理获取操作系统版本信息
  7. 受约束的十人参赛问题
  8. 如何布局电子商务网站
  9. IDEA右键新建时没有Java Class选项
  10. 拦截器(Interceptor)和过滤器(Filter)的区别