Saltar al contenido

¿Cómo puedo calcular la similitud de Jaccard de dos listas que contienen cadenas en Python?

Solución:

Terminé escribiendo mi propia solución después de todo:

def jaccard_similarity(list1, list2):
    intersection = len(list(set(list1).intersection(list2)))
    union = (len(list1) + len(list2)) - intersection
    return float(intersection) / union

Para Python 3:

def jaccard_similarity(list1, list2):
    s1 = set(list1)
    s2 = set(list2)
    return float(len(s1.intersection(s2)) / len(s1.union(s2)))
list1 = ['dog', 'cat', 'cat', 'rat']
list2 = ['dog', 'cat', 'mouse']
jaccard_similarity(list1, list2)
>>> 0.5

Para uso de Python2 return len(s1.intersection(s2)) / float(len(s1.union(s2)))

@aventinus No tengo suficiente reputación para agregar un comentario a su respuesta, pero solo para aclarar las cosas, su solución mide el jaccard_similarity pero la función se llama erróneamente como jaccard_distance, que en realidad es 1 - jaccard_similarity

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *