Попарное расстояние между парами наблюдений
D = pdist(X)
D = pdist(X,Distance)
D = pdist(X,Distance,DistParameter)
возвращает расстояние при помощи метода, заданного 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 = 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 = nansum(sqdx,2).*n./nstar; % Correction for missing coordinates D2 = sqrt(D2squared);
Вычислите расстояние с naneucdist
путем передачи указателя на функцию как входного параметра pdist
.
D2 = pdist(X,@naneucdist)
D2 = 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
является вектором масштабных коэффициентов для каждой размерности, заданной как положительный вектор. Значением по умолчанию является
.nanstd(X)
Если Distance
является 'minkowski'
, DistParameter
является экспонентой расстояния Минковскего, заданного как положительная скалярная величина. Значение по умолчанию равняется 2.
Если Distance
является 'mahalanobis'
, DistParameter
является ковариационной матрицей, заданной как числовая матрица. Значением по умолчанию является nancov(X)
. 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
является NaN
для встроенных функций расстояния.
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
, чтобы создать циклы, которые запускают параллельно на поддерживаемой общей памяти многожильные платформы в сгенерированном коде. Если ваш компилятор не поддерживает интерфейс приложения Open Multiprocessing (OpenMP), или вы отключаете библиотеку OpenMP, MATLAB® Coder™ обрабатывает parfor
- циклы как for
- циклы. Чтобы найти поддерживаемые компиляторы, см. Поддерживаемые Компиляторы. Чтобы отключить библиотеку OpenMP, установите свойство EnableOpenMP
объекта настройки к false
. Для получения дополнительной информации смотрите coder.CodeConfig
.
Можно сгенерировать, оптимизировал код CUDA® с помощью GPU Coder™. Поддерживаемыми значениями входного параметра расстояния (Distance
) для оптимизированного кода CUDA является 'euclidean'
, 'squaredeuclidean'
, 'seuclidean'
, 'cityblock'
, 'minkowski'
, 'chebychev'
, 'cosine'
, 'correlation'
, 'hamming'
и 'jaccard'
. Для получения дополнительной информации о Кодере GPU смотрите Начало работы с GPU Coder (GPU Coder) и Поддерживаемые Функции (GPU Coder).
Для получения дополнительной информации о генерации кода смотрите Введение в Генерацию кода и Общий Рабочий процесс Генерации кода.
Указания и ограничения по применению:
Аргумент Distance
должен быть задан как вектор символов.
Для получения дополнительной информации смотрите функции MATLAB Выполнения на графическом процессоре (Parallel Computing Toolbox).
cluster
| clusterdata
| cmdscale
| cophenet
| dendrogram
| inconsistent
| linkage
| pdist2
| silhouette
| squareform
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.