Кластерные квазислучайные данные Используя нечеткую кластеризацию C-средств

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

Смотрите также

Похожие темы