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