def test_ls_dist_equals_sim(self): """Test for equal RANKS using dist. vs. sim. (LS_dist != 1-LS_sim). Using hubness and k-NN accuracy as proxy.""" self.setUpMod('rnd') ls_dist = local_scaling(self.dist, metric='distance') ls_sim = local_scaling(1 - self.dist, metric='similarity') h_dist, _, _ = hubness(ls_dist, metric='distance') h_sim, _, _ = hubness(ls_sim, metric='similarity') acc_dist, _, _ = score(ls_dist, self.label, metric='distance') acc_sim, _, _ = score(ls_sim, self.label, metric='similarity') dist_sim_equal_in_hubness_knn = np.allclose(h_dist, h_sim) and \ np.allclose(acc_dist, acc_sim) return self.assertTrue(dist_sim_equal_in_hubness_knn)
def test_ls_basic_requirements(self): """Test that matrix is symmetric, diag==0, and in range [0, 1]""" self.setUpMod('rnd') ls_dist = local_scaling(self.dist) symmetric = np.all(ls_dist == ls_dist.T) diag_zero = np.all(ls_dist.diagonal() == 0.) correct_range = ls_dist.min() >= 0. and ls_dist.max() <= 1. return self.assertTrue(symmetric and diag_zero and correct_range)
def test_local_scaling(self): self.setUpMod('toy') dist_calc = local_scaling(self.dist, k=2) calc_equals_truth = np.allclose(dist_calc, self.ls_dist_truth) return self.assertTrue(calc_equals_truth)