예제 #1
0
def sandwich_demo():
  x, y = sandwich_data()
  knn = nearest_neighbors(x, k=2)
  ax = pyplot.subplot(3, 1, 1)  # take the whole top row
  plot_sandwich_data(x, y, ax)
  plot_neighborhood_graph(x, knn, y, ax)
  ax.set_title('input space')
  ax.set_aspect('equal')
  ax.set_xticks([])
  ax.set_yticks([])

  num_constraints = 60
  mls = [
      (LMNN(), (x, y)),
      (ITML(), (x, ITML.prepare_constraints(y, len(x), num_constraints))),
      (SDML(), (x, SDML.prepare_constraints(y, len(x), num_constraints))),
      (LSML(), (x, LSML.prepare_constraints(y, num_constraints)))
  ]

  for ax_num, (ml,args) in zip(xrange(3,7), mls):
    ml.fit(*args)
    tx = ml.transform()
    ml_knn = nearest_neighbors(tx, k=2)
    ax = pyplot.subplot(3,2,ax_num)
    plot_sandwich_data(tx, y, ax)
    plot_neighborhood_graph(tx, ml_knn, y, ax)
    ax.set_title('%s space' % ml.__class__.__name__)
    ax.set_xticks([])
    ax.set_yticks([])
  pyplot.show()
예제 #2
0
def sandwich_demo():
    x, y = sandwich_data()
    knn = nearest_neighbors(x, k=2)
    ax = pyplot.subplot(3, 1, 1)  # take the whole top row
    plot_sandwich_data(x, y, ax)
    plot_neighborhood_graph(x, knn, y, ax)
    ax.set_title('input space')
    ax.set_aspect('equal')
    ax.set_xticks([])
    ax.set_yticks([])

    num_constraints = 60
    mls = [(LMNN(), (x, y)),
           (ITML(), (x, ITML.prepare_constraints(y, len(x), num_constraints))),
           (SDML(), (x, SDML.prepare_constraints(y, len(x), num_constraints))),
           (LSML(), (x, LSML.prepare_constraints(y, num_constraints)))]

    for ax_num, (ml, args) in zip(xrange(3, 7), mls):
        ml.fit(*args)
        tx = ml.transform()
        ml_knn = nearest_neighbors(tx, k=2)
        ax = pyplot.subplot(3, 2, ax_num)
        plot_sandwich_data(tx, y, ax)
        plot_neighborhood_graph(tx, ml_knn, y, ax)
        ax.set_title('%s space' % ml.__class__.__name__)
        ax.set_xticks([])
        ax.set_yticks([])
    pyplot.show()
예제 #3
0
  def test_iris(self):
    num_constraints = 200

    C = LSML.prepare_constraints(self.iris_labels, num_constraints)
    lsml = LSML().fit(self.iris_points, C, verbose=False)

    csep = class_separation(lsml.transform(), self.iris_labels)
    self.assertLess(csep, 0.8)  # it's pretty terrible
예제 #4
0
  def test_iris(self):
    num_constraints = 200

    C = LSML.prepare_constraints(self.iris_labels, num_constraints)
    lsml = LSML().fit(self.iris_points, C, verbose=False)

    csep = class_separation(lsml.transform(), self.iris_labels)
    self.assertLess(csep, 0.8)  # it's pretty terrible
예제 #5
0
 def fit(self, X, y):
     num_constraints = NUM_CONSTRAINTS
     constraints = LSML.prepare_constraints(y, num_constraints)
     return super(LSML_sk, self).fit(X, constraints)