Ejemplo n.º 1
0
def score(train_a_dist: FrequencyDistribution,
          test_a_dist: FrequencyDistribution,
          train_c_dist: FrequencyDistribution,
          test_c_dist: FrequencyDistribution,
          dbca_config: DBCASplitterConfig) -> float:
    """
       

       Parameters
       ----------
       train_a_dist : FrequencyDistribution
           DESCRIPTION.
       test_a_dist : FrequencyDistribution
           DESCRIPTION.
       train_c_dist : FrequencyDistribution
           DESCRIPTION.
       test_c_dist : FrequencyDistribution
           DESCRIPTION.

       Returns
       -------
       float
           DESCRIPTION.

       """
    atom_score = chernoff_divergence(train_a_dist, test_a_dist,
                                     dbca_config.alpha_a)
    if atom_score < dbca_config.D_A:
        atom_score = 0

    compound_score = np.abs(
        chernoff_divergence(train_c_dist, test_c_dist, dbca_config.alpha_c) -
        dbca_config.D_C)
    return compound_score + atom_score
Ejemplo n.º 2
0
 def calc_compound_divergence(self, dist_a: FrequencyDistribution, 
                     dist_b: FrequencyDistribution) -> float:
     return chernoff_divergence(dist_a, dist_b, alpha=self.config.alpha_c)