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

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

Загрузите ирисовый набор данных Фишера.

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: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068 ... ]
           OptimalK: 3

OptimalK значение указывает, что на основе критерия Calinski-Harabasz оптимальное количество кластеров равняется трем.

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

plot(eva)

Figure contains an axes object. The axes object 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 object. The axes object contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

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

|