Ejemplo n.º 1
0
 def test_cohesion(self):
     
     distances =  CondensedMatrix( [ 1., 2., 3., 4.,
                                         5., 6., 7., 
                                             8., 9., 
                                                10.])
     
     clusters = [Cluster(None, elements=[0,1,2]),
                   Cluster(None, elements=[3,4])]
     clustering = Clustering(clusters)
     calculator = CohesionCalculator()
     
     # cohesion of cluster 1: 1/3 * 8 
     # cohesion of cluster 2: 1/2 * 10
     # max_cohesion =  11 (1/5 * 55)
     # final cohesion = 0.696945
     self.assertAlmostEqual(1-0.696945,calculator.evaluate(clustering, distances),places = 4)
Ejemplo n.º 2
0
    def test_cohesion(self):

        distances = CondensedMatrix([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])

        clusters = [
            Cluster(None, elements=[0, 1, 2]),
            Cluster(None, elements=[3, 4])
        ]
        clustering = Clustering(clusters)
        calculator = CohesionCalculator()

        # cohesion of cluster 1: 1/3 * 8
        # cohesion of cluster 2: 1/2 * 10
        # max_cohesion =  11 (1/5 * 55)
        # final cohesion = 0.696945
        self.assertAlmostEqual(1 - 0.696945,
                               calculator.evaluate(clustering, distances),
                               places=4)
Ejemplo n.º 3
0
 def test_cohesion_with_noise(self):
     # Element 2 is treated as noise
     distances =  CondensedMatrix([ 1., 2., 3., 4.,
                                        5., 6., 7.,
                                            8., 9.,
                                               10.])
     
     clusters = [Cluster(None, elements=[0,1]),
                   Cluster(None, elements=[3,4])]
     clustering = Clustering(clusters)
     calculator = CohesionCalculator()
     #[ 1.   3.   4.   
     #       6.   7.  
     #           10.]
     # cohesion of cluster 1: 1/2 
     # cohesion of cluster 2: 1/2 * 10
     # max_cohesion:  7.75 = (1/4 * 31)
     # final cohesion: 0.7096774193548387
     self.assertAlmostEqual(1-0.7096774193548387, calculator.evaluate(clustering, distances), places = 4)
Ejemplo n.º 4
0
    def evaluate(self, clustering, condensed_distance_matrix, cohesions = None):
        all_clusters = clustering.clusters

        my_cohesions_dic = {}
        if (cohesions is None):
            #Calculate_cohesions if not given
            cohesion_calctor = CohesionCalculator()
            for cluster in all_clusters:
                my_cohesions_dic[cluster] =  cohesion_calctor.evaluate_cluster(cluster, condensed_distance_matrix)
        else:
            for i, cluster in enumerate(all_clusters):
                my_cohesions_dic[cluster] = cohesions[i]

        total_separation = 0
        for i, cluster in enumerate(all_clusters):
            separation = self.cluster_separation(cluster, clustering, my_cohesions_dic[cluster], condensed_distance_matrix)
            total_separation = total_separation + separation

        return total_separation
Ejemplo n.º 5
0
    def test_cohesion_with_noise(self):
        # Element 2 is treated as noise
        distances = CondensedMatrix([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])

        clusters = [
            Cluster(None, elements=[0, 1]),
            Cluster(None, elements=[3, 4])
        ]
        clustering = Clustering(clusters)
        calculator = CohesionCalculator()
        #[ 1.   3.   4.
        #       6.   7.
        #           10.]
        # cohesion of cluster 1: 1/2
        # cohesion of cluster 2: 1/2 * 10
        # max_cohesion:  7.75 = (1/4 * 31)
        # final cohesion: 0.7096774193548387
        self.assertAlmostEqual(1 - 0.7096774193548387,
                               calculator.evaluate(clustering, distances),
                               places=4)