Example #1
0
    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)
Example #2
0
    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))
Example #3
0
    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))
Example #4
0
    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)