Пример #1
0
    def get(self):

        n_classes = len([i for i in self.cm.sum_row.values() if i != 0])
        n_clusters = len([i for i in self.cm.sum_col.values() if i != 0])

        if (n_classes == n_clusters == 1) or (n_classes == n_clusters == 0):
            return 1.0

        mutual_info_score = metrics.MutualInfo(self.cm).get()

        expected_mutual_info_score = metrics.expected_mutual_info(self.cm)

        entropy_true = _entropy(cm=self.cm, y_true=True)
        entropy_pred = _entropy(cm=self.cm, y_true=False)

        normalizer = self._generalized_average(entropy_true, entropy_pred)

        denominator = normalizer - expected_mutual_info_score

        if denominator < 0:
            denominator = min(denominator, -np.finfo("float64").eps)
        else:
            denominator = max(denominator, np.finfo("float64").eps)

        adjusted_mutual_info_score = (
            mutual_info_score - expected_mutual_info_score
        ) / denominator

        return adjusted_mutual_info_score
Пример #2
0
    def get(self):

        n_classes = len([i for i in self.cm.sum_row.values() if i != 0])
        n_clusters = len([i for i in self.cm.sum_col.values() if i != 0])

        if (n_classes == n_clusters == 1) or (n_classes == n_clusters == 0):
            return 1.0

        mutual_info_score = metrics.MutualInfo(self.cm).get()

        entropy_true = _entropy(cm=self.cm, y_true=True)
        entropy_pred = _entropy(cm=self.cm, y_true=False)

        normalizer = self._generalized_average(entropy_true, entropy_pred)

        normalizer = max(normalizer, np.finfo("float64").eps)

        return mutual_info_score / normalizer
Пример #3
0
    def __init__(self, cm: "metrics.ConfusionMatrix" = None):

        self.cm = metrics.ConfusionMatrix() if cm is None else cm
        self.pair_cm = metrics.PairConfusionMatrix(self.cm)

        self.matthews_corr = metrics.MatthewsCorrCoef(cm=self.cm)
        self.completeness = metrics.Completeness(cm=self.cm)
        self.homogeneity = metrics.Homogeneity(cm=self.cm)
        self.vbeta = metrics.VBeta(cm=self.cm)
        self.q0 = metrics.Q0(cm=self.cm)
        self.q2 = metrics.Q2(cm=self.cm)
        self.pt = metrics.PrevalenceThreshold(cm=self.cm)
        self.mutual_info = metrics.MutualInfo(cm=self.cm)
        self.normalized_mutual_info = metrics.NormalizedMutualInfo(cm=self.cm)
        self.adjusted_mutual_info = metrics.AdjustedMutualInfo(cm=self.cm)
        self.rand = metrics.Rand(cm=self.cm)
        self.adjusted_rand = metrics.AdjustedRand(cm=self.cm)
        self.variation_info = metrics.VariationInfo(cm=self.cm)
Пример #4
0
 (metrics.MicroF1(),
  partial(sk_metrics.f1_score, average="micro", zero_division=0)),
 (
     metrics.WeightedF1(),
     partial(sk_metrics.f1_score, average="weighted", zero_division=0),
 ),
 (metrics.MCC(), sk_metrics.matthews_corrcoef),
 (metrics.MAE(), sk_metrics.mean_absolute_error),
 (metrics.MSE(), sk_metrics.mean_squared_error),
 (metrics.Homogeneity(), sk_metrics.homogeneity_score),
 (metrics.Completeness(), sk_metrics.completeness_score),
 (metrics.VBeta(beta=0.5), partial(sk_metrics.v_measure_score, beta=0.5)),
 (metrics.FowlkesMallows(), sk_metrics.fowlkes_mallows_score),
 (metrics.Rand(), sk_metrics.rand_score),
 (metrics.AdjustedRand(), sk_metrics.adjusted_rand_score),
 (metrics.MutualInfo(), sk_metrics.mutual_info_score),
 (
     metrics.NormalizedMutualInfo(average_method="min"),
     partial(sk_metrics.normalized_mutual_info_score, average_method="min"),
 ),
 (
     metrics.NormalizedMutualInfo(average_method="max"),
     partial(sk_metrics.normalized_mutual_info_score, average_method="max"),
 ),
 (
     metrics.NormalizedMutualInfo(average_method="arithmetic"),
     partial(sk_metrics.normalized_mutual_info_score,
             average_method="arithmetic"),
 ),
 (
     metrics.NormalizedMutualInfo(average_method="geometric"),