コード例 #1
0
class SDML:
    def __init__(self):
        self.metric_model = SDML_Supervised(num_constraints=200)
        self.X_tr = None
        self.y_train = None
        self.X_te = None

    def fit(self, X_tr, y_train):
        """Fits the model to the prescribed data."""
        self.X_tr = X_tr
        self.y_train = y_train
        return self.metric_model.fit(X_tr, y_train)

    def transform(self, X):
        """Transforms the test data according to the model"""
        return self.metric_model.transform(X)

    def predict_proba(self, X_te):
        """Predicts the probabilities of each of the test samples"""
        test_samples = X_te.shape[0]
        self.X_tr = self.transform(self.X_tr)
        clf = NearestCentroid()
        clf.fit(self.X_tr, self.y_train)
        centroids = clf.centroids_
        probabilities = np.zeros((test_samples, centroids.shape[0]))
        for sample in xrange(test_samples):
            probabilities[sample] = sk_nearest_neighbour_proba(
                centroids, X_te[sample, :])
        return probabilities
コード例 #2
0
    def test_iris(self):
        # Note: this is a flaky test, which fails for certain seeds.
        # TODO: un-flake it!
        rs = np.random.RandomState(5555)

        sdml = SDML_Supervised(num_constraints=1500)
        sdml.fit(self.iris_points, self.iris_labels, random_state=rs)
        csep = class_separation(sdml.transform(), self.iris_labels)
        self.assertLess(csep, 0.25)
コード例 #3
0
  def test_iris(self):
    # Note: this is a flaky test, which fails for certain seeds.
    # TODO: un-flake it!
    rs = np.random.RandomState(5555)

    sdml = SDML_Supervised(num_constraints=1500)
    sdml.fit(self.iris_points, self.iris_labels, random_state=rs)
    csep = class_separation(sdml.transform(), self.iris_labels)
    self.assertLess(csep, 0.25)
コード例 #4
0
    def test_sdml_supervised(self):
        seed = np.random.RandomState(1234)
        sdml = SDML_Supervised(num_constraints=1500)
        sdml.fit(self.X, self.y, random_state=seed)
        res_1 = sdml.transform()

        seed = np.random.RandomState(1234)
        sdml = SDML_Supervised(num_constraints=1500)
        res_2 = sdml.fit_transform(self.X, self.y, random_state=seed)

        assert_array_almost_equal(res_1, res_2)
コード例 #5
0
  def test_sdml_supervised(self):
    seed = np.random.RandomState(1234)
    sdml = SDML_Supervised(n_constraints=1500, balance_param=1e-5,
                           prior='identity', random_state=seed)
    sdml.fit(self.X, self.y)
    res_1 = sdml.transform(self.X)

    seed = np.random.RandomState(1234)
    sdml = SDML_Supervised(n_constraints=1500, balance_param=1e-5,
                           prior='identity', random_state=seed)
    res_2 = sdml.fit_transform(self.X, self.y)

    assert_array_almost_equal(res_1, res_2)
コード例 #6
0
  def test_sdml_supervised(self):
    seed = np.random.RandomState(1234)
    sdml = SDML_Supervised(num_constraints=1500, balance_param=1e-5,
                           use_cov=False)
    sdml.fit(self.X, self.y, random_state=seed)
    res_1 = sdml.transform(self.X)

    seed = np.random.RandomState(1234)
    sdml = SDML_Supervised(num_constraints=1500, balance_param=1e-5,
                           use_cov=False)
    res_2 = sdml.fit_transform(self.X, self.y, random_state=seed)

    assert_array_almost_equal(res_1, res_2)