def test_lmnn(self): lmnn = LMNN(n_neighbors=5, learn_rate=1e-6, verbose=False) lmnn.fit(self.X, self.y) res_1 = lmnn.transform(self.X) lmnn = LMNN(n_neighbors=5, learn_rate=1e-6, verbose=False) res_2 = lmnn.fit_transform(self.X, self.y) assert_array_almost_equal(res_1, res_2)
def test_lmnn(self): lmnn = LMNN(k=5, learn_rate=1e-6, verbose=False) lmnn.fit(self.X, self.y) res_1 = lmnn.transform(self.X) lmnn = LMNN(k=5, learn_rate=1e-6, verbose=False) res_2 = lmnn.fit_transform(self.X, self.y) assert_array_almost_equal(res_1, res_2)
def lmnn_apply(x_input, y_input, k_input): y_classified = classify_y(y_input) lmnn = LMNN(k=k_input, learn_rate=1e-6) x_output = lmnn.fit_transform(x_input, y_classified) return x_output
def exeLMNN(self, knum=5): lmnn = LMNN(k=knum) X_new = lmnn.fit_transform(self.X, self.y) return X_new
total_train_labels): train_features = total_train_features[train_index] train_labels = total_train_labels[train_index] valid_features = total_train_features[valid_index] valid_labels = total_train_labels[valid_index] fold_cnt += 1 print("k:", knn_k) print("fold:", fold_cnt) print("train features shape:", train_features.shape) print("train labels shape:", train_labels.shape) print("valid features shape:", valid_features.shape) print("valid labels shape:", valid_labels.shape) lmnn = LMNN(k=5) transformed_features = lmnn.fit_transform(train_features, train_labels) neigh = KNeighborsClassifier(n_neighbors=knn_k) neigh.fit(transformed_features, train_labels) neigh_orig = KNeighborsClassifier(n_neighbors=knn_k) neigh_orig.fit(train_features, train_labels) predict = neigh.predict(lmnn.transform(valid_features)) predict_orig = neigh_orig.predict(valid_features) accuracy = metrics.accuracy_score(valid_labels, predict) accuracy_orig = metrics.accuracy_score(valid_labels, predict_orig) print("accuracy after metric learning:{}".format(accuracy)) print("accuracy before metric learning:{}".format(accuracy_orig)) ac_list.append(accuracy) ac_list_orig.append(accuracy_orig) final_train_accuracy = np.mean(ac_list) print(final_train_accuracy)