def test_jaccard_rows(self): assert_almost_equal = np.testing.assert_almost_equal model = distance.Jaccard().fit(self.data) assert_almost_equal(model.ps, [0.75, 0.5, 0.75]) assert_almost_equal( model(self.data), 1 - np.array([[1, 2/3, 1/3, 0], [2/3, 1, 2/3, 1/3], [1/3, 2/3, 1, 1/2], [0, 1/3, 1/2, 1]])) X = self.data.X with self.data.unlocked(): X[1, 0] = X[2, 0] = X[3, 1] = np.nan model = distance.Jaccard().fit(self.data) assert_almost_equal(model.ps, np.array([0.5, 2/3, 0.75])) # pylint: disable=bad-whitespace assert_almost_equal( model(self.data), 1 - np.array([[ 1, 2 / 2.5, 1 / 2.5, 2/3 / 3], [2 / 2.5, 1, 1.25 / 2.75, (1/2+2/3) / 3], [1 / 2.5, 1.25 / 2.75, 1, 0.5 / (2+2/3)], [2/3 / 3, (1/2+2/3) / 3, 0.5 / (2+2/3), 1]]))
def test_jaccard_cols(self): assert_almost_equal = np.testing.assert_almost_equal model = distance.Jaccard(axis=0).fit(self.data) assert_almost_equal(model.ps, [0.75, 0.5, 0.75]) assert_almost_equal( model(self.data), 1 - np.array([[1, 1 / 4, 1 / 2], [1 / 4, 1, 2 / 3], [1 / 2, 2 / 3, 1]])) self.data.X = np.array([[0, 1, 1], [np.nan, np.nan, 1], [np.nan, 0, 1], [1, 1, 0]]) model = distance.Jaccard(axis=0).fit(self.data) assert_almost_equal(model.ps, [0.5, 2 / 3, 0.75]) assert_almost_equal( model(self.data), 1 - np.array([[1, 0.4, 0.25], [0.4, 1, 5 / 12], [0.25, 5 / 12, 1]]))
import Orange.data import Orange.misc from Orange.widgets import widget, gui, settings from Orange import distance _METRICS = [ ("Euclidean", distance.Euclidean()), ("Manhattan", distance.Manhattan()), ("Cosine", distance.Cosine()), ("Jaccard", distance.Jaccard()), ("Mahalanobis", distance.Mahalanobis()), ("Spearman", distance.SpearmanR()), ("Spearman absolute", distance.SpearmanRAbsolute()), ("Pearson", distance.PearsonR()), ("Pearson absolute", distance.PearsonRAbsolute()), ] class OWDistances(widget.OWWidget): name = "Distances" description = "Compute a matrix of pairwise distances." icon = "icons/Distance.svg" inputs = [("Data", Orange.data.Table, "set_data")] outputs = [("Distances", Orange.misc.DistMatrix)] axis = settings.Setting(0) metric_idx = settings.Setting(0) autocommit = settings.Setting(False) want_main_area = False