def _get_metric_fct(self): if self.metric == 'Mutual_information': metric_fct = lambda TP, FP, TN, FN: BinaryClassificationDataset.mutual_information( TN, FN, TP, FP) elif self.metric == 'Normalized_mutual_information': metric_fct = lambda TP, FP, TN, FN: BinaryClassificationDataset.normalized_mutual_information( TN, FN, TP, FP) elif self.metric == "Balanced_accuracy": metric_fct = self.balanced_accuracy elif '{TP}' in self.metric or '{FP}' in self.metric or '{TN}' in self.metric or '{FN}' in self.metric: metric_fct = lambda TP, FP, TN, FN: eval( self.metric.format( TP=float(TP), FP=float(FP), TN=float(TN), FN=float(FN))) elif self.inverse_metric: metric_fct = lambda TP, FP, TN, FN: \ (-1.0)*BinaryClassificationDataset.calculate_confusion_metrics( {"True_negatives": TN, "True_positives": TP, "False_positives": FP, "False_negatives": FN}, weight=self.weight,)[self.metric] else: metric_fct = lambda TP, FP, TN, FN: \ BinaryClassificationDataset.calculate_confusion_metrics( {"True_negatives": TN, "True_positives": TP, "False_positives": FP, "False_negatives": FN}, weight=self.weight,)[self.metric] return metric_fct
def _get_metric_fct(self): if self.metric == 'Mutual_information': metric_fct = lambda TP, FP, TN, FN: ClassificationCollection.mutual_information(TN, FN, TP, FP) elif self.metric == 'Normalized_mutual_information': metric_fct = lambda TP, FP, TN, FN: ClassificationCollection.normalized_mutual_information(TN, FN, TP, FP) elif self.metric == "Balanced_accuracy": metric_fct = self.balanced_accuracy elif '{TP}' in self.metric or '{FP}' in self.metric or '{TN}' in self.metric or '{FN}' in self.metric: metric_fct = lambda TP, FP, TN, FN: eval(self.metric.format(TP=float(TP), FP=float(FP), TN=float(TN), FN=float(FN))) elif self.inverse_metric: metric_fct = lambda TP, FP, TN, FN: \ (-1.0)*ClassificationCollection.calculate_confusion_metrics( {"True_negatives":TN, "True_positives":TP, "False_positives":FP, "False_negatives":FN}, weight=self.weight, )[self.metric] else: metric_fct = lambda TP, FP, TN, FN: \ ClassificationCollection.calculate_confusion_metrics( {"True_negatives":TN, "True_positives":TP, "False_positives":FP, "False_negatives":FN}, weight=self.weight, )[self.metric] return metric_fct