exponenta event banner

Кластерные квазиплановые данные с использованием нечеткой кластеризации C-Means

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

См. также

Связанные темы