From 0e85ec90ece0cec766e2f3fee6b0bd2594c229d9 Mon Sep 17 00:00:00 2001 From: jamacanpenguin <6195012+jamacanpenguin@users.noreply.github.com> Date: Fri, 7 Jun 2019 15:05:13 +0100 Subject: [PATCH 1/2] Append Jaccard dissimilarity to dissim.py This is my first contribution so please help if I've not set up the review process correctly. This additional code should add the option to use Jaccard's dissimilarity in KModes --- kmodes/util/dissim.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kmodes/util/dissim.py b/kmodes/util/dissim.py index 4f27471..944c013 100644 --- a/kmodes/util/dissim.py +++ b/kmodes/util/dissim.py @@ -56,3 +56,13 @@ def calc_dissim(b, X, memj, idr): if b[idr] == t else 1.0 for idr, t in enumerate(val_a)]).sum(0) for idj, val_a in enumerate(a)]) + + +def jaccard_dissim(a, b, **_): + """Jaccard distance function""" + i = np.sum((a == 1) & (b == 1), axis=1) + j = np.sum((a == 1) | (b == 1), axis=1) + if j.any != 0: + return ((j - i) /j) + else: + return 1 From 8a2d62b6a1f64e3b2b2f1ec49e9e9dc9c0c84b05 Mon Sep 17 00:00:00 2001 From: jamacanpenguin <6195012+jamacanpenguin@users.noreply.github.com> Date: Fri, 7 Jun 2019 15:15:20 +0100 Subject: [PATCH 2/2] Update dissim.py --- kmodes/util/dissim.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kmodes/util/dissim.py b/kmodes/util/dissim.py index 944c013..f0621c6 100644 --- a/kmodes/util/dissim.py +++ b/kmodes/util/dissim.py @@ -60,9 +60,9 @@ def calc_dissim(b, X, memj, idr): def jaccard_dissim(a, b, **_): """Jaccard distance function""" - i = np.sum((a == 1) & (b == 1), axis=1) + i = np.sum((a == 1) & (b == 1), axis=1) j = np.sum((a == 1) | (b == 1), axis=1) if j.any != 0: - return ((j - i) /j) + return (( j - i ) / j ) else: return 1