Python에서 jaccard 유사성을 계산하는 방법


Jaccard 유사성 지수는 두 데이터 세트 간의 유사성을 측정합니다. 범위는 0에서 1까지입니다. 숫자가 높을수록 두 데이터 세트가 더 유사합니다.

Jaccard 유사성 지수는 다음과 같이 계산됩니다.

Jaccard 유사성 = (두 세트의 관측치 수) / (두 세트의 관측치 수)

또는 표기법 형식으로 작성하면 다음과 같습니다.

J(A, B) = |A∩B| / |A∪B|

이 튜토리얼에서는 Python에서 두 데이터 세트에 대한 Jaccard 유사성을 계산하는 방법을 설명합니다.

예: Python의 Jaccard 유사성

다음과 같은 두 가지 데이터 세트가 있다고 가정합니다.

 import numpy as np

a = [0, 1, 2, 5, 6, 8, 9]
b = [0, 2, 3, 4, 5, 7, 9]

두 세트 간의 Jaccard 유사성을 계산하기 위해 다음 함수를 정의할 수 있습니다.

 #define Jaccard Similarity function
def jaccard(list1, list2):
    intersection = len(list(set(list1).intersection(list2)))
    union = (len(list1) + len(list2)) - intersection
    return float(intersection) / union

#find Jaccard Similarity between the two sets 
jaccard(a, b)

0.4

두 목록 간의 Jaccard 유사성은 0.4 입니다.

두 세트가 값을 공유하지 않으면 함수는 0을 반환합니다.

 c = [0, 1, 2, 3, 4, 5]
d = [6, 7, 8, 9, 10]

jaccard(c, d)

0.0

그리고 두 세트가 동일하면 함수는 1을 반환합니다.

 e = [0, 1, 2, 3, 4, 5]
f = [0, 1, 2, 3, 4, 5]

jaccard(e, f)

1.0

이 함수는 문자열이 포함된 집합에도 작동합니다.

 g = ['cat', 'dog', 'hippo', 'monkey']
h = ['monkey', 'rhino', 'ostrich', 'salmon']

jaccard(g, h)

0.142857

또한 이 기능을 사용하여 두 세트 사이의 차이점Jaccard 거리를 찾을 수 있으며 1 – Jaccard 유사도로 계산됩니다.

 a = [0, 1, 2, 5, 6, 8, 9]
b = [0, 2, 3, 4, 5, 7, 9]

#find Jaccard distance between sets a and b
1 - jaccard(a, b)

0.6

관련 항목: R에서 Jaccard 유사성을 계산하는 방법

Jaccard 유사성 지수에 대해 자세히 알아보려면 이 Wikipedia 페이지를 참조하세요.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다