Силуэтный участок
silhouette( принимает одно или несколько дополнительных значений параметров метрики расстояния при указании X,clust,Distance,DistParameter)Distance как пользовательский дескриптор функции расстояния @ , которая принимает дополнительные значения параметров.distfun
Создание силуэтных графиков на основе кластеризованных данных с использованием различных метрик расстояния.
Создание данных случайной выборки.
rng('default') % For reproducibility X = [randn(10,2)+3;randn(10,2)-3];
Создайте график разброса данных.
scatter(X(:,1),X(:,2));
title('Randomly Generated Data');
График рассеяния показывает, что данные, по-видимому, разделены на два кластера одинакового размера.
Разбиение данных на два кластера с помощью kmeans с метрикой евклидова расстояния в квадрате по умолчанию.
clust = kmeans(X,2);
clust содержит индексы кластера данных.
Создайте силуэтный график из кластеризованных данных, используя метрику евклидова расстояния в квадрате по умолчанию.
silhouette(X,clust)

Силуэтный график показывает, что данные разбиты на два кластера одинакового размера. Все точки в двух кластерах имеют большие значения силуэта (0,8 или более), что указывает на то, что кластеры хорошо разделены.
Создайте силуэтный график из кластеризованных данных с помощью евклидовой метрики расстояния.
silhouette(X,clust,'Euclidean')
Силуэтный график показывает, что данные разбиты на два кластера одинакового размера. Все точки в двух кластерах имеют большие значения силуэта (0,6 или более), что указывает на то, что кластеры хорошо разделены.
Вычислите значения силуэта на основе кластеризованных данных.
Создание данных случайной выборки.
rng('default') % For reproducibility X = [randn(10,2)+1;randn(10,2)-1];
Кластеризация данных в X на основе суммы абсолютных разностей расстояния с помощью kmeans.
clust = kmeans(X,2,'distance','cityblock');
clust содержит индексы кластера данных.
Вычислите значения силуэта из кластеризованных данных. Укажите метрику расстояния как 'cityblock' чтобы указать, что kmeans кластеризация основана на сумме абсолютных разностей.
s = silhouette(X,clust,'cityblock')s = 20×1
0.0816
0.5848
0.1906
0.2781
0.3954
0.4050
0.0897
0.5416
0.6203
0.6664
⋮
Поиск значений силуэта из кластеризованных данных с помощью пользовательской метрики расстояния хи-квадрат. Убедитесь, что метрика расстояния хи-квадрат эквивалентна метрике евклидова расстояния, но с необязательным параметром масштабирования.
Создание данных случайной выборки.
rng('default'); % For reproducibility X = [randn(10,2)+3;randn(10,2)-3];
Кластеризация данных в X использование kmeans с метрикой евклидова расстояния в квадрате по умолчанию.
clust = kmeans(X,2);
Найдите значения силуэта и создайте график силуэта из кластеризованных данных с помощью евклидовой метрики расстояния.
[s,h] = silhouette(X,clust,'Euclidean')
s = 20×1
0.6472
0.7241
0.5682
0.7658
0.7864
0.6397
0.7253
0.7783
0.7054
0.7442
⋮
h =
Figure (1) with properties:
Number: 1
Name: ''
Color: [1 1 1]
Position: [360 502 560 420]
Units: 'pixels'
Show all properties
Расстояние хи-квадрат между J-мерные точки x и z
xj-zj) 2,
где - вес, связанный с размерностью j.
Задайте веса для каждого размера и задайте функцию расстояния хи-квадрат. Функция расстояния должна:
Взять в качестве входных аргументов матрицу входных данных n-by-p X, одна строка X (например, x) и параметр масштабирования (или веса) w.
Расчет расстояния от x к каждой строке X.
Возвращает вектор длины N. Каждый элемент вектора - это расстояние между наблюдением, соответствующим x и наблюдения, соответствующие каждой строке X.
w = [0.4; 0.6]; % Set arbitrary weights for illustration
chiSqrDist = @(x,Z,w)sqrt((bsxfun(@minus,x,Z).^2)*w);Поиск значений силуэта из кластеризованных данных с помощью пользовательской метрики расстояния chiSqrDist.
s1 = silhouette(X,clust,chiSqrDist,w)
s1 = 20×1
0.6288
0.7239
0.6244
0.7696
0.7957
0.6688
0.7386
0.7865
0.7223
0.7572
⋮
Установите вес для обоих размеров равным 1 для использования chiSqrDist в качестве евклидовой метрики расстояния. Найдите значения силуэта и убедитесь, что они совпадают со значениями в s.
w2 = [1; 1]; s2 = silhouette(X,clust,chiSqrDist,w2); AreValuesEqual = isequal(s2,s)
AreValuesEqual = logical
1
Значения силуэта одинаковы в s и s2.
X - Входные данныеВходные данные, определенные как числовая матрица размера n-by-p. Строки соответствуют точкам, а столбцы - координатам.
Типы данных: single | double
clust - Назначение кластераНазначение кластера, указанное как категориальная переменная, числовой вектор, символьная матрица, строковый массив или массив ячеек символьных векторов, содержащих имя кластера для каждой точки в X.
silhouette удовольствия NaNs и пустые значения в clust как отсутствующие значения и игнорирует соответствующие строки X.
Типы данных: single | double | char | string | cell | categorical
Distance - Метрика расстояния'sqEuclidean' (по умолчанию) | 'Euclidean' | 'cityblock' | дескриптор функции | вектор попарных расстояний |...Метрика расстояния, заданная как вектор символа, скаляр строки или дескриптор функции, как описано в этой таблице.
| Метрика | Описание |
|---|---|
'Euclidean' | Евклидово расстояние |
'sqEuclidean' | Квадрат евклидова расстояния (по умолчанию) |
'cityblock' | Сумма абсолютных разностей |
'cosine' | Один минус косинус включенного угла между точками (рассматривается как векторы) |
'correlation' | Один минус выборочная корреляция между точками (обрабатывается как последовательности значений) |
'Hamming' | Процент различающихся координат |
'Jaccard' | Процент отличных от нуля координат |
| Вектор | Числовой вектор строки попарных расстояний в форме, созданной pdist функция. X не используется в этом случае и может быть безопасно установлен в []. |
@ | Пользовательский дескриптор функции расстояния. Функция расстояния имеет вид function D = distfun(X0,X,
|
Дополнительные сведения см. в разделе Метрики расстояния.
Пример: 'cosine'
Типы данных: char | string | function_handle | single | double
DistParameter - Значение метрического параметра расстоянияЗначение параметра метрики расстояния, указанное как положительный скаляр, числовой вектор или числовая матрица. Этот аргумент допустим только при указании пользовательского дескриптора функции расстояния @ который принимает одно или несколько значений параметров в дополнение к входным параметрам distfunX0 и X.
Пример:
silhouette(X,clust,distfun,p1,p2) где p1 и p2 являются дополнительными значениями параметров метрики расстояния для @distfun
Типы данных: single | double
s - Силуэтные значения1 вектор значений в диапазоне от –1 кому 1Силуэтные значения, возвращенные как n-by-1 вектор значений в диапазоне от –1 кому 1. Значение силуэта измеряет сходство точки с точками в собственном кластере по сравнению с точками в других кластерах. Значения варьируются от –1 кому 1. Высокое значение силуэта указывает на то, что точка хорошо соответствует собственному кластеру и плохо соответствует другим кластерам.
Типы данных: single | double
h - Ручка рисункаДескриптор фигуры, возвращенный как скаляр. Дескриптор фигуры можно использовать для запроса и изменения свойств фигуры. Дополнительные сведения см. в разделе Свойства рисунка.
Значение силуэта для каждой точки является мерой того, насколько эта точка похожа на точки в собственном кластере по сравнению с точками в других кластерах.
Значение силуэта Si для iтретья точка определяется как
Si = (bi-ai)/ max(ai,bi)
где ai - среднее расстояние от iС-й точки на другие точки в том же кластере, что и i, и bi - минимальное среднее расстояние от iточка-точка в другом кластере, минимизированном по кластерам.
Значение силуэта колеблется от –1 кому 1. Высокое значение силуэта указывает на то, что i хорошо соответствует своему собственному кластеру и плохо соответствует другим кластерам. Если большинство точек имеют высокое значение силуэта, то решение кластеризации является подходящим. Если многие точки имеют низкое или отрицательное значение силуэта, то решение кластеризации может иметь слишком много или слишком мало кластеров. Значения силуэта можно использовать в качестве критерия оценки кластеризации с любой метрикой расстояния.
[1] Кауфман Л. и П. Дж. Руссью. Поиск групп в данных: введение в кластерный анализ. Хобокен, Нью-Джерси: John Wiley & Sons, Inc., 1990.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.