В этом примере показано, как кластеризация 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 инициализируется с различными начальными условиями. Это поведение изменяет порядок, в котором вычисляются и печатаются центры кластера.