Find the Jaccard Index and Jaccard Distance between the two given sets - GeeksforGeeks

28 May, 2019
Given two sets of integers s1 and s2, the task is to find the Jaccard Index and the Jaccard Distance between the two sets.
Examples:
Input: s1 = {1, 2, 3, 4, 5}, s2 = {4, 5, 6, 7, 8, 9, 10}Output:Jaccard index = 0.2Jaccard distance = 0.8
Input: s1 = {1, 2, 3, 4, 5}, s2 = {4, 5, 6, 7, 8}Output:Jaccard index = 0.25Jaccard distance = 0.75
Approach: The Jaccard Index and the Jaccard Distance between the two sets can be calculated by using the formula:
    
Below is the implementation of the above approach:
C++
Python3
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std;  // Function to return the// intersection set of s1 and s2set<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 setsdouble 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 distancedouble jaccard_distance(double jaccardIndex){    // Calculate the Jaccard distance    // using the formula    double jaccard_dist = 1 - jaccardIndex;      // Return the Jaccard distance    return jaccard_dist;}  // Driver codeint 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 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
Jaccard index = 0.2
Jaccard distance = 0.8

ankthon
cpp-set
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Program to print prime numbers from 1 to N.
Fizz Buzz Implementation
Program to multiply two matrices
Add two numbers without using arithmetic operators
Count ways to reach the n'th stair
Program to add two binary strings
Program to convert a given number to words
Modular multiplicative inverse
Count all possible paths from top left to bottom right of a mXn matrix