Попарное расстояние между парами наблюдений
возвращает расстояние при помощи метода, заданного 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' | Расстояние Mahalanobis с помощью выборочной ковариации |
'cityblock' | Расстояние городского квартала. |
'minkowski' | Расстояние Минковскего. Экспонента по умолчанию равняется 2. Используйте |
'chebychev' | Расстояние Чебычева (максимум координируют различие). |
'cosine' | Один минус косинус включенного угла между точками (обработанный как векторы). |
'correlation' | Один минус корреляция выборки между точками (обработанный как последовательности значений). |
'hamming' | Расстояние Хемминга, которое является процентом координат, которые отличаются. |
'jaccard' | Один минус коэффициент 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-by-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 содержит NaN
s, затем соответствующее значение в D
isnan
для встроенных функций расстояния.
D
обычно используется в качестве матрицы несходства в кластеризации или многомерном масштабировании. Для получения дополнительной информации смотрите Иерархическую Кластеризацию и страницы ссылки на функцию для cmdscale
, cophenet
, linkage
, mdscale
, и optimalleaforder
. Эти функции берут D
как входной параметр.
Метрика расстояния является функцией, которая задает расстояние между двумя наблюдениями. pdist
поддержки различные метрики расстояния: Евклидово расстояние, стандартизированное Евклидово расстояние, расстояние Mahalanobis, расстояние городского квартала, расстояние Минковскего, расстояние Чебычева, расстояние косинуса, расстояние корреляции, Расстояние Хемминга, расстояние Jaccard и расстояние Копьеносца.
Учитывая m-by-n матрица данных X
, который обработан как m (1 n) векторы-строки x1, x2..., xm, различные расстояния между векторным xs и xt определяются следующим образом:
Евклидово расстояние
Евклидово расстояние является особым случаем расстояния Минковскего, где p = 2.
Стандартизированное Евклидово расстояние
где V является n-by-n диагональная матрица, j которой th диагональный элемент (S (j)) 2, где S является вектором из масштабных коэффициентов для каждой размерности.
Расстояние Mahalanobis
где C является ковариационной матрицей.
Расстояние городского квартала
Расстояние городского квартала является особым случаем расстояния Минковскего, где p = 1.
Расстояние Минковскего
Для особого случая p = 1, расстояние Минковскего дает расстояние городского квартала. Для особого случая p = 2, расстояние Минковскего дает Евклидово расстояние. Для особого случая p = ∞, расстояние Минковскего дает расстояние Чебычева.
Расстояние Чебычева
Расстояние Чебычева является особым случаем расстояния Минковскего, где p = ∞.
Расстояние косинуса
Расстояние корреляции
где
и .
Расстояние Хемминга
Расстояние Jaccard
Расстояние копьеносца
где
rsj является рангом xsj, принятого x 1j, x 2j... xmj, как вычислено tiedrank
.
rs и rt являются координатно-мудрыми векторами ранга из xs и xt, т.е. rs = (rs 1, rs 2... rsn).
.
.
Указания и ограничения по применению:
Значение входного параметра расстояния (Distance
) должно быть постоянное время компиляции. Например, чтобы использовать расстояние Минковскего, включайте coder.Constant('Minkowski')
в -args
значение codegen
.
Значение входного параметра расстояния (Distance
) не может быть пользовательская функция расстояния.
Сгенерированный код pdist
использование parfor
(MATLAB Coder), чтобы создать циклы, которые запускают параллельно на поддерживаемой общей памяти многожильные платформы в сгенерированном коде. Если ваш компилятор не поддерживает интерфейс приложения Open Multiprocessing (OpenMP), или вы отключаете библиотеку OpenMP, MATLAB® Coder™ обрабатывает parfor
- циклы как for
- циклы. Чтобы найти поддерживаемые компиляторы, см. Поддерживаемые Компиляторы. Чтобы отключить библиотеку OpenMP, установите EnableOpenMP
свойство настройки возражает против false
. Для получения дополнительной информации смотрите coder.CodeConfig
(MATLAB Coder).
Для получения дополнительной информации о генерации кода смотрите Введение в Генерацию кода и Общий Рабочий процесс Генерации кода.
Указания и ограничения по применению:
Поддерживаемые значения входного параметра расстояния (Distance
) поскольку оптимизированным кодом CUDA является 'euclidean'
, 'squaredeuclidean'
, 'seuclidean'
, 'cityblock'
, 'minkowski'
, 'chebychev'
, 'cosine'
Корреляция
, 'hamming'
, и 'jaccard'
.
Distance
не может быть пользовательская функция расстояния.
Distance
должно быть постоянное время компиляции.
Указания и ограничения по применению:
Значение входного параметра расстояния (Distance
) не может быть пользовательская функция расстояния.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
cluster
| clusterdata
| cmdscale
| cophenet
| dendrogram
| inconsistent
| linkage
| pdist2
| silhouette
| squareform
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.