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