Exemple #1
0
 def test_dbscan_regression_mini(self):
     distances = CondensedMatrix([    12.36931688,   5.83095189,   9.43398113,  12.52996409,  15.65247584,  17.4642492,    
                                                     9.21954446,   4.47213595,   3.16227766,   4.47213595,   5.65685425,   
                                                                   5.,           8.06225775,  11.18033989,  13.15294644,
                                                                                 3.16227766,   6.32455532,   8.24621125,   
                                                                                               3.16227766,   5.09901951,   
                                                                                                             2.  ])
     dbscan_alg = DBSCANAlgorithm(distances)
     clustering = dbscan_alg.perform_clustering(kwargs = {"eps":4.0, "minpts":3})
     self.assertItemsEqual(clustering.gen_class_list(starts_with = 1),[-1, 1, -1, 1, 1, 1]) #[0, 1, 0, 1, 1, 1, 0]
Exemple #2
0
 def test_dbscan_regression_mini(self):
     distances = CondensedMatrix([
         12.36931688, 5.83095189, 9.43398113, 12.52996409, 15.65247584,
         17.4642492, 9.21954446, 4.47213595, 3.16227766, 4.47213595,
         5.65685425, 5., 8.06225775, 11.18033989, 13.15294644, 3.16227766,
         6.32455532, 8.24621125, 3.16227766, 5.09901951, 2.
     ])
     dbscan_alg = DBSCANAlgorithm(distances)
     clustering = dbscan_alg.perform_clustering(kwargs={
         "eps": 4.0,
         "minpts": 3
     })
     self.assertItemsEqual(clustering.gen_class_list(starts_with=1),
                           [-1, 1, -1, 1, 1, 1])  #[0, 1, 0, 1, 1, 1, 0]
Exemple #3
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 #4
0
 def test_dbscan(self):
     distances = CondensedMatrix([ 0., 0., 2., 2., 
                                      0., 2., 2.,
                                         2., 2.,
                                            0.])
     dbscan_alg = DBSCANAlgorithm(distances)
     eps = 1.0
     minpts = 2
     clustering = dbscan_alg.perform_clustering(kwargs = {"eps":eps, "minpts":minpts})
     expected = [1, 1, 1]
     self.assertItemsEqual(clustering.gen_class_list(starts_with = 1), expected)
     dbscan_alg.element_class = [PointClassType.UNCLASSIFIED]*5
     eps = 1.0
     minpts = 1
     clustering = dbscan_alg.perform_clustering(kwargs = {"eps":eps, "minpts":minpts})
     self.assertItemsEqual(clustering.gen_class_list(starts_with = 1),[1, 1, 1, 2, 2])
Exemple #5
0
 def test_eps_neighborhood(self):
     distances = CondensedMatrix([ 1., 1., 1., 1., 1., 1., 1., 1.,
                                       1., 1., 1., 1., 2., 1. ,1.,
                                           1., 1., 1., 3., 1., 1.,
                                               1., 1., 2., 1., 1.,
                                                   1., 1., 1., 1.,
                                                       1., 1., 1.,
                                                           1., 2.,
                                                               1.])
     dbscan_alg = DBSCANAlgorithm(distances)
     
     self.assertItemsEqual(dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6,3),[0, 1, 2, 3, 4, 5, 7, 8])
     self.assertItemsEqual(dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6,2),[0, 1, 3, 4, 5, 7, 8])
     self.assertItemsEqual(dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6,1),[0, 4, 5, 7])
     self.assertItemsEqual(dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6,1.),[0, 4, 5, 7])
     
     self.assertItemsEqual(distances.element_neighbors_within_radius(6,3),[0, 1, 2, 3, 4, 5, 7, 8])
     self.assertItemsEqual(distances.element_neighbors_within_radius(6,2),[0, 1, 3, 4, 5, 7, 8])
     self.assertItemsEqual(distances.element_neighbors_within_radius(6,1),[0, 4, 5, 7])
     self.assertItemsEqual(distances.element_neighbors_within_radius(6,1.),[0, 4, 5, 7])
Exemple #6
0
 def test_dbscan(self):
     distances = CondensedMatrix([0., 0., 2., 2., 0., 2., 2., 2., 2., 0.])
     dbscan_alg = DBSCANAlgorithm(distances)
     eps = 1.0
     minpts = 2
     clustering = dbscan_alg.perform_clustering(kwargs={
         "eps": eps,
         "minpts": minpts
     })
     expected = [1, 1, 1]
     self.assertItemsEqual(clustering.gen_class_list(starts_with=1),
                           expected)
     dbscan_alg.element_class = [PointClassType.UNCLASSIFIED] * 5
     eps = 1.0
     minpts = 1
     clustering = dbscan_alg.perform_clustering(kwargs={
         "eps": eps,
         "minpts": minpts
     })
     self.assertItemsEqual(clustering.gen_class_list(starts_with=1),
                           [1, 1, 1, 2, 2])
Exemple #7
0
    def test_eps_neighborhood(self):
        distances = CondensedMatrix([
            1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 2., 1., 1., 1., 1.,
            1., 3., 1., 1., 1., 1., 2., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
            2., 1.
        ])
        dbscan_alg = DBSCANAlgorithm(distances)

        self.assertItemsEqual(
            dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6, 3),
            [0, 1, 2, 3, 4, 5, 7, 8])
        self.assertItemsEqual(
            dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6, 2),
            [0, 1, 3, 4, 5, 7, 8])
        self.assertItemsEqual(
            dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6, 1), [0, 4, 5, 7])
        self.assertItemsEqual(
            dbscan_alg._DBSCANAlgorithm__eps_neighborhood(6, 1.), [0, 4, 5, 7])

        self.assertItemsEqual(distances.element_neighbors_within_radius(6, 3),
                              [0, 1, 2, 3, 4, 5, 7, 8])
        self.assertItemsEqual(distances.element_neighbors_within_radius(6, 2),
                              [0, 1, 3, 4, 5, 7, 8])
        self.assertItemsEqual(distances.element_neighbors_within_radius(6, 1),
                              [0, 4, 5, 7])
        self.assertItemsEqual(distances.element_neighbors_within_radius(6, 1.),
                              [0, 4, 5, 7])
Exemple #8
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)