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