Encuentre el índice de Jaccard y la distancia de Jaccard entre los dos conjuntos dados

Dados dos conjuntos de números enteros s1 y s2 , la tarea es encontrar el índice de Jaccard y la distancia de Jaccard entre los dos conjuntos.

Ejemplos:

Entrada: s1 = {1, 2, 3, 4, 5}, s2 = {4, 5, 6, 7, 8, 9, 10}
Salida:
Índice Jaccard = 0,2
Distancia Jaccard = 0,8

Entrada: s1 = {1, 2, 3, 4, 5}, s2 = {4, 5, 6, 7, 8}
Salida:
Índice Jaccard = 0,25
Distancia Jaccard = 0,75

Enfoque: el índice de Jaccard y la distancia de Jaccard entre los dos conjuntos se pueden calcular utilizando la fórmula:

 \[ Jaccard Index = \frac {| A \cap B |}{| A \cup B |} = \frac {|A \cap B |}{|A| +|B| -|A \cap B |} \] \[ Jaccard Distance = 1 - Jaccard Index \]

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function to return the
// intersection set of s1 and s2
set<int> intersection(set<int> s1, set<int> s2)
{
    set<int> intersect;
  
    // Find the intersection of the two sets
    set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(),
                     inserter(intersect, intersect.begin()));
  
    return intersect;
}
  
// Function to return the Jaccard index of two sets
double jaccard_index(set<int> s1, set<int> s2)
{
    // Sizes of both the sets
    double size_s1 = s1.size();
    double size_s2 = s2.size();
  
    // Get the intersection set
    set<int> intersect = intersection(s1, s2);
  
    // Size of the intersection set
    double size_in = intersect.size();
  
    // Calculate the Jaccard index
    // using the formula
    double jaccard_in = size_in
                        / (size_s1 + size_s2 - size_in);
  
    // Return the Jaccard index
    return jaccard_in;
}
  
// Function to return the Jaccard distance
double jaccard_distance(double jaccardIndex)
{
    // Calculate the Jaccard distance
    // using the formula
    double jaccard_dist = 1 - jaccardIndex;
  
    // Return the Jaccard distance
    return jaccard_dist;
}
  
// Driver code
int main()
{
    // Elements of the 1st set
    set<int> s1;
    s1.insert(1);
    s1.insert(2);
    s1.insert(3);
    s1.insert(4);
    s1.insert(5);
  
    // Elements of the 2nd set
    set<int> s2;
    s2.insert(4);
    s2.insert(5);
    s2.insert(6);
    s2.insert(7);
    s2.insert(8);
    s2.insert(9);
    s2.insert(10);
  
    double jaccardIndex = jaccard_index(s1, s2);
  
    // Print the Jaccard index and Jaccard distance
    cout << "Jaccard index = "
         << jaccardIndex << endl;
    cout << "Jaccard distance = "
         << jaccard_distance(jaccardIndex);
  
    return 0;
}

Python3

# Python3 implementation of the approach 
  
# Function to return the 
# intersection set of s1 and s2 
def intersection(s1, s2) :
  
    # Find the intersection of the two sets 
    intersect = s1 & s2 ;
  
    return intersect; 
  
  
# Function to return the Jaccard index of two sets 
def jaccard_index(s1, s2) :
      
    # Sizes of both the sets 
    size_s1 = len(s1); 
    size_s2 = len(s2); 
  
    # Get the intersection set 
    intersect = intersection(s1, s2); 
  
    # Size of the intersection set 
    size_in = len(intersect); 
  
    # Calculate the Jaccard index 
    # using the formula 
    jaccard_in = size_in  / (size_s1 + size_s2 - size_in); 
  
    # Return the Jaccard index 
    return jaccard_in; 
  
  
# Function to return the Jaccard distance 
def jaccard_distance(jaccardIndex)  :
  
    # Calculate the Jaccard distance 
    # using the formula 
    jaccard_dist = 1 - jaccardIndex; 
  
    # Return the Jaccard distance 
    return jaccard_dist; 
  
  
# Driver code 
if __name__ == "__main__" : 
  
    # Elements of the 1st set 
    s1 = set(); 
    s1.add(1); 
    s1.add(2); 
    s1.add(3); 
    s1.add(4); 
    s1.add(5); 
  
    # Elements of the 2nd set 
    s2 = set(); 
    s2.add(4); 
    s2.add(5); 
    s2.add(6); 
    s2.add(7); 
    s2.add(8); 
    s2.add(9); 
    s2.add(10); 
  
    jaccardIndex = jaccard_index(s1, s2); 
  
    # Print the Jaccard index and Jaccard distance 
    print("Jaccard index = ",jaccardIndex); 
    print("Jaccard distance = ",jaccard_distance(jaccardIndex)); 
      
    # This code is contributed by AnkitRai01
Producción:

Jaccard index = 0.2
Jaccard distance = 0.8

Publicación traducida automáticamente

Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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