Оценка решений кластеризации
создает объект оценки кластеризации с помощью дополнительных параметров, заданных одним или несколькими аргументами пары имя-значение.eva = evalclusters(x,clust,criterion,Name,Value)
Оцените оптимальное количество кластеров, используя критерий оценки кластеризации Калински-Харабаша.
Загрузите образцы данных.
load fisheriris;Данные содержат измерения длины и ширины по чашелистикам и лепесткам трёх видов цветков радужки.
Оцените оптимальное количество кластеров по критерию Калински-Харабаша. Кластеризация данных с помощью kmeans.
rng('default'); % For reproducibility eva = evalclusters(meas,'kmeans','CalinskiHarabasz','KList',[1:6])
eva =
CalinskiHarabaszEvaluation with properties:
NumObservations: 150
InspectedK: [1 2 3 4 5 6]
CriterionValues: [Inf 513.9245 561.6278 530.4871 456.1279 469.5068]
OptimalK: 1
OptimalK значение указывает, что на основе критерия Калински-Харабаша оптимальное число кластеров равно трем.
Используйте входную матрицу предлагаемых решений кластеризации для оценки оптимального количества кластеров.
Загрузите образцы данных.
load fisheriris;Данные содержат измерения длины и ширины по чашелистикам и лепесткам трёх видов цветков радужки.
Использовать kmeans создание входной матрицы предлагаемых решений кластеризации для измерений длины чашелистиков с использованием кластеров 1, 2, 3, 4, 5 и 6.
clust = zeros(size(meas,1),6); for i=1:6 clust(:,i) = kmeans(meas,i,'emptyaction','singleton',... 'replicate',5); end
Каждая строка clust соответствует одному измерению длины чашелистика. Каждый из шести столбцов соответствует решению кластеризации, содержащему от 1 до 6 кластеров.
Оцените оптимальное количество кластеров по критерию Калински-Харабаша.
eva = evalclusters(meas,clust,'CalinskiHarabasz')eva =
CalinskiHarabaszEvaluation with properties:
NumObservations: 150
InspectedK: [1 2 3 4 5 6]
CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
OptimalK: 3
OptimalK значение указывает, что на основе критерия Калински-Харабаша оптимальное число кластеров равно трем.
Используйте дескриптор функции, чтобы указать алгоритм кластеризации, а затем вычислить оптимальное количество кластеров.
Загрузите образцы данных.
load fisheriris;Данные содержат измерения длины и ширины по чашелистикам и лепесткам трёх видов цветков радужки.
Используйте дескриптор функции, чтобы указать алгоритм кластеризации.
myfunc = @(X,K)(kmeans(X, K, 'emptyaction','singleton',... 'replicate',5));
Оцените оптимальное количество кластеров для данных о длине чашелистиков, используя критерий Калински-Харабаша.
eva = evalclusters(meas,myfunc,'CalinskiHarabasz',... 'klist',[1:6])
eva =
CalinskiHarabaszEvaluation with properties:
NumObservations: 150
InspectedK: [1 2 3 4 5 6]
CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
OptimalK: 3
OptimalK значение указывает, что на основе критерия Калински-Харабаша оптимальное число кластеров равно трем.
x - Входные данныеВходные данные, определенные как матрица N-by-P. N - количество наблюдений, а P - количество переменных.
Типы данных: single | double
clust - Алгоритм кластеризации'kmeans' | 'linkage' | 'gmdistribution' | матрица решений кластеризации | дескриптор функцииАлгоритм кластеризации, указанный как один из следующих.
'kmeans' | Кластеризация данных в x с использованием kmeans алгоритм кластеризации, с 'EmptyAction' установить в значение 'singleton' и 'Replicates' установить в значение 5. |
'linkage' | Кластеризация данных в x с использованием clusterdata алгоритм агломеративной кластеризации, с 'Linkage' установить в значение 'ward'. |
'gmdistribution' | Кластеризация данных в x с использованием gmdistribution Алгоритм распределения гауссовой смеси, с 'SharedCov' установить в значение true и 'Replicates' установить в значение 5. |
Если criterion является 'CalinskiHarabasz', 'DaviesBouldin', или 'silhouette', можно указать алгоритм кластеризации с помощью дескриптора функции. Функция должна иметь вид C = clustfun(DATA,K), где DATA - данные, подлежащие кластеризации, и K - количество кластеров. Выходные данные clustfun должен быть одним из следующих:
Вектор целых чисел, представляющий индекс кластера для каждого наблюдения в DATA. Должно быть K уникальные значения в этом векторе.
Числовая матрица n-by-K оценки для n наблюдений и K классов. В этом случае индекс кластера для каждого наблюдения определяется путем взятия наибольшего значения оценки в каждой строке.
Если criterion является 'CalinskiHarabasz', 'DaviesBouldin', или 'silhouette', можно также указать clust в виде матрицы n-by-K, содержащей предложенные решения кластеризации. n - количество наблюдений в выборке данных, а K - число предлагаемых решений кластеризации. Столбец j содержит индексы кластера для каждой из N точек в j-ом решении кластеризации.
Типы данных: single | double | char | string | function_handle
criterion - Критерий оценки кластеризации'CalinskiHarabasz' | 'DaviesBouldin' | 'gap' | 'silhouette'Критерий оценки кластеризации, указанный как один из следующих.
'CalinskiHarabasz' | Создать CalinskiHarabaszEvaluation объект оценки кластеризации, содержащий значения индекса Калински-Харабаша. |
'DaviesBouldin' | Создать DaviesBouldinEvaluation объект оценки кластера, содержащий значения индекса Дейвиса-Бульдина. |
'gap' | Создать GapEvaluation объект кластерной оценки, содержащий значения критерия разрыва. |
'silhouette' | Создать SilhouetteEvaluation объект кластерной оценки, содержащий значения силуэта. |
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'KList',[1:5],'Distance','cityblock' задает проверку кластеров 1, 2, 3, 4 и 5 с использованием метрики расстояния городского блока.'KList' - Список количества кластеров для оценкиСписок вычисляемого количества кластеров, указанных как пара, разделенная запятыми, состоящая из 'KList' и вектор положительных целых значений. Необходимо указать KList когда clust является именем алгоритма кластеризации или дескриптором функции. Когда criterion является 'gap', clust должен быть символьным вектором, строковым скаляром или дескриптором функции, и необходимо указать KList.
Пример: 'KList',[1:6]
Типы данных: single | double
'Distance' - Метрика расстояния'sqEuclidean' (по умолчанию) | 'Euclidean' | 'cityblock' | вектор | функция |...Метрика расстояния, используемая для вычисления значений критерия, заданная как пара, разделенная запятыми, состоящая из 'Distance' и одно из следующих.
'sqEuclidean' | Квадрат евклидова дистанции |
'Euclidean' | Евклидово расстояние. Этот параметр недопустим для kmeans алгоритм кластеризации. |
'cityblock' | Сумма абсолютных разностей |
'cosine' | Один минус косинус включенного угла между точками (рассматривается как векторы) |
'correlation' | Один минус выборочная корреляция между точками (обрабатывается как последовательности значений) |
'Hamming' | Процент различающихся координат. Этот параметр действителен только для Silhouette критерий. |
'Jaccard' | Процент отличных от нуля координат. Этот параметр действителен только для Silhouette критерий. |
Подробные сведения о метрике расстояния см. в разделе pdist.
Можно также задать функцию для метрики расстояния с помощью дескриптора функции. Функция расстояния должна иметь вид d2 = distfun(XI,XJ), где XI - вектор 1 на n, соответствующий одной строке входной матрицы; X, и XJ является матрицей м2-на-n, соответствующей множеству строк X. distfun должен возвращать вектор расстояний м2 на 1 d2, k-й элемент которого является расстоянием между XI и XJ(k,:).
Distance принимает дескриптор функции, только если алгоритм кластеризации clust принимает дескриптор функции в качестве метрики расстояния. Например, kmeans алгоритм кластеризации не принимает дескриптор функции в качестве метрики расстояния. Поэтому, если вы используете kmeans алгоритм и затем укажите дескриптор функции для Distance, ошибки программного обеспечения.
Если criterion является 'silhouette', можно также указать Distance как выходной вектор, созданный функцией pdist.
Когда clust является 'kmeans' или 'gmdistribution', evalclusters использует метрику расстояния, указанную для Distance для кластеризации данных.
Если clust является 'linkage', и Distance является либо 'sqEuclidean' или 'Euclidean'затем алгоритм кластеризации использует евклидово расстояние и связь Уорда.
Если clust является 'linkage' и Distance - любая другая метрика, тогда алгоритм кластеризации использует указанную метрику расстояния и среднюю связь.
Во всех остальных случаях метрика расстояния, указанная для Distance должен соответствовать метрике расстояния, используемой в алгоритме кластеризации для получения значимых результатов.
Пример: 'Distance','Euclidean'
Типы данных: single | double | char | string | function_handle
'ClusterPriors' - Предварительные вероятности для каждого кластера'empirical' (по умолчанию) | 'equal'Предварительные вероятности для каждого кластера, указанные как пара, разделенная запятыми, состоящая из 'ClusterPriors' и одно из следующих.
'empirical' | Вычислите общее значение силуэта для решения кластеризации путем усреднения значений силуэта для всех точек. Каждый кластер вносит вклад в общее значение силуэта пропорционально его размеру. |
'equal' | Вычислите общее значение силуэта для решения кластеризации, усреднив значения силуэта для всех точек в каждом кластере, а затем усреднив эти значения по всем кластерам. Каждый кластер вносит одинаковый вклад в общее значение силуэта, независимо от его размера. |
Пример: 'ClusterPriors','empirical'
'B' - Количество наборов справочных данных100 (по умолчанию) | положительное целое значениеКоличество наборов ссылочных данных, сгенерированных из ссылочного распределения ReferenceDistribution, указанная как пара, разделенная запятыми, состоящая из 'B' и положительное целое значение.
Пример: 'B',150
Типы данных: single | double
'ReferenceDistribution' - Метод формирования эталонных данных'PCA' (по умолчанию) | 'uniform'Метод формирования ссылочных данных, указанный как разделенная запятыми пара, состоящая из 'ReferenceDistributions' и одно из следующих.
'PCA' | Создание ссылочных данных из равномерного распределения по рамке, выровненной с основными компонентами матрицы данных x. |
'uniform' | Создание ссылочных данных равномерно по всему диапазону каждого элемента в матрице данных x. |
Пример: 'ReferenceDistribution','uniform'
'SearchMethod' - Способ выбора оптимального количества кластеров'globalMaxSE' (по умолчанию) | 'firstMaxSE'Метод выбора оптимального количества кластеров, определяемый как разделенная запятыми пара, состоящая из 'SearchMethod' и одно из следующих.
'globalMaxSE' |
Оцените каждое предлагаемое количество кластеров в GAPMAX), где K - количество кластеров, Gap (K) - значение зазора для решения кластеризации с K кластерами, GAPMAX - наибольшее значение зазора, а SE (GAPMAX) - стандартная ошибка, соответствующая наибольшему значению зазора. |
'firstMaxSE' |
Оцените каждое предлагаемое количество кластеров в SE (K + 1), где K - число кластеров, Gap (K) - значение зазора для решения кластеризации с K кластерами, а SE (K + 1) - стандартная ошибка решения кластеризации с K + 1 кластерами. |
Пример: 'SearchMethod','globalMaxSE'
eva - Кластеризация оценочных данныхДанные оценки кластеризации, возвращенные как объект оценки кластеризации.
CalinskiHarabaszEvaluation | DaviesBouldinEvaluation | GapEvaluation | SilhouetteEvaluation
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.