Парное расстояние между парами наблюдений
возвращает расстояние при помощи метода, заданного как 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 -by - m в порядке столбца. Попарное расстояние между наблюдениями i и j находится в D((i-1)*(m-i/2)+j-i) для <reservedrangesplaceholder1> <reservedrangesplaceholder0>.
Можно преобразовать 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
поддерживает различные метрики расстояния: Евклидово расстояние, стандартизированное Евклидово расстояние, расстояние Махаланобиса, расстояние городского блока, расстояние Минковского, расстояние Чебычева, расстояние косинуса, расстояние корреляции, расстояние Хемминга, расстояние Жаккарда и расстояние копья.
Задан m -by n матрица
данных X
, который рассматривается как m (1-by- n) векторы-строки x1, x2,..., xm, различные расстояния между векторными xs и xt заданы следующим образом:
Евклидово расстояние
Евклидово расстояние является частным случаем расстояния Минковского, где p = 2.
Стандартизированное Евклидово расстояние
где V - n -by n диагональная матрица, j-й диагональный элемент которой (S (j))2, где S является вектором масштабирующих коэффициентов для каждой размерности.
Расстояние Махаланобиса
где C - ковариационная матрица.
Расстояние между блоками
Расстояние городского блока является частным случаем расстояния Минковского, где p = 1.
Расстояние Минковского
Для особого случая p = 1 расстояние Минковского даёт городскую блочную дистанцию. Для особого случая p = 2 расстояние Минковского даёт евклидово расстояние. Для особого случая p = ∞ дистанция Минковского даёт дистанцию Чебычева.
Чебычевская дистанция
Дистанция Чебычева является частным случаем дистанции Минковского, где p = ∞.
Косинусоидальное расстояние
Расстояние корреляции
где
и .
Расстояние Хемминга
Расстояние Жаккара
Расстояние копьеносца
где
rsj - это ранг xsj, занятый x 1 j, x 2 j,... 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'
, 'correlation'
, 'hamming'
, и 'jaccard'
.
Distance
не может быть пользовательской функцией расстояния.
Distance
должен быть константой времени компиляции.
Указания и ограничения по применению:
Значение входного параметра расстояния (Distance
) не может быть пользовательской функцией расстояния.
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
cluster
| clusterdata
| cmdscale
| cophenet
| dendrogram
| inconsistent
| linkage
| pdist2
| silhouette
| squareform
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.