Попарное расстояние между парами наблюдений
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.