pandas: hitung kemiripan jaccard untuk setiap baris berdasarkan nilai di kolom lain
Dec 15 2020
Saya memiliki kerangka data sebagai berikut, hanya dengan lebih banyak baris:
import pandas as pd
data = {'First': ['First value', 'Second value','Third value'],
'Second': [['old','new','gold','door'], ['old','view','bold','door'],['new','view','world','window']]}
df = pd.DataFrame (data, columns = ['First','Second'])
Untuk menghitung kemiripan jaccard saya menemukan bagian ini secara online (bukan solusi saya):
def lexical_overlap(doc1, doc2):
words_doc1 = set(doc1)
words_doc2 = set(doc2)
intersection = words_doc1.intersection(words_doc2)
union = words_doc1.union(words_doc2)
return float(len(intersection)) / len(union) * 100
apa yang ingin saya dapatkan sebagai hasilnya adalah ukuran untuk mengambil setiap baris dari kolom Kedua sebagai doc dan membandingkan setiap pasangan secara iteratif dan mengeluarkan ukuran dengan nama baris dari kolom Pertama seperti ini:
First value and Second value = 80
First value and Third value = 95
Second value and Third value = 90
Jawaban
AmitAmola Dec 15 2020 at 23:04
Baiklah, saya akan melakukannya seperti ini:
from itertools import combinations
for val in list(combinations(range(len(df)), 2)):
firstlist = df.iloc[val[0],1]
secondlist = df.iloc[val[1],1]
value = round(lexical_overlap(firstlist,secondlist),2)
print(f"{df.iloc[val[0],0]} and {df.iloc[val[1],0]}'s value is: {value}")
Keluaran:
First value and Second value's value is: 33.33
First value and Third value's value is: 14.29
Second value and Third value's value is: 14.29
1 QuangHoang Dec 15 2020 at 22:54
Karena data Anda tidak besar, Anda dapat mencoba menyiarkan dengan pendekatan yang sedikit berbeda:
# dummy for each rows
s = pd.get_dummies(df.Second.explode()).sum(level=0).values
# pair-wise jaccard
([email protected])/(s|s[:,None,:]).sum(-1) * 100
Keluaran:
array([[100. , 33.33333333, 14.28571429],
[ 33.33333333, 100. , 14.28571429],
[ 14.28571429, 14.28571429, 100. ]])
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'