Настройте нечеткое перекрытие при нечеткой 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. Axes 1 with title M = 1.1, Ave. Max. = 0.981 contains 5 objects of type line. Axes 2 with title M = 2, Ave. Max. = 0.791 contains 5 objects of type line. Axes 3 with title M = 3, Ave. Max. = 0.677 contains 5 objects of type line. Axes 4 with title M = 4, Ave. Max. = 0.62 contains 5 objects of type line.

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

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

См. также

Похожие темы