(一)FCM算法原理
Fuzzy c-means (FCM) is a clustering method that allows each data point to belong to multiple clusters with varying degrees of membership.
FCM is based on the minimization of the following objective function:
(二)FCM算法流程
(三)FCM算法的matlab实现
%fcm.m
clc
clear
close all
data = rand(100,2);
[center,U,obj_fcn] = fcm(data,2);
subplot(1,2,1);
plot(data(:,1), data(:,2),'o');
hold on;
maxU = max(U);
% Find the data points with highest grade of membership in cluster 1
index1 = find(U(1,:) == maxU);
% Find the data points with highest grade of membership in cluster 2
index2 = find(U(2,:) == maxU);
plot(data(index1,1),data(index1,2),'og');
plot(data(index2,1),data(index2,2),'or');
% Plot the cluster centers
plot(center(1,1),center(1,2),'xb','MarkerSize',15,'LineWidth',3)
plot(center(2,1),center(2,2),'xr','MarkerSize',15,'LineWidth',3)
title('分类结果')
subplot(1,2,2);
plot(obj_fcn)
title('目标函数J的变化')
hold off;
运行结果: