def manifold_warping_nonlinear(X, Y, num_dims, Wx, Wy, mu=0.9, metric=SquaredL2, threshold=0.01, max_iters=100, eps=1e-8): projecting_aligner = lambda A, B, corr: manifold_nonlinear( A, B, corr, num_dims, Wx, Wy, mu=mu, eps=eps) correlating_aligner = lambda A, B: dtw(A, B, metric=metric) return alternating_alignments_nonlinear(X, Y, projecting_aligner, correlating_aligner, threshold, max_iters)
lin_aligners = ( ('no alignment', lambda: TrivialAlignment(X, Y)), ('affine', lambda: Affine(X, Y, corr, d)), ('procrustes', lambda: Procrustes(X, Y, corr, d)), ('cca', lambda: CCA(X, Y, corr, d)), ('cca_v2', lambda: CCAv2(X, Y, d)), ('linear manifold', lambda: ManifoldLinear(X, Y, corr, d, Wx, Wy)), ('ctw', lambda: ctw(X, Y, d)[1]), ('manifold warping', lambda: manifold_warping_linear(X, Y, d, Wx, Wy)[1]), ) other_aligners = ( ('dtw', lambda: (X, dtw(X, Y).warp(X))), ('nonlinear manifold aln', lambda: manifold_nonlinear(X, Y, corr, d, Wx, Wy)), ('nonlinear manifold warp', lambda: manifold_warping_nonlinear(X, Y, d, Wx, Wy)[1:]), ) for name, aln in lin_aligners: pyplot.figure() with Timer(name): Xnew, Ynew = aln().project(X, Y) print ' sum sq. error =', pairwise_error(Xnew, Ynew, metric=SquaredL2) show_alignment(Xnew, Ynew, name) for name, aln in other_aligners: pyplot.figure() with Timer(name): Xnew, Ynew = aln()
Wy = neighbor_graph(Y,k=5) lin_aligners = ( ('no alignment', lambda: TrivialAlignment(X,Y)), ('affine', lambda: Affine(X,Y,corr,d)), ('procrustes', lambda: Procrustes(X,Y,corr,d)), ('cca', lambda: CCA(X,Y,corr,d)), ('cca_v2', lambda: CCAv2(X,Y,d)), ('linear manifold', lambda: ManifoldLinear(X,Y,corr,d,Wx,Wy)), ('ctw', lambda: ctw(X,Y,d)[1]), ('manifold warping', lambda: manifold_warping_linear(X,Y,d,Wx,Wy)[1]), ) other_aligners = ( ('dtw', lambda: (X, dtw(X,Y).warp(X))), ('nonlinear manifold aln', lambda: manifold_nonlinear(X,Y,corr,d,Wx,Wy)), ('nonlinear manifold warp', lambda: manifold_warping_nonlinear(X,Y,d,Wx,Wy)[1:]), ) pyplot.ion() for name, aln in lin_aligners: pyplot.figure() with Timer(name): Xnew,Ynew = aln().project(X, Y) print ' sum sq. error =', pairwise_error(Xnew, Ynew, metric=SquaredL2) show_alignment(Xnew,Ynew,name) pyplot.draw() for name, aln in other_aligners: pyplot.figure()
def manifold_warping_nonlinear(X,Y,num_dims,Wx,Wy,mu=0.9,metric=SquaredL2,threshold=0.01,max_iters=100,eps=1e-8): projecting_aligner = lambda A,B,corr: manifold_nonlinear(A,B,corr,num_dims,Wx,Wy,mu=mu,eps=eps) correlating_aligner = lambda A,B: dtw(A,B,metric=metric) return alternating_alignments_nonlinear(X,Y,projecting_aligner,correlating_aligner,threshold,max_iters)
('no alignment', lambda: TrivialAlignment(X_normalized, Y_normalized, d)), # ('affine', lambda: Affine(X,Y,corr,d)), # ('procrustes', lambda: Procrustes(X,Y,corr,d)), ('cca', lambda: CCA(X_normalized, Y_normalized, corr, d)), # ('cca_v2', lambda: CCAv2(X,Y,d)), ('linear manifold', lambda: ManifoldLinear(X_normalized, Y_normalized, corr, d, Wx, Wy)), ('ctw', lambda: ctw(X_normalized, Y_normalized, d)[1]), ('manifold warping', lambda: manifold_warping_linear(X_normalized, Y_normalized, d, Wx, Wy)[1] ), ) other_aligners = ( ('nonlinear manifold aln', lambda: manifold_nonlinear(X_normalized, Y_normalized, corr, d, Wx, Wy)), ('nonlinear manifold warp', lambda: manifold_warping_nonlinear( X_normalized, Y_normalized, d, Wx, Wy)[1:]), ('manifold warping two-step', lambda: manifold_warping_twostep( X_normalized, Y_normalized, d, Wx, Wy)[1:]), ) # heatmin = 1 # heatmax = 0 metric = SquaredL2 # disMat = np.empty((0,944784), float) # heatList = [] W = [] # pp = PdfPages('manifold_17695.pdf')