Попарное расстояние между парами наблюдений
возвращает расстояние при помощи метода, заданного 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 содержит NaNs, затем соответствующее значение в 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 создать циклы, которые запускают параллельно на поддерживаемой общей памяти многожильные платформы в сгенерированном коде. Если ваш компилятор не поддерживает интерфейс приложения Open Multiprocessing (OpenMP), или вы отключаете библиотеку OpenMP, MATLAB® Coder™ обрабатывает parfor- циклы как for- циклы. Чтобы найти поддерживаемые компиляторы, см. Поддерживаемые Компиляторы. Чтобы отключить библиотеку OpenMP, установите EnableOpenMP свойство настройки возражает против false. Для получения дополнительной информации смотрите coder.CodeConfig.
Для получения дополнительной информации о генерации кода смотрите Введение в Генерацию кода и Общий Рабочий процесс Генерации кода.
Указания и ограничения по применению:
Поддерживаемые значения входного параметра расстояния (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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.