Сходство Жаккара и расстояние Жаккара в Python

В этом уроке мы рассмотрим, как рассчитать сходство Жаккара (индекс) и расстояние Жаккара в Python.

Оглавление

  • Введение
  • В чем сходство Жаккара
  • Вычислить сходство Жаккара
  • Что такое расстояние Жаккара?
  • Вычислить расстояние Жаккара
  • Сходство и расстояние асимметричных бинарных атрибутов
  • Вычислить сходство Jaccard в Python
  • Рассчитать расстояние Жаккара в Python
  • Сходство и расстояние бинарных атрибутов асимметрии в Python
  • Вывод

Введение

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

Чтобы продолжить следовать этому руководству, нам понадобятся следующие библиотеки Python: scipy, sklearn и numpy.

Если он у вас не установлен, откройте «Командную строку» (в Windows) и установите его, используя следующий код:

pip install scipy
pip install sklearn
pip install numpy

В чем сходство Жаккара

Сходство Жаккара (также известное как коэффициент сходства Жаккара или индекс Жаккара) — это статистика, используемая для измерения сходства между двумя наборами.

Его использование расширяется для измерения сходства между двумя объектами, например, двумя текстовыми файлами. В программировании на Python сходство Жаккара в основном используется для измерения сходства между двумя наборами или между двумя асимметричными двоичными векторами.

Математически вычисление подобия Жаккара просто берет отношение пересечения множеств к объединению множеств.

Рассмотрим два набора А а также Б :

Сходство Жаккара — множество определено

Тогда их сходство Жаккара (или индекс Жаккара) определяется выражением:
1*Fs71qhfrf3yuQBnDI6k4sQ.png

Разобьем эту формулу на две составляющие:

1. Номинант

Номинатор фактически является установить пересечение между А а также Б показанный желтой областью на инфографике ниже:

Сходство Жаккара - Установить пересечение

2. Знаменатель

Знаменатель фактически равен установить союз из А а также Б показанный желтой областью на инфографике ниже:

Сходство Жаккара - Set Union

Используя формулу подобия Жаккара, мы можем видеть, что статистика подобия — это просто отношение двух приведенных выше визуализаций, где:

  • Если оба набора идентичны, например (Азнак равно1,2,3)(А = {1, 2, 3})
  • Например, если множества A и B не имеют общих элементов, скажем (Азнак равно1,2,3)(А = {1, 2, 3})
  • Если множества множества A и B имеют некоторые общие элементы, например, (Азнак равно1,2,3)(А={1,2,3})

Вычислить сходство Жаккара

Рассмотрим два набора:

  • А = {1, 2, 3, 5, 7}
  • Б = {1, 2, 4, 8, 9}

Или визуально:

Установить определенный пример

Шаг 1:

В качестве первого шага нам нужно найти установить пересечение между А а также Б :

Установить пересечение в Python

В таком случае:

АБзнак равно{1,2}А \шапка В = \{1, 2\}

Шаг 2:

Второй шаг – найти установить союз из А а также Б :

Установить союз в Python

В таком случае:

АБзнак равно{1,2,3,5,7,4,8,9}А \чашка В = \{1, 2, 3, 5, 7, 4, 8, 9\}

Шаг 3:

И последний шаг — взять соотношение размеров пересечения и объединения:

Джзнак равноАБАБзнак равно28знак равно0.25J = \frac{|A \cap B|}{|A \cup B|} = \frac{2}{8} = 0,25

Что такое расстояние Жаккара?

В отличие от подобия Жаккара (индекса Жаккара), расстояние Жаккара является мерой несходства между двумя множествами.

Математически расчет расстояния Жаккара представляет собой отношение разности между объединением множеств и пересечением множеств над объединением множеств.

Рассмотрим два набора А а также Б :

Сходство Жаккара — множество определено

Тогда их расстояние Жаккара определяется как:

1*kTn53RgItgnXWPyXK5mUSg.png

Разобьем эту формулу на две составляющие:

1. Номинант

Номинатор также может быть записан как:

1*Pa_UA6TYCPpJe6VkL7vZZg.png

который эффективно установить симметричную разность между А а также Б показанный желтой областью на инфографике ниже:

Сходство Жаккара — установить симметричную разницу

2. Знаменатель

Знаменатель фактически равен установить союз из А а также Б показанный желтой областью на инфографике ниже:

