Exemple #1
0
 def test_seed_expansion(self):
     """
     Graph:
     1--2  3--4
     \ /
      0
      
     Adj. list:
     
     1 1 0 0 0
       1 0 0 0 
         0 0 0 
           0 0 
             1
             
     Inv. distance adjacency list (two nodes are connected if their distance is 
     lower than x)
     
     0 0 x x x
       0 x x x 
         x x x 
           x x 
             0
                   
     """
     distances = CondensedMatrix([ 0., 0., 2., 2., 
                                      0., 2., 2.,
                                         2., 2.,
                                            0.])
     N = distances.row_length
     dbscan_alg = DBSCANAlgorithm(distances)
     eps = 1.0
     minpts = 2
     
     elements_class = [PointClassType.UNCLASSIFIED]*N 
     dbscan_alg._DBSCANAlgorithm__seed_expansion(1, eps, minpts, [2], elements_class)
     expected_classes = [1,1,1,PointClassType.UNCLASSIFIED,PointClassType.UNCLASSIFIED ]
     self.assertItemsEqual(expected_classes, elements_class)
     
     elements_class = [PointClassType.UNCLASSIFIED]*N 
     dbscan_alg._DBSCANAlgorithm__seed_expansion(2, eps, minpts, [3], elements_class)
     expected_classes = [PointClassType.UNCLASSIFIED,PointClassType.UNCLASSIFIED,PointClassType.UNCLASSIFIED,PointClassType.UNCLASSIFIED,PointClassType.UNCLASSIFIED ]
     self.assertItemsEqual(expected_classes, elements_class)
     
     minpts = 1
     dbscan_alg._DBSCANAlgorithm__seed_expansion(2, eps, minpts, [3], elements_class)
     expected_classes = [PointClassType.UNCLASSIFIED,PointClassType.UNCLASSIFIED,PointClassType.UNCLASSIFIED, 2, 2]
     self.assertItemsEqual(expected_classes, elements_class)
     
     elements_class = [PointClassType.UNCLASSIFIED]*N 
     dbscan_alg._DBSCANAlgorithm__seed_expansion(1, eps, minpts, [2,4], elements_class)
     expected_classes = [1, 1, 1, 1, 1]
     self.assertItemsEqual(expected_classes, elements_class)
Exemple #2
0
    def test_seed_expansion(self):
        """
        Graph:
        1--2  3--4
        \ /
         0
         
        Adj. list:
        
        1 1 0 0 0
          1 0 0 0 
            0 0 0 
              0 0 
                1
                
        Inv. distance adjacency list (two nodes are connected if their distance is 
        lower than x)
        
        0 0 x x x
          0 x x x 
            x x x 
              x x 
                0
                      
        """
        distances = CondensedMatrix([0., 0., 2., 2., 0., 2., 2., 2., 2., 0.])
        N = distances.row_length
        dbscan_alg = DBSCANAlgorithm(distances)
        eps = 1.0
        minpts = 2

        elements_class = [PointClassType.UNCLASSIFIED] * N
        dbscan_alg._DBSCANAlgorithm__seed_expansion(1, eps, minpts, [2],
                                                    elements_class)
        expected_classes = [
            1, 1, 1, PointClassType.UNCLASSIFIED, PointClassType.UNCLASSIFIED
        ]
        self.assertItemsEqual(expected_classes, elements_class)

        elements_class = [PointClassType.UNCLASSIFIED] * N
        dbscan_alg._DBSCANAlgorithm__seed_expansion(2, eps, minpts, [3],
                                                    elements_class)
        expected_classes = [
            PointClassType.UNCLASSIFIED, PointClassType.UNCLASSIFIED,
            PointClassType.UNCLASSIFIED, PointClassType.UNCLASSIFIED,
            PointClassType.UNCLASSIFIED
        ]
        self.assertItemsEqual(expected_classes, elements_class)

        minpts = 1
        dbscan_alg._DBSCANAlgorithm__seed_expansion(2, eps, minpts, [3],
                                                    elements_class)
        expected_classes = [
            PointClassType.UNCLASSIFIED, PointClassType.UNCLASSIFIED,
            PointClassType.UNCLASSIFIED, 2, 2
        ]
        self.assertItemsEqual(expected_classes, elements_class)

        elements_class = [PointClassType.UNCLASSIFIED] * N
        dbscan_alg._DBSCANAlgorithm__seed_expansion(1, eps, minpts, [2, 4],
                                                    elements_class)
        expected_classes = [1, 1, 1, 1, 1]
        self.assertItemsEqual(expected_classes, elements_class)