Notice
Recent Posts
Recent Comments
Link
헬창 개발자
자카드 유사도, 거리 [파이썬] 본문
1. 자카드 유사도란?
자카드 유사도(Jaccard Similarity)는 두 집합 간의 유사성을 측정하는 방법으로, 두 집합 간의 교집합과 합집합의 비율을 계산합니다. 자카드 유사도는 0에서 1 사이의 값을 가지며, 1에 가까울수록 두 집합이 유사하다는 것을 의미합니다.
수식
자카드 유사도는 다음과 같이 정의됩니다
2. 자카드 거리란?
자카드 거리(Jaccard Distance)는 자카드 유사도의 보완적인 개념으로, 두 집합 간의 차이를 거리로 표현합니다. 자카드 거리는 0에서 1 사이의 값을 가지며, 1에 가까울수록 두 집합 간의 차이가 크다는 것을 의미합니다.
수식
자카드 거리는 다음과 같이 정의됩니다
3. 소스코드
dic={'ullman' : [('jeff', 'ullman', 'jennifer', 'widom', 'xml', 'security', 'vldb04'),
('jeff', 'ullman', 'hector', 'garcia-molina', 'hashing', 'vldb04'),
('jeff', 'ullman', 'xml', 'query', 'vldb04'),
('jeff','ullman', 'xml', 'vldb06')],
'widom' : [('hector', 'garcia-molina', 'jennifer', 'widom', 'jeff', 'ullman', 'ranking', 'vldb04')]
}
#자카드 유사도
class jaccard_simlality:
def __init__(self, dic):
self.a=set()
self.b=set()
self.keys=[]
for i in dic:
self.keys.append(i)
for j in dic[i]:
for k in j:
if i=='ullman':
self.a.add(k)
elif i=='widom':
self.b.add(k)
def simlality(self):
c = self.a | self.b # 합
d = self.a & self.b # 교
sim = len(d)/len(c)
print('합집합 {}'.format(c))
print('교집합 {}'.format(d))
print('simlality : %.2f' %sim)
print('distance : %.2f' %(1-sim))
www = jaccard_simlality(dic)
www.simlality()
'데이터 분석' 카테고리의 다른 글
KNN 최근접 이웃 [파이썬] (0) | 2022.04.23 |
---|---|
코사인 유사도, 코사인 거리 구현[파이썬] (0) | 2022.04.23 |
계층적 군집화(hierachical clustering) [파이썬] (0) | 2022.04.23 |
편집거리 알고리즘 [파이썬] (0) | 2022.04.23 |
8. 자연어 처리 시작하기 (0) | 2022.04.17 |
Comments