В этом примере показано, как настроить величину нечеткого перекрытия при выполнении нечеткой кластеризации c-means.
Создайте случайный набор данных. Для воспроизводимости инициализируйте генератор случайных чисел до значения по умолчанию.
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

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