I am currently computing the Maximum Mean Discrepancy (MMD) between two binary (0/1) datasets using Jaccard similarity. The code works, but since I’m new to this concept, I’d really appreciate any feedback on whether this is an appropriate approach. Thank you in advance! import numpy as np from sklearn.metrics.pairwise import pairwise_distances # Jaccard Kernel function def jaccard_kernel(X, Y=None): # self kernel if Y is None: Y = X jaccard_distance = pairwise_distances(X, Y, metric='jaccard') jaccard_similarity = 1- jaccard_distance return jaccard_similarity # MMD function def compute_mmd_with_kernel(X, Y): # Step 1: Compute the Jaccard kernel similarity_matrix_X = jaccard_kernel(X) similarity_matrix_XY = jaccard_kernel(X, Y) similarity_matrix_Y = jaccard_kernel(Y) # Step 2: Calculate MMD terms m_X = len(X) m_Y = len(Y) # Calculate terms term_X = np.sum(similarity_matrix_X) / (m_X * (m_X - 1)) term_XY = np.sum(similarity_matrix_XY) / (m_X * m_Y) term_Y = np.sum(similarity_matrix_Y) / (m_Y * (m_Y - 1)) # Step 3: Compute MMD^2 mmd_squared = term_X - 2 * term_XY + term_Y # Step 4: Compute final MMD mmd = np.sqrt(mmd_squared) return mmd Reference: https://www.onurtunali.com/ml/2019/03/08/maximum-mean-discrepancy-in-machine-learning.html` Continue reading...