(trainx, trainy), (testx, testy) = load_mnist(percentage=0.01, skip_valid=True) pca = PCA(whiten=True) pca.fit(trainx) components, variance = 0, 0.0 for components, ele in enumerate(pca.explained_variance_ratio_): variance += ele if variance > 0.90: break components += 1 print 'n_components=%d'%components pca.set_params(n_components=components) pca.fit(trainx) trainx = pca.transform(trainx) testx = pca.transform(testx) K = 3 dim = components knn(trainx, testx, trainy, testy, np.eye(dim), K) knn(trainx, testx, trainy, testy, np.random.rand(dim, dim), K) lmnn = LMNN(K=K, mu=0.5) lmnn.fit(trainx, trainy, lr=2e-6, max_iter=1500, gradient_cycle=100, verbose=True) knn(trainx, testx, trainy, testy, lmnn.M, K) lmnn = _LMNN(k=K, learn_rate=2e-6, max_iter=1000) L = lmnn.fit(trainx, trainy, verbose=True).L M = L.dot(L) knn(trainx, testx, trainy, testy, M, K)
(trainx, trainy), (testx, testy) = load_mnist(percentage=0.01, skip_valid=True) pca = PCA(whiten=True) pca.fit(trainx) components, variance = 0, 0.0 for components, ele in enumerate(pca.explained_variance_ratio_): variance += ele if variance > 0.90: break components += 1 print "n_components=%d" % components pca.set_params(n_components=components) pca.fit(trainx) trainx = pca.transform(trainx) testx = pca.transform(testx) K = 3 dim = components lmnn = LMNN(K=K, mu=0.5, dim=dim, maxS=100) # trainx, testx, trainy, testy = train_test_split(X, Y, test_size=0.66) knn(trainx, testx, trainy, testy, np.eye(dim), K) knn(trainx, testx, trainy, testy, np.random.rand(dim, dim), K) for _x in xrange(50): lmnn.fit(trainx, trainy, lr=2e-5, max_iter=10, reset=20, verbose=True) lmnn._init_neighbors() train_acc = knn(trainx, trainx, trainy, trainy, lmnn.M.get_value(), K) test_acc = knn(trainx, testx, trainy, testy, lmnn.M.get_value(), K) print "train_acc={} test_acc={}".format(train_acc, test_acc)