Попарное расстояние между парами наблюдений
возвращает расстояние с помощью метода, указанного D = pdist(X,Distance,DistParameter)Distance и DistParameter. Можно указать DistParameter только когда Distance является 'seuclidean', 'minkowski', или 'mahalanobis'.
Вычислите евклидово расстояние между парами наблюдений и преобразуйте вектор расстояния в матрицу с помощью squareform.
Создайте матрицу с тремя наблюдениями и двумя переменными.
rng('default') % For reproducibility X = rand(3,2);
Вычислите евклидово расстояние.
D = pdist(X)
D = 1×3
0.2954 1.0670 0.9448
Попарные расстояния расположены в порядке (2,1), (3,1), (3,2). Можно легко определить расстояние между наблюдениями i и j с помощью squareform.
Z = squareform(D)
Z = 3×3
0 0.2954 1.0670
0.2954 0 0.9448
1.0670 0.9448 0
squareform возвращает симметричную матрицу, где Z(i,j) соответствует попарному расстоянию между наблюдениями i и j. Например, можно найти расстояние между наблюдениями 2 и 3.
Z(2,3)
ans = 0.9448
Проход Z в squareform для воспроизведения выходных данных pdist функция.
y = squareform(Z)
y = 1×3
0.2954 1.0670 0.9448
Продукция y от squareform и D от pdist одинаковые.
Создайте матрицу с тремя наблюдениями и двумя переменными.
rng('default') % For reproducibility X = rand(3,2);
Вычислите расстояние Минковского с показателем степени по умолчанию 2.
D1 = pdist(X,'minkowski')D1 = 1×3
0.2954 1.0670 0.9448
Вычислите расстояние Минковского с экспонентой 1, которая равна расстоянию городского блока.
D2 = pdist(X,'minkowski',1)D2 = 1×3
0.3721 1.5036 1.3136
D3 = pdist(X,'cityblock')D3 = 1×3
0.3721 1.5036 1.3136
Определение пользовательской функции расстояния, которая игнорирует координаты с помощью NaN и вычислить попарно расстояние с помощью пользовательской функции расстояния.
Создайте матрицу с тремя наблюдениями и двумя переменными.
rng('default') % For reproducibility X = rand(3,2);
Предположим, что первый элемент первого наблюдения отсутствует.
X(1,1) = NaN;
Вычислите евклидово расстояние.
D1 = pdist(X)
D1 = 1×3
NaN NaN 0.9448
Если наблюдение i или j содержит NaN значения, функция pdist прибыль NaN для попарного расстояния между i и j. Поэтому D1 (1) и D1 (2), попарные расстояния (2,1) и (3,1), равныNaN значения.
Определение пользовательской функции расстояния naneucdist который игнорирует координаты с NaN и возвращает евклидово расстояние.
function D2 = naneucdist(XI,XJ) %NANEUCDIST Euclidean distance ignoring coordinates with NaNs n = size(XI,2); sqdx = (XI-XJ).^2; nstar = sum(~isnan(sqdx),2); % Number of pairs that do not contain NaNs nstar(nstar == 0) = NaN; % To return NaN if all pairs include NaNs D2squared = sum(sqdx,2,'omitnan').*n./nstar; % Correction for missing coordinates D2 = sqrt(D2squared);
Вычислить расстояние с помощью naneucdist передав дескриптор функции в качестве входного аргумента pdist.
D2 = pdist(X,@naneucdist)
D2 = 1×3
0.3974 1.1538 0.9448
X - Входные данныеВходные данные, заданные как числовая матрица размером m-by-n. Строки соответствуют отдельным наблюдениям, а столбцы - отдельным переменным.
Типы данных: single | double
Distance - Метрика расстоянияМетрика расстояния, заданная как вектор символа, скаляр строки или дескриптор функции, как описано в следующей таблице.
| Стоимость | Описание |
|---|---|
'euclidean' | Евклидово расстояние (по умолчанию). |
'squaredeuclidean' | Квадрат евклидова расстояния. (Этот вариант предусмотрен только для эффективности. Он не удовлетворяет неравенству треугольника.) |
'seuclidean' | Стандартизированное евклидово расстояние. Каждая разность координат между наблюдениями масштабируется делением на соответствующий элемент стандартного отклонения, |
'mahalanobis' | Расстояние Махаланобиса с использованием ковариации образца |
'cityblock' | Расстояние между городскими кварталами. |
'minkowski' | Минковская дистанция. Степень по умолчанию равна 2. Использовать |
'chebychev' | Расстояние Чебычева (максимальная разность координат). |
'cosine' | Один минус косинус включенного угла между точками (обрабатываемый как векторы). |
'correlation' | Один минус выборочная корреляция между точками (обрабатываемая как последовательности значений). |
'hamming' | Расстояние хэмминга, которое представляет собой процент различающихся координат. |
'jaccard' | Один минус коэффициент Джаккарда, который представляет собой процент отличных от нуля координат. |
'spearman' |
Один минус выборка ранговой корреляции Спирмена между наблюдениями (обрабатываемыми как последовательности значений). |
@ |
Пользовательский дескриптор функции расстояния. Функция расстояния имеет вид function D2 = distfun(ZI,ZJ) % calculation of distance ...
Если данные не разрежены, можно, как правило, быстрее вычислять расстояние, используя встроенное расстояние вместо дескриптора функции. |
Определения см. в разделе Метрика расстояния.
При использовании 'seuclidean', 'minkowski', или 'mahalanobis', можно указать дополнительный входной аргумент DistParameter для управления этими метриками. Эти метрики можно также использовать так же, как и другие метрики со значением по умолчанию DistParameter.
Пример:
'minkowski'
DistParameter - Значения метрических параметров расстоянияЗначения параметров метрики расстояния, заданные как положительный скаляр, числовой вектор или числовая матрица. Этот аргумент допустим только при указании Distance как 'seuclidean', 'minkowski', или 'mahalanobis'.
Если Distance является 'seuclidean', DistParameter - вектор коэффициентов масштабирования для каждого размера, заданный как положительный вектор. Значение по умолчанию: std(X,'omitnan').
Если Distance является 'minkowski', DistParameter - экспонента расстояния Минковского, заданная как положительный скаляр. Значение по умолчанию - 2.
Если Distance является 'mahalanobis', DistParameter - ковариационная матрица, заданная как числовая матрица. Значение по умолчанию: cov(X,'omitrows'). DistParameter должен быть симметричным и положительным определенным.
Пример:
'minkowski',3
Типы данных: single | double
D - Попарные расстоянияПопарные расстояния, возвращаемые как числовой вектор строки длиной m (m-1 )/2, соответствующий парам наблюдений, где m - количество наблюдений вX.
Расстояния расположены в порядке (2,1), (3,1),..., (m, 1), (3,2),..., (m, 2),..., (m, m-1), т.е. нижний левый треугольник матрицы расстояний m на m в порядке столбцов. Попарно расстояние между наблюдениями i и j находится в D ((i-1) * (m-i/2) + j-i) для i≤j.
Можно преобразовать D в симметричную матрицу с помощью squareform функция. Z = squareform(D) возвращает матрицу m-by-m, где Z(i,j) соответствует попарному расстоянию между наблюдениями i и j.
Если наблюдение i или j содержит NaNs, затем соответствующее значение в D является NaN для встроенных функций расстояния.
D обычно используется в качестве матрицы разнородности в кластеризации или многомерном масштабировании. Дополнительные сведения см. в разделе Иерархическая кластеризация и страницы ссылок на функции для cmdscale, cophenet, linkage, mdscale, и optimalleaforder. Эти функции принимают D в качестве входного аргумента.
Метрика расстояния - это функция, определяющая расстояние между двумя наблюдениями. pdist поддерживает различные метрики расстояния: евклидово расстояние, стандартизированное евклидово расстояние, расстояние Махаланобиса, расстояние городского блока, расстояние Минковского, расстояние Чебычева, расстояние косинуса, расстояние корреляции, расстояние Хэмминга, расстояние Джаккарда и расстояние Спирмана.
Задана матрица данных m-на-n X, который рассматривается как m (1 на n) векторов строк x1, x2,..., xm, различные расстояния между вектором xs и xt определяются следующим образом:
Евклидово расстояние
− xt) ′.
Евклидово расстояние - частный случай расстояния Минковского, где p = 2.
Стандартизированное евклидово расстояние
xs − xt) ′,
где V - диагональная матрица n-на-n, j-й диагональный элемент которой равен (S (j)) 2, где S - вектор масштабных коэффициентов для каждой размерности.
Расстояние Махаланобиса
xs − xt) ′,
где C - ковариационная матрица.
Расстояние между городскими кварталами
Расстояние городского блока - частный случай расстояния Минковского, где p = 1.
Минковская дистанция
Для особого случая p = 1 расстояние Минковского даёт расстояние городского блока. Для частного случая p = 2 расстояние Минковского даёт евклидово расстояние. Для частного случая p = ∞ дистанция Минковского даёт дистанцию Чебычева.
Чебычевская дистанция
xtj |}.
Дистанция Чебычева - частный случай дистанции Минковского, где p = ∞.
Расстояние косинуса
).
Корреляционное расстояние
(xt−x¯t) ′,
где
и .
Расстояние хэмминга
/n).
Расстояние Яккарда
∪ (xtj≠0)].
Расстояние Спирмена
(rt−r¯t) ′,
где
rsj - ранг xsj, взятый над x1j, x2j,... xmj, как вычислено tiedrank.
rs и rt являются координатными ранговыми векторами xs и xt, т.е. rs = (rs1, rs2,... rsn).
1) 2.
1) 2.
Примечания и ограничения по использованию:
Значение входного аргумента расстояния (Distance) должна быть константой времени компиляции. Например, чтобы использовать расстояние Минковского, включите coder.Constant('Minkowski') в -args значение codegen.
Значение входного аргумента расстояния (Distance) не может быть пользовательской функцией расстояния.
Созданный код pdist использование parfor (MATLAB Coder) для создания циклов, которые выполняются параллельно на поддерживаемых многоядерных платформах с общей памятью в сгенерированном коде. Если компилятор не поддерживает интерфейс приложения Open Multi Processing (OpenMP) или вы отключаете библиотеку OpenMP, MATLAB ® Coder™ обрабатывает parfor-закольцовывает как for-контуры. Чтобы найти поддерживаемые компиляторы, см. раздел Поддерживаемые компиляторы. Чтобы отключить библиотеку OpenMP, установите EnableOpenMP свойства объекта конфигурации для false. Для получения более подробной информации см. coder.CodeConfig (Кодер MATLAB).
Дополнительные сведения о создании кода см. в разделах Введение в создание кода и Общий рабочий процесс создания кода.
Примечания и ограничения по использованию:
Поддерживаемые значения входных аргументов расстояния (Distance) для оптимизированного кода CUDA: 'euclidean', 'squaredeuclidean', 'seuclidean', 'cityblock', 'minkowski', 'chebychev', 'cosine', 'correlation', 'hamming', и 'jaccard'.
Distance не может быть пользовательской функцией расстояния.
Distance должен быть константой времени компиляции.
Примечания и ограничения по использованию:
Значение входного аргумента расстояния (Distance) не может быть пользовательской функцией расстояния.
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
cluster | clusterdata | cmdscale | cophenet | dendrogram | inconsistent | linkage | pdist2 | silhouette | squareform
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.