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

В этом примере показано, как настроить сумму нечеткого перекрытия при выполнении нечеткой c-средней кластеризации.

Создайте случайный набор данных. Для воспроизводимости инициализируйте генератор случайных чисел к его значению по умолчанию.

rng('default')
data = rand(100,2);

Задайте нечеткие матричные экспоненты раздела.

M = [1.1 2.0 3.0 4.0];

Значения экспоненты в M должен быть больше 1, с меньшими значениями, задающими более низкую степень нечеткого перекрытия. Другими словами, как M подходы 1, контуры между кластерами становятся большим количеством хрустящего картофеля.

Для каждой экспоненты перекрытия:

  • Кластеризируйте данные.

  • Классифицируйте каждую точку данных в кластер, для которого она имеет самую высокую степень членства.

  • Найдите точки данных с максимальными значениями членства ниже 0.6. Эти точки имеют более нечеткую классификацию.

  • Чтобы определить количество степени нечеткого перекрытия, вычислите среднее максимальное значение членства через все точки данных. Более высокое среднее максимальное значение членства указывает, что существует менее нечеткое перекрытие.

  • Постройте кластеризирующиеся результаты.

for i = 1:4
    % Cluster the data.
    options = [M(i) NaN NaN 0];
    [centers,U] = fcm(data,2,options);
    
    % Classify the data points.
    maxU = max(U);
    index1 = find(U(1,:) == maxU);
    index2 = find(U(2,:) == maxU);
    
    % Find data points with lower maximum membership values.
    index3 = find(maxU < 0.6);
    
    % Calculate the average maximum membership value.
    averageMax = mean(maxU);
    
    % Plot the results.
    subplot(2,2,i)
    plot(data(index1,1),data(index1,2),'ob')
    hold on
    plot(data(index2,1),data(index2,2),'or')
    plot(data(index3,1),data(index3,2),'xk','LineWidth',2)
    plot(centers(1,1),centers(1,2),'xb','MarkerSize',15,'LineWidth',3)
    plot(centers(2,1),centers(2,2),'xr','MarkerSize',15,'LineWidth',3)
    hold off
    title(['M = ' num2str(M(i)) ', Ave. Max. = ' num2str(averageMax,3)])
end

Figure contains 4 axes objects. Axes object 1 with title M = 1.1, Ave. Max. = 0.981 contains 5 objects of type line. Axes object 2 with title M = 2, Ave. Max. = 0.791 contains 5 objects of type line. Axes object 3 with title M = 3, Ave. Max. = 0.677 contains 5 objects of type line. Axes object 4 with title M = 4, Ave. Max. = 0.62 contains 5 objects of type line.

Точка определенных данных классифицируется в кластер, для которого она имеет самое высокое значение членства, как обозначено maxU. Максимальное значение членства 0.5 указывает, что точка принадлежит обоим кластерам одинаково. Точки данных, отмеченные черным x, имеют максимальные значения членства ниже 0.6. Эти точки имеют большую степень неопределенности в их кластерном членстве.

Больше точек данных с низкими максимальными значениями членства указывает на большую степень нечеткого перекрытия в кластеризирующемся результате. Среднее максимальное значение членства, averageMax, предоставляет количественное описание перекрытия. averageMax значение 1 указывает на четкие кластеры, с меньшими значениями, указывающими на большее количество перекрытия.

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

Похожие темы