FCM的原理在之前的博文中写过。现在按照它的算法流程,用MATLAB实现。共包括三个函数(myfcm.m, mydist.m, myplot.m)
测试数据集用的是鸢尾花(iris)数据集。下载地址 http://download.csdn.net/detail/u013657981/9241121
1. myfcm.m
function [U, V,objFcn] = myfcm(data, c, T, m, epsm)
% fuzzy c-means algorithm
% 输入: data: 待聚类数据,n行s列,n为数据个数,s为每个数据的特征数
% c : 聚类中心个数
% m : 模糊系数
% 输出: U : 隶属度矩阵,c行n列,元素uij表示第j个数据隶属于第i类的程度
% V : 聚类中心向量,c行s列,有c个中心,每个中心有s维特征
% written by Zhang Jin
% see also : mydist.m myplot.m
if nargin < 3
T = 100; %默认迭代次数为100
end
if nargin < 5
epsm = 1.0e-6; %默认收敛精度
end
if nargin < 4
m = 2; %默认模糊系数值为2
end
[n, s] = size(data);
% 初始化隶属度矩阵U(0),并归一化
<