Jaccard係数(Jaccard index)をPythonで計算する

ロウ
2022-02-15
ロウ
2022-02-15

Jaccard係数(Jaccard index、Jaccard similarity coefficient)とは、二つのデータセット間の類似度を測る指標です。 値の範囲は0〜1です。1に近いほど、二つのデータセットは類似しています。


Pythonで計算する:

```
a = ["apple", "orange", "banana"]
b = ["orange", "strawberry", "apple", "banana"]

def jaccard_sim(a, b):
    s1 = set(a)
    s2 = set(b)
    return float(len(s1.intersection(s2)) / len(s1.union(s2)))

result = jaccard_sim(a, b)
print(result) # 結果: 0.75
```

scikit-learnで計算する:

```
from sklearn.metrics import jaccard_score
from sklearn.feature_extraction.text import CountVectorizer

corpus = [ "apple orange banana", "orange strawberry apple banana" ]
X = CountVectorizer().fit_transform(corpus)
arr = X.toarray()
result = jaccard_score(arr[0], arr[1])
print(result) # 結果: 0.75
```