def test_run(self): state = Mock() state.is_interruption_requested = Mock(return_value=False) for name, metric in METRICS: data = self.iris if not metric.supports_missing or name == "Bhattacharyya": data = distance.impute(data) elif name == "Jaccard": data = self.zoo # between rows, normalized dist1 = DistanceRunner.run(data, metric, True, 0, state) dist2 = metric(data, axis=1, impute=True, normalize=True) self.assertDistMatrixEqual(dist1, dist2) # between rows, not normalized dist1 = DistanceRunner.run(data, metric, False, 0, state) dist2 = metric(data, axis=1, impute=True, normalize=False) self.assertDistMatrixEqual(dist1, dist2) # between columns, normalized dist1 = DistanceRunner.run(data, metric, True, 1, state) dist2 = metric(data, axis=0, impute=True, normalize=True) self.assertDistMatrixEqual(dist1, dist2) # between columns, not normalized dist1 = DistanceRunner.run(data, metric, False, 1, state) dist2 = metric(data, axis=0, impute=True, normalize=False) self.assertDistMatrixEqual(dist1, dist2)
def _fix_missing(): nonlocal data if not metric.supports_missing and bn.anynan(data.X): self.Warning.imputing_data() data = distance.impute(data)