def ksc_runner(self, method): k = 2 #One cluster with uniform series, another with a peak. X = np.array([[1.0, 1, 1], [1.1, 1, 1], [1.2, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [90, 2000, 90], [90, 2001, 90], [90, 2002, 90], [90, 2003, 90]]) cents, assign, shift, distc = ksc.ksc(X, k) del shift self.assertEqual(len(set(assign)), k) self.assertEqual(sum(assign == assign[0]), 8) self.assertEqual(sum(assign == assign[-1]), 4) self.assertEqual(len(set(assign[:8])), 1) self.assertEqual(len(set(assign[8:])), 1) self.assertFalse(set(assign[:8]) == set(assign[8:])) cluster_one = assign[0] cluster_two = assign[-1] self.assertTrue(dist.dist(X[0], cents[cluster_one]) < \ dist.dist(X[0], cents[cluster_two])) self.assertTrue(dist.dist(cents[cluster_one], cents[cluster_two]) > 0) for i in xrange(X.shape[0]): self.assertAlmostEqual(dist.dist(X[i], cents[0], True), distc.T[i, 0], 5) self.assertAlmostEqual(dist.dist(X[i], cents[1], True), distc.T[i, 1], 5)
def test_dist(self): array1 = np.array([]) array2 = np.array([]) self.assertEqual(0, dist.dist(array1, array2)) array1 = np.array([0.0, 0.0]) array2 = np.array([0.0, 0.0]) self.assertEqual(0, dist.dist(array1, array2)) array1 = np.array([1.0, 2.0]) array2 = np.array([0.0, 0.0]) self.assertEqual(1, dist.dist(array1, array2)) array1 = np.array([0.0, 0.0]) array2 = np.array([1.0, 2.0]) self.assertEqual(1, dist.dist(array1, array2)) array1 = np.array([2.0, 3.0, 4.0]) array2 = np.array([3.0, 4.0, 0.0]) self.assertAlmostEqual(0, dist.dist(array1, array1)) self.assertAlmostEqual(0, dist.dist(array2, array2)) expected = 2 / sqrt(29) self.assertAlmostEqual(expected, dist.dist(array1, array2, True)) self.assertAlmostEqual(expected, dist.dist(array2, array1, True))
def test_dist(self): array1 = np.array([]) array2 = np.array([]) self.assertEqual(0, dist.dist(array1, array2)) array1 = np.array([0., 0.]) array2 = np.array([0., 0.]) self.assertEqual(0, dist.dist(array1, array2)) array1 = np.array([1., 2.]) array2 = np.array([0., 0.]) self.assertEqual(1, dist.dist(array1, array2)) array1 = np.array([0., 0.]) array2 = np.array([1., 2.]) self.assertEqual(1, dist.dist(array1, array2)) array1 = np.array([2.0, 3.0, 4.0]) array2 = np.array([3.0, 4.0, 0.0]) self.assertAlmostEqual(0, dist.dist(array1, array1)) self.assertAlmostEqual(0, dist.dist(array2, array2)) expected = 2 / sqrt(29) self.assertAlmostEqual(expected, dist.dist(array1, array2, True)) self.assertAlmostEqual(expected, dist.dist(array2, array1, True))
def ksc_runner(self, method): k = 2 # One cluster with uniform series, another with a peak. X = np.array( [ [1.0, 1, 1], [1.1, 1, 1], [1.2, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [1.3, 1, 1], [90, 2000, 90], [90, 2001, 90], [90, 2002, 90], [90, 2003, 90], ] ) cents, assign, shift, distc = ksc.ksc(X, k) del shift self.assertEqual(len(set(assign)), k) self.assertEqual(sum(assign == assign[0]), 8) self.assertEqual(sum(assign == assign[-1]), 4) self.assertEqual(len(set(assign[:8])), 1) self.assertEqual(len(set(assign[8:])), 1) self.assertFalse(set(assign[:8]) == set(assign[8:])) cluster_one = assign[0] cluster_two = assign[-1] self.assertTrue(dist.dist(X[0], cents[cluster_one]) < dist.dist(X[0], cents[cluster_two])) self.assertTrue(dist.dist(cents[cluster_one], cents[cluster_two]) > 0) for i in xrange(X.shape[0]): self.assertAlmostEqual(dist.dist(X[i], cents[0], True), distc.T[i, 0], 5) self.assertAlmostEqual(dist.dist(X[i], cents[1], True), distc.T[i, 1], 5)