Оценка решений кластеризации
создает объект оценки кластеризации с помощью дополнительных опций, заданных одним или несколькими аргументами пары "имя-значение".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
The 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
The 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
The 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
- m матрица 2-by- n, соответствующая нескольким строкам X
. distfun
должен вернуть m вектор расстояний 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' |
Оцените каждое предлагаемое количество кластеров в где K - количество кластеров, Gap (K) - значение погрешности для решения кластеризации с K кластерами, GAPMAX - наибольшее значение погрешности, а SE (GAPMAX) - стандартная ошибка, соответствующая наибольшему значению погрешности. |
'firstMaxSE' |
Оцените каждое предлагаемое количество кластеров в где K - количество кластеров, Gap (K) - значение погрешности для решения кластеризации с K кластерами, а SE (K + 1) - стандартная ошибка решения кластеризации с K + 1 кластерами. |
Пример: 'SearchMethod','globalMaxSE'
eva
- Кластеризация данных оценкиКластеризация данных оценки, возвращенная как объект оценки кластеризации.
CalinskiHarabaszEvaluation
| DaviesBouldinEvaluation
| GapEvaluation
| SilhouetteEvaluation
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.