График силуэта
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 есть
где - вес, сопоставленный с размерностью j.
Установите веса для каждой размерности и задайте функцию хи-квадрат расстояния. Функция расстояния должна:
Примите в качестве входных параметров матрицу входных данных n на 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
лечит NaN
s и пустые значения в 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
- Значение параметра метрики расстоянияМетрическое значение параметров расстояния, заданное как положительная скалярная величина, числовой вектор или числовая матрица. Этот аргумент действителен только, когда вы задаете пользовательский указатель на функцию расстояния @
который принимает одно или несколько значений параметров в дополнение к входным параметрам distfun
X0
и 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
1я точка определяется как
Si = (bi-ai)/ max(ai,bi)
где ai
- среднее расстояние от i
1й пункт других точек в том же кластере, что и i
, и bi
- минимальное среднее расстояние от i
1я точка к точкам в другом кластере, минимизированная по кластерам.
Значение силуэта находится в диапазоне от –1
на 1
. Высокое значение силуэта указывает, что i
хорошо соответствует своему собственному кластеру и плохо соответствует другим кластерам. Если большинство точек имеют высокое значение силуэта, то подходит решение кластеризации. Если многие точки имеют низкое или отрицательное значение силуэта, то решение кластеризации может иметь слишком много или слишком мало кластеров. Можно использовать значения силуэта в качестве критерия оценки кластеризации с любой метрикой расстояния.
[1] Кауфман Л., и П. Дж. Руссью. Поиск групп в данных: введение в кластерный анализ. Hoboken, NJ: John Wiley & Sons, Inc., 1990.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.