exponenta event banner

Кластерная оценка

В этом примере показано, как идентифицировать кластеры в данных радужки Фишера.

Загрузите набор данных радужки Фишера.

load fisheriris
X = meas;
y = categorical(species);

X - числовая матрица, содержащая два измерения лепестка для 150 ирисов. Y - клеточный массив символьных векторов, который содержит соответствующие виды радужки.

Вычислите несколько кластеров от 1 до 10.

eva = evalclusters(X,'kmeans','CalinskiHarabasz','KList',1:10)
eva = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6 7 8 9 10]
    CriterionValues: [1x10 double]
           OptimalK: 1

OptimalK значение указывает, что на основе критерия Калински-Харабаша оптимальное число кластеров равно трем.

Визуализировать eva для просмотра результатов для каждого числа кластеров.

plot(eva)

Figure contains an axes. The axes contains 2 objects of type line.

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

Три кластера согласуются с тремя видами в данных.

categories(y)
ans = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Вычислите неотрицательное ранговое приближение данных для целей визуализации.

Xred = nnmf(X,2);

Исходные элементы сводятся к двум элементам. Поскольку ни один из элементов не является отрицательным, nnmf также гарантирует неотрицательность элементов.

Подтвердите три кластера визуально, используя график рассеяния.

gscatter(Xred(:,1),Xred(:,2),y)
xlabel('Column 1')
ylabel('Column 2')
grid on

Figure contains an axes. The axes contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

См. также

|