Сходство Жаккара - Set Union

Используя формулу расстояния Жаккара, мы можем видеть, что статистика несходства — это просто отношение двух приведенных выше визуализаций, где:

  • Если оба набора идентичны, например (Азнак равно1,2,3)(А = {1, 2, 3})
  • Например, если множества A и B не имеют общих элементов, скажем (Азнак равно1,2,3)(А = {1, 2, 3})
  • Если множества множества A и B имеют некоторые общие элементы, например, (Азнак равно1,2,3)(А={1,2,3})

Вычислить расстояние Жаккара

Рассмотрим два набора:

  • А = {1, 2, 3, 5, 7}
  • Б = {1, 2, 4, 8, 9}

Или визуально:

Установить определенный пример

Шаг 1:

В качестве первого шага нам нужно найти установить симметричную разность между А а также Б :

Python устанавливает симметричную разницу

В таком случае:

1*0pKXRaC91OzYlTlanBWJbw.png

Шаг 2:

Второй шаг – найти установить союз из А а также Б :

Установить союз в Python

В таком случае:

АБзнак равно{1,2,3,5,7,4,8,9}А \чашка В = \{1, 2, 3, 5, 7, 4, 8, 9\}

Шаг 3:

И последний шаг — взять соотношение размеров симметричной разности и объединения:

1*NGXiGGlvmODSO_DRDRdadw.png

Сходство и расстояние асимметричных бинарных атрибутов

В этом разделе мы рассмотрим более конкретное применение сходства Жаккара и расстояния Жаккара. Более конкретно, их применение к асимметричным двоичным атрибутам.

Уже по названию можно догадаться, что это за бинарный атрибут является. Это атрибут, который имеет только два состояния, и эти два состояния:

  • 0 означает, что атрибут отсутствует
  • 1, что означает наличие атрибута

Асимметрия возникает из-за того, что если присутствуют оба атрибута (оба равны 1), это считается более важным, чем если бы оба атрибута отсутствовали (оба равны 0).

Предположим, у нас есть два вектора, А а также Б каждый с (n) бинарными атрибутами.

В этом случае сходство Жаккара (индекс) можно рассчитать как:

1*e3JZu4Zn16Tz28utP51xeA.png

а расстояние Жаккара можно рассчитать как:

1*YMiu8GmWz8GCv6IyQGlh5A.png

куда:

  • М_11М\_{11}
  • М_01М\_{01}
  • М_10М\_{10}
  • М_00М\_{00}

а также:

1*8KbqLvzxQkHKahO0Tciu7g.png

Пример

Чтобы объяснить это более простыми словами, рассмотрим пример, который можно использовать для анализ потребительской корзины.

Вы управляете магазином с 6 товарами (атрибутами) и 2 покупателями (объектами), а также отслеживаете, какой покупатель купил какой товар. Ты знаешь что:

  • Клиент А купил: яблоко, кофе с молоком
  • Клиент Б купил: яйца, молоко, кофе

Как вы уже можете себе представить, мы можем построить следующую матрицу:

1*qePn1Byz85f0Mz6n2gw6tw.png

Где бинарный атрибут для каждого клиента указывает, купил ли клиент (1) или не купил (0) конкретный продукт.

Вопрос состоит в том, чтобы найти сходство Жаккара и расстояние Жаккара для этих двух клиентов.

Шаг 1:

Сначала нам нужно найти общее количество атрибутов для каждого ММ

1*mPuAtjoi5CbmKVy9b2vSaw.png

Мы можем проверить группы, просуммировав подсчеты. он должен быть равен 6, что является нн

1*vTrnDfJnvOLHDk5_kryYPw.png

Шаг 2:

Поскольку у нас есть все необходимые входные данные, теперь мы можем вычислить сходство Жаккара:

1*mTp5efQkDrSYN3AIOTq7KA.png

И расстояние Жаккара:

1*wNS3AKiINFvBXR7CiQ6OMg.png

Вычислить сходство 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

Используя таблицу, которую мы использовали в разделе теории:

1*qePn1Byz85f0Mz6n2gw6tw.png

мы можем создать необходимые бинарные векторы:

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.

Не стесняйтесь оставлять комментарии ниже, если у вас есть какие-либо вопросы или предложения по некоторым изменениям, и проверьте больше моих Статистика статьи.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *