Этот пример показывает, как кластеризация FCM работает с помощью квазислучайных двумерных данных.
Загрузите набор данных и постройте его.
load fcmdata.dat plot(fcmdata(:,1),fcmdata(:,2),'o')

Затем, вызовите функцию командной строки, fcm, чтобы найти два кластера в этом наборе данных, пока целевая функция больше не уменьшится очень вообще.
[center,U,objFcn] = fcm(fcmdata,2);
Iteration count = 1, obj. fcn = 8.970479 Iteration count = 2, obj. fcn = 7.197402 Iteration count = 3, obj. fcn = 6.325579 Iteration count = 4, obj. fcn = 4.586142 Iteration count = 5, obj. fcn = 3.893114 Iteration count = 6, obj. fcn = 3.810804 Iteration count = 7, obj. fcn = 3.799801 Iteration count = 8, obj. fcn = 3.797862 Iteration count = 9, obj. fcn = 3.797508 Iteration count = 10, obj. fcn = 3.797444 Iteration count = 11, obj. fcn = 3.797432 Iteration count = 12, obj. fcn = 3.797430
center содержит координаты двух кластерных центров, U содержит классы членства для каждой из точек данных, и objFcn содержит историю целевой функции через итерации.
Функция fcm является циклом итерации, созданным сверх следующих стандартных программ:
initfcm - инициализирует проблему
distfcm - выполняет Евклидов расчет расстояния
stepfcm - выполняет одну итерацию кластеризации
Чтобы просмотреть прогресс кластеризации, постройте целевую функцию.
figure plot(objFcn) title('Objective Function Values') xlabel('Iteration Count') ylabel('Objective Function Value')

Наконец, постройте два кластерных центра, найденные функцией fcm. Крупные символы в графике указывают на кластерные центры.
maxU = max(U); index1 = find(U(1,:) == maxU); index2 = find(U(2,:) == maxU); figure line(fcmdata(index1,1), fcmdata(index1,2), 'linestyle',... 'none','marker', 'o','color','g') line(fcmdata(index2,1),fcmdata(index2,2),'linestyle',... 'none','marker', 'x','color','r') hold on plot(center(1,1),center(1,2),'ko','markersize',15,'LineWidth',2) plot(center(2,1),center(2,2),'kx','markersize',15,'LineWidth',2)

Примечание: Каждый раз, когда вы запускаете этот пример, функция fcm инициализирует с различными начальными условиями. Это поведение подкачивает порядок, в котором кластерные центры вычислены и построены.