Example #1
0
 def test_unweighted_all_correct(self):
     s_obj = metrics.SensitivityAtSpecificity(0.7, num_thresholds=1)
     inputs = np.random.randint(0, 2, size=(100, 1))
     y_pred = K.constant(inputs, dtype='float32')
     y_true = K.constant(inputs)
     result = s_obj(y_true, y_pred)
     assert np.isclose(1, K.eval(result))
 def test_SensitivityAtSpecificity(self, distribution):
     label_prediction = ([0, 0, 0, 1, 1], [0, 0.3, 0.8, 0.3, 0.8])
     with distribution.scope():
         metric = metrics.SensitivityAtSpecificity(0.5)
         self.evaluate([v.initializer for v in metric.variables])
         updates = distribution.run(metric, args=label_prediction)
         self.evaluate(updates)
     self.assertAllClose(metric.result(), 0.5)
Example #3
0
    def test_unweighted_low_specificity(self):
        s_obj = metrics.SensitivityAtSpecificity(0.4)
        pred_values = [0.0, 0.1, 0.2, 0.3, 0.4, 0.01, 0.02, 0.25, 0.26, 0.26]
        label_values = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]

        y_pred = K.constant(pred_values, dtype='float32')
        y_true = K.constant(label_values)
        result = s_obj(y_true, y_pred)
        assert np.isclose(0.6, K.eval(result))
Example #4
0
    def test_weighted(self):
        s_obj = metrics.SensitivityAtSpecificity(0.4)
        pred_values = [0.0, 0.1, 0.2, 0.3, 0.4, 0.01, 0.02, 0.25, 0.26, 0.26]
        label_values = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
        weight_values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

        y_pred = K.constant(pred_values, dtype='float32')
        y_true = K.constant(label_values, dtype='float32')
        weights = K.constant(weight_values)
        result = s_obj(y_true, y_pred, sample_weight=weights)
        assert np.isclose(0.675, K.eval(result))
Example #5
0
def test_sensitivity_metrics():
    metrics_list = [
        metrics.SensitivityAtSpecificity(0.5),
        metrics.SpecificityAtSensitivity(0.5),
    ]
    model = Sequential([Dense(2, input_shape=(3, ))])
    model.compile('rmsprop', 'mse', metrics=metrics_list)
    x = np.random.random((10, 3))
    y = np.random.random((10, 2))
    model.fit(x, y)
    model.evaluate(x, y)
Example #6
0
    def test_config(self):
        s_obj = metrics.SensitivityAtSpecificity(
            0.4, num_thresholds=100, name='sensitivity_at_specificity_1')
        assert s_obj.name == 'sensitivity_at_specificity_1'
        assert len(s_obj.weights) == 4
        assert s_obj.specificity == 0.4
        assert s_obj.num_thresholds == 100

        # Check save and restore config
        s_obj2 = metrics.SensitivityAtSpecificity.from_config(
            s_obj.get_config())
        assert s_obj2.name == 'sensitivity_at_specificity_1'
        assert len(s_obj2.weights) == 4
        assert s_obj2.specificity == 0.4
        assert s_obj2.num_thresholds == 100
Example #7
0
 def test_invalid_num_thresholds(self):
     with pytest.raises(Exception):
         metrics.SensitivityAtSpecificity(0.4, num_thresholds=-1)
Example #8
0
 def test_invalid_specificity(self):
     with pytest.raises(Exception):
         metrics.SensitivityAtSpecificity(-1)