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

В этом примере показано, как кластеризация FCM работает с помощью квазислучайных двумерных данных.

Загрузите набор данных и постройте его.

load fcmdata.dat
plot(fcmdata(:,1),fcmdata(:,2),'o')

Figure contains an axes. The axes contains an object of type line.

Затем вызовите функцию командной строки, 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')

Figure contains an axes. The axes with title Objective Function Values contains an object of type line.

Наконец, постройте два кластерных центра, найденные 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)

Figure contains an axes. The axes contains 4 objects of type line.

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

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

Похожие темы