jaccard#
- scipy.spatial.distance.jaccard(u, v, w=None)[источник]#
Вычисление расстояния Жаккара между двумя булевыми векторами.
Даны булевы векторы \(u \equiv (u_1, \cdots, u_n)\) и \(v \equiv (v_1, \cdots, v_n)\) которые не равны нулю одновременно, их Расстояние Жаккара определяется как ([1], стр. 26)
\[d_\textrm{jaccard}(u, v) := \frac{c_{10} + c_{01}} {c_{11} + c_{10} + c_{01}}\]где
\[c_{ij} := \sum_{1 \le k \le n, u_k=i, v_k=j} 1\]для \(i, j \in \{ 0, 1\}\). Если \(u\) и \(v\) если оба равны нулю, их несходство Жаккара определяется как ноль. [2]
Если (неотрицательный) вектор весов \(w \equiv (w_1, \cdots, w_n)\) предоставляется, то взвешенное расстояние Жаккара определяется аналогично, но с \(c_{ij}\) заменено на
\[\tilde{c}_{ij} := \sum_{1 \le k \le n, u_k=i, v_k=j} w_k\]- Параметры:
- u(N,) array_like из bool
Входной вектор.
- v(N,) array_like из bool
Входной вектор.
- w(N,) array_like из чисел с плавающей запятой, необязательный
Веса для каждой пары \((u_k, v_k)\). По умолчанию
None, что дает каждой паре вес1.0.
- Возвращает:
- jaccardfloat
Расстояние Жаккара между векторами u и v, опционально взвешенная по w если предоставлен.
Примечания
Расстояние Жаккара удовлетворяет неравенству треугольника и квалифицируется как метрика. [2]
The Индекс Жаккара, или Коэффициент сходства Жаккара, равен единице минус несходство Жаккара. [3]
Различие между общими (конечными) множествами может быть вычислено путём кодирования их в виде булевых векторов и вычисления различия между закодированными векторами. Например, подмножества \(A,B\) of \(\{ 1, 2, ..., n \}\) может быть закодировано в булевы векторы \(u, v\) установкой \(u_k := 1_{k \in A}\), \(v_k := 1_{k \in B}\) для \(k = 1,2,\cdots,n\).
Изменено в версии 1.2.0: Ранее, если все (положительно взвешенные) элементы в u и v равны нулю, функция вернёт
nan. Это было изменено, чтобы возвращать0вместо этого.Изменено в версии 1.15.0: Не 0/1 числовой ввод, используемый для получения специального результата. Начиная с версии 1.15.0, числовой ввод преобразуется в логический перед вычислением.
Ссылки
[1]Кауфман, Л. и Руссеув, П. Дж. (1990). «Нахождение групп в данных: Введение в кластерный анализ». John Wiley & Sons, Inc.
Примеры
>>> from scipy.spatial import distance
Ненулевые векторы без совпадающих 1 имеют несходство 1.0:
>>> distance.jaccard([1, 0, 0], [0, 1, 0]) 1.0
Векторы с некоторыми совпадающими единицами имеют несходство менее 1.0:
>>> distance.jaccard([1, 0, 0, 0], [1, 1, 1, 0]) 0.6666666666666666
Идентичные векторы, включая нулевые векторы, имеют несходство 0.0:
>>> distance.jaccard([1, 0, 0], [1, 0, 0]) 0.0 >>> distance.jaccard([0, 0, 0], [0, 0, 0]) 0.0
Следующий пример вычисляет несходство непосредственно из матрицы ошибок, устанавливая вектор весов в частоты Истинно Положительных, Ложно Отрицательных, Ложно Положительных и Истинно Отрицательных случаев:
>>> distance.jaccard([1, 1, 0, 0], [1, 0, 1, 0], [31, 41, 59, 26]) 0.7633587786259542 # (41+59)/(31+41+59)