pdist

Парное расстояние между парами наблюдений

Описание

пример

D = pdist(X) возвращает евклидово расстояние между парами наблюдений в X.

пример

D = pdist(X,Distance) возвращает расстояние при помощи метода, заданного как Distance.

пример

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

Входные параметры

свернуть все

Входные данные, заданные как числовая матрица размера m -by- n. Строки соответствуют отдельным наблюдениям, а столбцы - отдельным переменным.

Типы данных: single | double

Метрика расстояния, заданная как вектор символов, строковый скаляр или указатель на функцию, как описано в следующей таблице.

ЗначениеОписание
'euclidean'

Евклидово расстояние (по умолчанию).

'squaredeuclidean'

Квадратное Евклидово расстояние. (Эта опция предусмотрена только для эффективности. Это не удовлетворяет неравенству треугольника.)

'seuclidean'

Стандартизированное евклидово расстояние. Каждое различие координат между наблюдениями масштабируется путем деления на соответствующий элемент стандартного отклонения, S = std(X,'omitnan'). Использование DistParameter чтобы задать другое значение для S.

'mahalanobis'

Расстояние Махаланобиса с помощью выборочной ковариации X, C = cov(X,'omitrows'). Использование DistParameter чтобы задать другое значение для C, где матрица C симметричен и положительно определен.

'cityblock'

Расстояние между блоками.

'minkowski'

Расстояние Минковского. Экспонента по умолчанию является 2. Использование DistParameter чтобы задать другую экспоненту P, где P - положительная скалярная величина значение экспоненты.

'chebychev'

Расстояние Чебычева (максимальное различие координат).

'cosine'

Один минус косинус включенного угла между точками (рассматривается как векторы).

'correlation'

Один минус корреляция выборки между точками (рассматривается как последовательности значений).

'hamming'

Расстояние Хемминга, которое является процентом различий координат.

'jaccard'

Один минус коэффициент Жаккара, который является процентом ненулевых координат, которые различаются.

'spearman'

Один минус выборки корреляции ранга Спирмана между наблюдениями (рассматриваются как последовательности значений).

distfun

Пользовательский указатель на функцию расстояния. Функция расстояния имеет вид

function D2 = distfun(ZI,ZJ)
% calculation of distance
...
где

  • ZI является 1-by- n вектор, содержащий одно наблюдение.

  • ZJ является m2-by- n матрица, содержащая несколько наблюдений. distfun необходимо принять матрицу ZJ с произвольным количеством наблюдений.

  • D2 является m2-by- 1 вектор расстояний, и D2(k) - расстояние между наблюдениями ZI и ZJ(k,:).

Если ваши данные не разрежены, вы обычно можете вычислить расстояние быстрее, используя встроенное расстояние вместо указателя на функцию.

Определения см. в разделе Метрики расстояния.

Когда вы используете 'seuclidean', 'minkowski', или 'mahalanobis'можно задать дополнительный входной параметр DistParameter для управления этими метриками. Можно также использовать эти метрики так же, как и другие метрики со значением по умолчанию DistParameter.

Пример: 'minkowski'

Метрические значения параметров расстояния, заданное как положительная скалярная величина, числовой вектор или числовая матрица. Этот аргумент действителен только тогда, когда вы задаете 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

Выходные аргументы

свернуть все

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

D обычно используется как матрица различий в кластеризации или многомерном масштабировании. Для получения дополнительной информации смотрите Иерархическую кластеризацию и страницы с описанием функции для cmdscale, cophenet, linkage, mdscale, и optimalleaforder. Эти функции берут D как входной параметр.

Подробнее о

свернуть все

Метрики расстояния

Метрика расстояния является функцией, которая задает расстояние между двумя наблюдениями. pdist поддерживает различные метрики расстояния: Евклидово расстояние, стандартизированное Евклидово расстояние, расстояние Махаланобиса, расстояние городского блока, расстояние Минковского, расстояние Чебычева, расстояние косинуса, расстояние корреляции, расстояние Хемминга, расстояние Жаккарда и расстояние копья.

Задан m -by n матрица данных X, который рассматривается как m (1-by- n) векторы-строки x1, x2,..., xm, различные расстояния между векторными xs и xt заданы следующим образом:

  • Евклидово расстояние

    dst2=(xsxt)(xsxt).

    Евклидово расстояние является частным случаем расстояния Минковского, где p = 2.

  • Стандартизированное Евклидово расстояние

    dst2=(xsxt)V1(xsxt),

    где V - n -by n диагональная матрица, j-й диагональный элемент которой (S (j))2, где S является вектором масштабирующих коэффициентов для каждой размерности.

  • Расстояние Махаланобиса

    dst2=(xsxt)C1(xsxt),

    где C - ковариационная матрица.

  • Расстояние между блоками

    dst=j=1n|xsjxtj|.

    Расстояние городского блока является частным случаем расстояния Минковского, где p = 1.

  • Расстояние Минковского

    dst=j=1n|xsjxtj|pp.

    Для особого случая p = 1 расстояние Минковского даёт городскую блочную дистанцию. Для особого случая p = 2 расстояние Минковского даёт евклидово расстояние. Для особого случая p = ∞ дистанция Минковского даёт дистанцию Чебычева.

  • Чебычевская дистанция

    dst=maxj{|xsjxtj|}.

    Дистанция Чебычева является частным случаем дистанции Минковского, где p = ∞.

  • Косинусоидальное расстояние

    dst=1xsxt(xsxs)(xtxt).

  • Расстояние корреляции

    dst=1(xsx¯s)(xtx¯t)(xsx¯s)(xsx¯s)(xtx¯t)(xtx¯t),

    где

    x¯s=1njxsj и x¯t=1njxtj.

  • Расстояние Хемминга

    dst=(#(xsjxtj)/n).

  • Расстояние Жаккара

    dst=#[(xsjxtj)((xsj0)(xtj0))]#[(xsj0)(xtj0)].

  • Расстояние копьеносца

    dst=1(rsr¯s)(rtr¯t)(rsr¯s)(rsr¯s)(rtr¯t)(rtr¯t),

    где

    • rsj - это ранг xsj, занятый x 1 j, x 2 j,... xmj, как вычисляетсяtiedrank.

    • rs и rt являются координатно-ранговыми векторами xs и xt, т.е. rs = (rs 1, rs 2,... rsn).

    • r¯s=1njrsj=(n+1)2.

    • r¯t=1njrtj=(n+1)2.

Расширенные возможности

..
Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте