Нечеткая кластеризация C-означает для данных радужной оболочки глаза

Этот пример показывает, как использовать нечеткую c-среднюю кластеризацию для набора данных радужной оболочки глаза. Этот набор данных был собран ботаником Эдгаром Андерсоном и содержит случайные выборки цветов, относящихся к трем видам цветков радужки: setosa, versicolor и virginica. Для каждого из видов набор данных содержит 50 наблюдений за длиной чашелистика, шириной чашелистика, длиной лепестка и шириной лепестка.

Загрузка данных

Загрузите набор данных из iris.dat файл данных.

load iris.dat

Разделите данные на три группы с именем setosa, versicolor, и virginica.

setosaIndex = iris(:,5)==1;
versicolorIndex = iris(:,5)==2;
virginicaIndex = iris(:,5)==3;

setosa = iris(setosaIndex,:);
versicolor = iris(versicolorIndex,:);
virginica = iris(virginicaIndex,:);

Постройте графики данных в 2-D

Данные радужки содержат четыре размерности, представляющие длину чашелистика, ширину чашелистика, длину лепестка и ширину лепестка. Постройте график точек данных для каждой комбинации двух размерностей.

Characteristics = {'sepal length','sepal width','petal length','petal width'};
pairs = [1 2; 1 3; 1 4; 2 3; 2 4; 3 4];

for i = 1:6
    x = pairs(i,1); 
    y = pairs(i,2);   
    subplot(2,3,i)
    plot([setosa(:,x) versicolor(:,x) virginica(:,x)],...
         [setosa(:,y) versicolor(:,y) virginica(:,y)], '.')
    xlabel(Characteristics{x})
    ylabel(Characteristics{y})
end

Figure contains 6 axes. Axes 1 contains 3 objects of type line. Axes 2 contains 3 objects of type line. Axes 3 contains 3 objects of type line. Axes 4 contains 3 objects of type line. Axes 5 contains 3 objects of type line. Axes 6 contains 3 objects of type line.

Setup

Задайте опции для кластеризации данных с помощью нечеткой кластеризации c-means. Эти опции:

  • Nc - Количество кластеров

  • M - Нечеткая матричная экспонента разбиения, которая указывает на степень нечеткого перекрытия между кластерами. Для получения дополнительной информации см. «Настройка нечеткого перекрытия в нечеткой кластеризации C-Means».

  • maxIter - Максимальное количество итераций. Процесс кластеризации останавливается после такого количества итераций.

  • minImprove - Минимальное улучшение. Процесс кластеризации останавливается, когда улучшение целевой функции между двумя последовательными итерациями меньше этого значения.

Nc = 3;
M = 2.0;
maxIter = 100;
minImprove = 1e-6;

Для получения дополнительной информации об этих опциях и нечетком алгоритме c-означает, см. fcm.

Вычислительные кластеры

Нечеткая кластеризация c-означает, что это итеративный процесс. Первоначально, fcm функция генерирует случайную нечеткую матрицу разбиения. Эта матрица указывает степень принадлежности каждой точки данных в каждом кластере.

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

Группируйте данные, отображая значение целевой функции после каждой итерации.

clusteringOptions = [M maxIter minImprove true];
[centers,U] = fcm(iris,Nc,clusteringOptions);
Iteration count = 1, obj. fcn = 28838.424340
Iteration count = 2, obj. fcn = 21010.880067
Iteration count = 3, obj. fcn = 15272.280943
Iteration count = 4, obj. fcn = 11029.756194
Iteration count = 5, obj. fcn = 10550.015503
Iteration count = 6, obj. fcn = 10301.776800
Iteration count = 7, obj. fcn = 9283.793786
Iteration count = 8, obj. fcn = 7344.379868
Iteration count = 9, obj. fcn = 6575.117093
Iteration count = 10, obj. fcn = 6295.215539
Iteration count = 11, obj. fcn = 6167.772051
Iteration count = 12, obj. fcn = 6107.998500
Iteration count = 13, obj. fcn = 6080.461019
Iteration count = 14, obj. fcn = 6068.116247
Iteration count = 15, obj. fcn = 6062.713326
Iteration count = 16, obj. fcn = 6060.390433
Iteration count = 17, obj. fcn = 6059.403978
Iteration count = 18, obj. fcn = 6058.988494
Iteration count = 19, obj. fcn = 6058.814438
Iteration count = 20, obj. fcn = 6058.741777
Iteration count = 21, obj. fcn = 6058.711512
Iteration count = 22, obj. fcn = 6058.698925
Iteration count = 23, obj. fcn = 6058.693695
Iteration count = 24, obj. fcn = 6058.691523
Iteration count = 25, obj. fcn = 6058.690622
Iteration count = 26, obj. fcn = 6058.690247
Iteration count = 27, obj. fcn = 6058.690092
Iteration count = 28, obj. fcn = 6058.690028
Iteration count = 29, obj. fcn = 6058.690001
Iteration count = 30, obj. fcn = 6058.689990
Iteration count = 31, obj. fcn = 6058.689985
Iteration count = 32, obj. fcn = 6058.689983
Iteration count = 33, obj. fcn = 6058.689983

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

Постройте график вычисленных центров кластеров как жирные числа.

for i = 1:6
    subplot(2,3,i);
    for j = 1:Nc
        x = pairs(i,1);
        y = pairs(i,2);
        text(centers(j,x),centers(j,y),int2str(j),'FontWeight','bold');
    end
end

Figure contains 6 axes. Axes 1 contains 6 objects of type line, text. Axes 2 contains 6 objects of type line, text. Axes 3 contains 6 objects of type line, text. Axes 4 contains 6 objects of type line, text. Axes 5 contains 6 objects of type line, text. Axes 6 contains 6 objects of type line, text.

См. также

Похожие темы