Сходство Жаккара и расстояние Жаккара в Python
В этом уроке мы рассмотрим, как рассчитать сходство Жаккара (индекс) и расстояние Жаккара в Python.
Оглавление
- Введение
- В чем сходство Жаккара
- Вычислить сходство Жаккара
- Что такое расстояние Жаккара?
- Вычислить расстояние Жаккара
- Сходство и расстояние асимметричных бинарных атрибутов
- Вычислить сходство Jaccard в Python
- Рассчитать расстояние Жаккара в Python
- Сходство и расстояние бинарных атрибутов асимметрии в Python
- Вывод
Введение
Сходство Жаккара (индекс Жаккара) и индекс Жаккара широко используются в качестве статистики для измерения сходства и несходства. Их применение варьируется от простого сходства наборов до сложных сходств текстовых файлов.
Чтобы продолжить следовать этому руководству, нам понадобятся следующие библиотеки Python: scipy, sklearn и numpy.
Если он у вас не установлен, откройте «Командную строку» (в Windows) и установите его, используя следующий код:
pip install scipy
pip install sklearn
pip install numpy
В чем сходство Жаккара
Сходство Жаккара (также известное как коэффициент сходства Жаккара или индекс Жаккара) — это статистика, используемая для измерения сходства между двумя наборами.
Его использование расширяется для измерения сходства между двумя объектами, например, двумя текстовыми файлами. В программировании на Python сходство Жаккара в основном используется для измерения сходства между двумя наборами или между двумя асимметричными двоичными векторами.
Математически вычисление подобия Жаккара просто берет отношение пересечения множеств к объединению множеств.
Рассмотрим два набора А а также Б :
Тогда их сходство Жаккара (или индекс Жаккара) определяется выражением:
Разобьем эту формулу на две составляющие:
1. Номинант
Номинатор фактически является установить пересечение между А а также Б показанный желтой областью на инфографике ниже:
2. Знаменатель
Знаменатель фактически равен установить союз из А а также Б показанный желтой областью на инфографике ниже:
Используя формулу подобия Жаккара, мы можем видеть, что статистика подобия — это просто отношение двух приведенных выше визуализаций, где:
- Если оба набора идентичны, например а также то их подобие Жаккара = 1.
- Например, если множества A и B не имеют общих элементов, скажем а также то их подобие Жаккара = 0.
- Если множества множества A и B имеют некоторые общие элементы, например, а также то их подобие Жаккара есть некоторое значение на отрезке: .
Вычислить сходство Жаккара
Рассмотрим два набора:
- А = {1, 2, 3, 5, 7}
- Б = {1, 2, 4, 8, 9}
Или визуально:
Шаг 1:
В качестве первого шага нам нужно найти установить пересечение между А а также Б :
В таком случае:
Шаг 2:
Второй шаг – найти установить союз из А а также Б :
В таком случае:
Шаг 3:
И последний шаг — взять соотношение размеров пересечения и объединения:
Что такое расстояние Жаккара?
В отличие от подобия Жаккара (индекса Жаккара), расстояние Жаккара является мерой несходства между двумя множествами.
Математически расчет расстояния Жаккара представляет собой отношение разности между объединением множеств и пересечением множеств над объединением множеств.
Рассмотрим два набора А а также Б :
Тогда их расстояние Жаккара определяется как:
Разобьем эту формулу на две составляющие:
1. Номинант
Номинатор также может быть записан как:
который эффективно установить симметричную разность между А а также Б показанный желтой областью на инфографике ниже:
2. Знаменатель
Знаменатель фактически равен установить союз из А а также Б показанный желтой областью на инфографике ниже:
Используя формулу расстояния Жаккара, мы можем видеть, что статистика несходства — это просто отношение двух приведенных выше визуализаций, где:
- Если оба набора идентичны, например а также то их расстояние Жаккара = 0.
- Например, если множества A и B не имеют общих элементов, скажем а также то их расстояние Жаккара = 1.
- Если множества множества A и B имеют некоторые общие элементы, например, а также то их расстояние Жаккара есть некоторое значение на отрезке: .
Вычислить расстояние Жаккара
Рассмотрим два набора:
- А = {1, 2, 3, 5, 7}
- Б = {1, 2, 4, 8, 9}
Или визуально:
Шаг 1:
В качестве первого шага нам нужно найти установить симметричную разность между А а также Б :
В таком случае:
Шаг 2:
Второй шаг – найти установить союз из А а также Б :
В таком случае:
Шаг 3:
И последний шаг — взять соотношение размеров симметричной разности и объединения:
Сходство и расстояние асимметричных бинарных атрибутов
В этом разделе мы рассмотрим более конкретное применение сходства Жаккара и расстояния Жаккара. Более конкретно, их применение к асимметричным двоичным атрибутам.
Уже по названию можно догадаться, что это за бинарный атрибут является. Это атрибут, который имеет только два состояния, и эти два состояния:
- 0 означает, что атрибут отсутствует
- 1, что означает наличие атрибута
Асимметрия возникает из-за того, что если присутствуют оба атрибута (оба равны 1), это считается более важным, чем если бы оба атрибута отсутствовали (оба равны 0).
Предположим, у нас есть два вектора, А а также Б каждый с (n) бинарными атрибутами.
В этом случае сходство Жаккара (индекс) можно рассчитать как:
а расстояние Жаккара можно рассчитать как:
куда:
- это общее количество атрибутов, для которых оба А а также Б есть 1
- общее количество атрибутов, для которых А имеет 0 и Б имеет 1
- общее количество атрибутов, для которых А имеет 1 и Б имеет 0
- это общее количество атрибутов, для которых оба А а также Б есть 0
а также:
Пример
Чтобы объяснить это более простыми словами, рассмотрим пример, который можно использовать для анализ потребительской корзины.
Вы управляете магазином с 6 товарами (атрибутами) и 2 покупателями (объектами), а также отслеживаете, какой покупатель купил какой товар. Ты знаешь что:
- Клиент А купил: яблоко, кофе с молоком
- Клиент Б купил: яйца, молоко, кофе
Как вы уже можете себе представить, мы можем построить следующую матрицу:
Где бинарный атрибут для каждого клиента указывает, купил ли клиент (1) или не купил (0) конкретный продукт.
Вопрос состоит в том, чтобы найти сходство Жаккара и расстояние Жаккара для этих двух клиентов.
Шаг 1:
Сначала нам нужно найти общее количество атрибутов для каждого :
Мы можем проверить группы, просуммировав подсчеты. он должен быть равен 6, что является количество атрибутов (продуктов):
Шаг 2:
Поскольку у нас есть все необходимые входные данные, теперь мы можем вычислить сходство Жаккара:
И расстояние Жаккара:
Вычислить сходство Jaccard в Python
В этом разделе мы будем использовать те же наборы, которые мы определили в одном из первых разделов:
- А = {1, 2, 3, 5, 7}
- Б = {1, 2, 4, 8, 9}
Начнем с их определения в Python:
A = {1, 2, 3, 5, 7}
B = {1, 2, 4, 8, 9}
В качестве следующего шага мы построим функцию, которая принимает множество А и установить Б в качестве параметров, а затем вычисляет сходство Жаккара, используя набор операций и возвращает его:
def jaccard_similarity(A, B):
#Find intersection of two sets
nominator = A.intersection(B)
#Find union of two sets
denominator = A.union(B)
#Take the ratio of sizes
similarity = len(nominator)/len(denominator)
return similarity
Затем протестируйте нашу функцию:
similarity = jaccard_similarity(A, B)
print(similarity)
И вы должны получить:
0.25
что точно такое же, как статистика, которую мы рассчитали вручную.
Рассчитать расстояние Жаккара в Python
В этом разделе мы продолжаем работать с теми же наборами ( А а также Б ) как и в предыдущем разделе:
- А = {1, 2, 3, 5, 7}
- Б = {1, 2, 4, 8, 9}
Начнем с их определения в Python:
A = {1, 2, 3, 5, 7}
B = {1, 2, 4, 8, 9}
В качестве следующего шага мы построим функцию, которая принимает множество А и установить Б в качестве параметров, а затем вычисляет сходство Жаккара, используя набор операций и возвращает его:
def jaccard_distance(A, B):
#Find symmetric difference of two sets
nominator = A.symmetric_difference(B)
#Find union of two sets
denominator = A.union(B)
#Take the ratio of sizes
distance = len(nominator)/len(denominator)
return distance
distance = jaccard_distance(A, B)
Затем протестируйте нашу функцию:
distance = jaccard_distance(A, B)
print(distance)
И вы должны получить:
0.75
что точно такое же, как статистика, которую мы рассчитали вручную.
Вычислить сходство и расстояние асимметричных двоичных атрибутов в Python
Начнем с импорта необходимых зависимостей:
import numpy as np
from scipy.spatial.distance import jaccard
from sklearn.metrics import jaccard_score
Используя таблицу, которую мы использовали в разделе теории:
мы можем создать необходимые бинарные векторы:
A = np.array([1,0,0,1,1,1])
B = np.array([0,0,1,1,1,0])
а затем используйте функцию библиотек для вычисления сходства Жаккара и расстояния Жаккара:
similarity = jaccard_score(A, B)
distance = jaccard(A, B)
print(f'Jaccard similarity is equal to: {similarity}')
print(f'Jaccard distance is equal to: {distance}')
И вы должны получить:
Jaccard similarity is equal to: 0.4
Jaccard distance is equal to: 0.6
что точно такое же, как статистика, которую мы рассчитали вручную.
Вывод
В этой статье мы рассмотрели сходство Жаккара (индекс) и расстояние Жаккара, а также то, как их рассчитать в Python.
Не стесняйтесь оставлять комментарии ниже, если у вас есть какие-либо вопросы или предложения по некоторым изменениям, и проверьте больше моих Статистика статьи.