Example #1
0
    (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)
Example #2
0
    (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)