ofs | hex dump | ascii |
---|
0000 | 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c 99 54 80 89 bc 09 00 00 bc 09 00 00 0e 00 00 00 70 6c | PK.........xPL.T..............pl |
0020 | 6f 74 5f 67 72 6f 6d 6f 76 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 | ot_gromov.py#.-*-.coding:.utf-8. |
0040 | 2d 2a 2d 0d 0a 22 22 22 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | -*-.."""..====================== |
0060 | 3d 3d 3d 3d 0d 0a 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 65 78 61 6d 70 6c 65 | ====..Gromov-Wasserstein.example |
0080 | 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a | ..==========================.... |
00a0 | 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 73 68 6f 77 | This.example.is.designed.to.show |
00c0 | 20 68 6f 77 20 74 6f 20 75 73 65 20 74 68 65 20 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 74 73 65 | .how.to.use.the.Gromov-Wassertse |
00e0 | 69 6e 20 64 69 73 74 61 6e 63 65 0d 0a 63 6f 6d 70 75 74 61 74 69 6f 6e 20 69 6e 20 50 4f 54 2e | in.distance..computation.in.POT. |
0100 | 0d 0a 22 22 22 0d 0a 0d 0a 23 20 41 75 74 68 6f 72 3a 20 45 72 77 61 6e 20 56 61 75 74 69 65 72 | .."""....#.Author:.Erwan.Vautier |
0120 | 20 3c 65 72 77 61 6e 2e 76 61 75 74 69 65 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0d 0a 23 20 20 20 | .<erwan.vautier@gmail.com>..#... |
0140 | 20 20 20 20 20 20 4e 69 63 6f 6c 61 73 20 43 6f 75 72 74 79 20 3c 6e 63 6f 75 72 74 79 40 69 72 | ......Nicolas.Courty.<ncourty@ir |
0160 | 69 73 61 2e 66 72 3e 0d 0a 23 0d 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e | isa.fr>..#..#.License:.MIT.Licen |
0180 | 73 65 0d 0a 0d 0a 69 6d 70 6f 72 74 20 73 63 69 70 79 20 61 73 20 73 70 0d 0a 69 6d 70 6f 72 74 | se....import.scipy.as.sp..import |
01a0 | 20 6e 75 6d 70 79 20 61 73 20 6e 70 0d 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e | .numpy.as.np..import.matplotlib. |
01c0 | 70 79 6c 61 62 20 61 73 20 70 6c 0d 0a 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d | pylab.as.pl..from.mpl_toolkits.m |
01e0 | 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 6e 6f 71 61 0d 0a 69 6d | plot3d.import.Axes3D..#.noqa..im |
0200 | 70 6f 72 74 20 6f 74 0d 0a 0d 0a 0d 0a 23 0d 0a 23 20 53 61 6d 70 6c 65 20 74 77 6f 20 47 61 75 | port.ot......#..#.Sample.two.Gau |
0220 | 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 28 32 44 20 61 6e 64 20 33 44 29 0d | ssian.distributions.(2D.and.3D). |
0240 | 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .#.----------------------------- |
0260 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 0d 0a 23 20 54 68 65 20 47 72 6f 6d 6f | ----------------..#..#.The.Gromo |
0280 | 76 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 61 6e 63 65 20 61 6c 6c 6f 77 73 20 74 6f | v-Wasserstein.distance.allows.to |
02a0 | 20 63 6f 6d 70 75 74 65 20 64 69 73 74 61 6e 63 65 73 20 77 69 74 68 20 73 61 6d 70 6c 65 73 20 | .compute.distances.with.samples. |
02c0 | 74 68 61 74 0d 0a 23 20 64 6f 20 6e 6f 74 20 62 65 6c 6f 6e 67 20 74 6f 20 74 68 65 20 73 61 6d | that..#.do.not.belong.to.the.sam |
02e0 | 65 20 6d 65 74 72 69 63 20 73 70 61 63 65 2e 20 46 6f 72 20 64 65 6d 6f 6e 73 74 72 61 74 69 6f | e.metric.space..For.demonstratio |
0300 | 6e 20 70 75 72 70 6f 73 65 2c 20 77 65 20 73 61 6d 70 6c 65 0d 0a 23 20 74 77 6f 20 47 61 75 73 | n.purpose,.we.sample..#.two.Gaus |
0320 | 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 69 6e 20 32 2d 20 61 6e 64 20 33 2d 64 | sian.distributions.in.2-.and.3-d |
0340 | 69 6d 65 6e 73 69 6f 6e 61 6c 20 73 70 61 63 65 73 2e 0d 0a 0d 0a 0d 0a 6e 5f 73 61 6d 70 6c 65 | imensional.spaces.......n_sample |
0360 | 73 20 3d 20 33 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0d 0a 0d 0a 6d 75 5f 73 20 3d 20 6e | s.=.30..#.nb.samples....mu_s.=.n |
0380 | 70 2e 61 72 72 61 79 28 5b 30 2c 20 30 5d 29 0d 0a 63 6f 76 5f 73 20 3d 20 6e 70 2e 61 72 72 61 | p.array([0,.0])..cov_s.=.np.arra |
03a0 | 79 28 5b 5b 31 2c 20 30 5d 2c 20 5b 30 2c 20 31 5d 5d 29 0d 0a 0d 0a 6d 75 5f 74 20 3d 20 6e 70 | y([[1,.0],.[0,.1]])....mu_t.=.np |
03c0 | 2e 61 72 72 61 79 28 5b 34 2c 20 34 2c 20 34 5d 29 0d 0a 63 6f 76 5f 74 20 3d 20 6e 70 2e 61 72 | .array([4,.4,.4])..cov_t.=.np.ar |
03e0 | 72 61 79 28 5b 5b 31 2c 20 30 2c 20 30 5d 2c 20 5b 30 2c 20 31 2c 20 30 5d 2c 20 5b 30 2c 20 30 | ray([[1,.0,.0],.[0,.1,.0],.[0,.0 |
0400 | 2c 20 31 5d 5d 29 0d 0a 0d 0a 0d 0a 78 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 | ,.1]])......xs.=.ot.datasets.get |
0420 | 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 6d 75 5f | _2D_samples_gauss(n_samples,.mu_ |
0440 | 73 2c 20 63 6f 76 5f 73 29 0d 0a 50 20 3d 20 73 70 2e 6c 69 6e 61 6c 67 2e 73 71 72 74 6d 28 63 | s,.cov_s)..P.=.sp.linalg.sqrtm(c |
0460 | 6f 76 5f 74 29 0d 0a 78 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 5f 73 61 | ov_t)..xt.=.np.random.randn(n_sa |
0480 | 6d 70 6c 65 73 2c 20 33 29 2e 64 6f 74 28 50 29 20 2b 20 6d 75 5f 74 0d 0a 0d 0a 0d 0a 23 0d 0a | mples,.3).dot(P).+.mu_t......#.. |
04a0 | 23 20 50 6c 6f 74 74 69 6e 67 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0d 0a 23 20 | #.Plotting.the.distributions..#. |
04c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a | --------------------------...... |
04e0 | 66 69 67 20 3d 20 70 6c 2e 66 69 67 75 72 65 28 29 0d 0a 61 78 31 20 3d 20 66 69 67 2e 61 64 64 | fig.=.pl.figure()..ax1.=.fig.add |
0500 | 5f 73 75 62 70 6c 6f 74 28 31 32 31 29 0d 0a 61 78 31 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d | _subplot(121)..ax1.plot(xs[:,.0] |
0520 | 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 | ,.xs[:,.1],.'+b',.label='Source. |
0540 | 73 61 6d 70 6c 65 73 27 29 0d 0a 61 78 32 20 3d 20 66 69 67 2e 61 64 64 5f 73 75 62 70 6c 6f 74 | samples')..ax2.=.fig.add_subplot |
0560 | 28 31 32 32 2c 20 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0d 0a 61 78 32 2e 73 63 61 74 | (122,.projection='3d')..ax2.scat |
0580 | 74 65 72 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 78 74 5b 3a 2c 20 32 5d | ter(xt[:,.0],.xt[:,.1],.xt[:,.2] |
05a0 | 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 0d 0a 70 6c 2e 73 68 6f 77 28 29 0d 0a 0d 0a 0d 0a 23 0d 0a | ,.color='r')..pl.show()......#.. |
05c0 | 23 20 43 6f 6d 70 75 74 65 20 64 69 73 74 61 6e 63 65 20 6b 65 72 6e 65 6c 73 2c 20 6e 6f 72 6d | #.Compute.distance.kernels,.norm |
05e0 | 61 6c 69 7a 65 20 74 68 65 6d 20 61 6e 64 20 74 68 65 6e 20 64 69 73 70 6c 61 79 0d 0a 23 20 2d | alize.them.and.then.display..#.- |
0600 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
0620 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 43 31 | ------------------------......C1 |
0640 | 20 3d 20 73 70 2e 73 70 61 74 69 61 6c 2e 64 69 73 74 61 6e 63 65 2e 63 64 69 73 74 28 78 73 2c | .=.sp.spatial.distance.cdist(xs, |
0660 | 20 78 73 29 0d 0a 43 32 20 3d 20 73 70 2e 73 70 61 74 69 61 6c 2e 64 69 73 74 61 6e 63 65 2e 63 | .xs)..C2.=.sp.spatial.distance.c |
0680 | 64 69 73 74 28 78 74 2c 20 78 74 29 0d 0a 0d 0a 43 31 20 2f 3d 20 43 31 2e 6d 61 78 28 29 0d 0a | dist(xt,.xt)....C1./=.C1.max().. |
06a0 | 43 32 20 2f 3d 20 43 32 2e 6d 61 78 28 29 0d 0a 0d 0a 70 6c 2e 66 69 67 75 72 65 28 29 0d 0a 70 | C2./=.C2.max()....pl.figure()..p |
06c0 | 6c 2e 73 75 62 70 6c 6f 74 28 31 32 31 29 0d 0a 70 6c 2e 69 6d 73 68 6f 77 28 43 31 29 0d 0a 70 | l.subplot(121)..pl.imshow(C1)..p |
06e0 | 6c 2e 73 75 62 70 6c 6f 74 28 31 32 32 29 0d 0a 70 6c 2e 69 6d 73 68 6f 77 28 43 32 29 0d 0a 70 | l.subplot(122)..pl.imshow(C2)..p |
0700 | 6c 2e 73 68 6f 77 28 29 0d 0a 0d 0a 23 0d 0a 23 20 43 6f 6d 70 75 74 65 20 47 72 6f 6d 6f 76 2d | l.show()....#..#.Compute.Gromov- |
0720 | 57 61 73 73 65 72 73 74 65 69 6e 20 70 6c 61 6e 73 20 61 6e 64 20 64 69 73 74 61 6e 63 65 0d 0a | Wasserstein.plans.and.distance.. |
0740 | 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | #.------------------------------ |
0760 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 70 20 3d 20 6f 74 2e 75 6e 69 66 28 6e | ---------------....p.=.ot.unif(n |
0780 | 5f 73 61 6d 70 6c 65 73 29 0d 0a 71 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 5f 73 61 6d 70 6c 65 73 | _samples)..q.=.ot.unif(n_samples |
07a0 | 29 0d 0a 0d 0a 67 77 30 2c 20 6c 6f 67 30 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f | )....gw0,.log0.=.ot.gromov.gromo |
07c0 | 76 5f 77 61 73 73 65 72 73 74 65 69 6e 28 0d 0a 20 20 20 20 43 31 2c 20 43 32 2c 20 70 2c 20 71 | v_wasserstein(......C1,.C2,.p,.q |
07e0 | 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 20 6c | ,.'square_loss',.verbose=True,.l |
0800 | 6f 67 3d 54 72 75 65 29 0d 0a 0d 0a 67 77 2c 20 6c 6f 67 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e | og=True)....gw,.log.=.ot.gromov. |
0820 | 65 6e 74 72 6f 70 69 63 5f 67 72 6f 6d 6f 76 5f 77 61 73 73 65 72 73 74 65 69 6e 28 0d 0a 20 20 | entropic_gromov_wasserstein(.... |
0840 | 20 20 43 31 2c 20 43 32 2c 20 70 2c 20 71 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 65 | ..C1,.C2,.p,.q,.'square_loss',.e |
0860 | 70 73 69 6c 6f 6e 3d 35 65 2d 34 2c 20 6c 6f 67 3d 54 72 75 65 2c 20 76 65 72 62 6f 73 65 3d 54 | psilon=5e-4,.log=True,.verbose=T |
0880 | 72 75 65 29 0d 0a 0d 0a 0d 0a 70 72 69 6e 74 28 27 47 72 6f 6d 6f 76 2d 57 61 73 73 65 72 73 74 | rue)......print('Gromov-Wasserst |
08a0 | 65 69 6e 20 64 69 73 74 61 6e 63 65 73 3a 20 27 20 2b 20 73 74 72 28 6c 6f 67 30 5b 27 67 77 5f | ein.distances:.'.+.str(log0['gw_ |
08c0 | 64 69 73 74 27 5d 29 29 0d 0a 70 72 69 6e 74 28 27 45 6e 74 72 6f 70 69 63 20 47 72 6f 6d 6f 76 | dist']))..print('Entropic.Gromov |
08e0 | 2d 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 61 6e 63 65 73 3a 20 27 20 2b 20 73 74 72 28 | -Wasserstein.distances:.'.+.str( |
0900 | 6c 6f 67 5b 27 67 77 5f 64 69 73 74 27 5d 29 29 0d 0a 0d 0a 0d 0a 70 6c 2e 66 69 67 75 72 65 28 | log['gw_dist']))......pl.figure( |
0920 | 31 2c 20 28 31 30 2c 20 35 29 29 0d 0a 0d 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 | 1,.(10,.5))....pl.subplot(1,.2,. |
0940 | 31 29 0d 0a 70 6c 2e 69 6d 73 68 6f 77 28 67 77 30 2c 20 63 6d 61 70 3d 27 6a 65 74 27 29 0d 0a | 1)..pl.imshow(gw0,.cmap='jet').. |
0960 | 70 6c 2e 74 69 74 6c 65 28 27 47 72 6f 6d 6f 76 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 0d 0a | pl.title('Gromov.Wasserstein').. |
0980 | 0d 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0d 0a 70 6c 2e 69 6d 73 68 6f 77 | ..pl.subplot(1,.2,.2)..pl.imshow |
09a0 | 28 67 77 2c 20 63 6d 61 70 3d 27 6a 65 74 27 29 0d 0a 70 6c 2e 74 69 74 6c 65 28 27 45 6e 74 72 | (gw,.cmap='jet')..pl.title('Entr |
09c0 | 6f 70 69 63 20 47 72 6f 6d 6f 76 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 0d 0a 0d 0a 70 6c 2e | opic.Gromov.Wasserstein')....pl. |
09e0 | 73 68 6f 77 28 29 0d 0a 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c a4 4f 47 3f 0c 0c 00 00 0c 0c | show()..PK.........xPL.OG?...... |
0a00 | 00 00 0b 00 00 00 70 6c 6f 74 5f 57 44 41 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 | ......plot_WDA.py#.-*-.coding:.u |
0a20 | 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | tf-8.-*-.""".=================== |
0a40 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 57 61 73 73 65 72 73 74 65 69 6e 20 44 69 73 63 72 | ==============.Wasserstein.Discr |
0a60 | 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | iminant.Analysis.=============== |
0a80 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 | ==================..This.example |
0aa0 | 20 69 6c 6c 75 73 74 72 61 74 65 20 74 68 65 20 75 73 65 20 6f 66 20 57 44 41 20 61 73 20 70 72 | .illustrate.the.use.of.WDA.as.pr |
0ac0 | 6f 70 6f 73 65 64 20 69 6e 20 5b 31 31 5d 2e 0a 0a 0a 5b 31 31 5d 20 46 6c 61 6d 61 72 79 2c 20 | oposed.in.[11]....[11].Flamary,. |
0ae0 | 52 2e 2c 20 43 75 74 75 72 69 2c 20 4d 2e 2c 20 43 6f 75 72 74 79 2c 20 4e 2e 2c 20 26 20 52 61 | R.,.Cuturi,.M.,.Courty,.N.,.&.Ra |
0b00 | 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 2c 20 41 2e 20 28 32 30 31 36 29 2e 0a 57 61 73 73 65 72 73 74 | kotomamonjy,.A..(2016)..Wasserst |
0b20 | 65 69 6e 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 2e 0a 0a 22 22 22 0a | ein.Discriminant.Analysis...""". |
0b40 | 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c | .#.Author:.Remi.Flamary.<remi.fl |
0b60 | 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 | amary@unice.fr>.#.#.License:.MIT |
0b80 | 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 | .License..import.numpy.as.np.imp |
0ba0 | 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 0a 66 72 6f 6d | ort.matplotlib.pylab.as.pl..from |
0bc0 | 20 6f 74 2e 64 72 20 69 6d 70 6f 72 74 20 77 64 61 2c 20 66 64 61 0a 0a 0a 23 23 23 23 23 23 23 | .ot.dr.import.wda,.fda...####### |
0be0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
0c00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
0c20 | 23 23 23 23 23 23 23 0a 23 20 47 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d | #######.#.Generate.data.#.------ |
0c40 | 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 20 3d 20 31 30 30 | -------..#%%.parameters..n.=.100 |
0c60 | 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 20 69 6e 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 | 0..#.nb.samples.in.source.and.ta |
0c80 | 72 67 65 74 20 64 61 74 61 73 65 74 73 0a 6e 7a 20 3d 20 30 2e 32 0a 0a 23 20 67 65 6e 65 72 61 | rget.datasets.nz.=.0.2..#.genera |
0ca0 | 74 65 20 63 69 72 63 6c 65 20 64 61 74 61 73 65 74 0a 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e | te.circle.dataset.t.=.np.random. |
0cc0 | 72 61 6e 64 28 6e 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 0a 79 73 20 3d 20 6e 70 2e 66 6c 6f 6f | rand(n).*.2.*.np.pi.ys.=.np.floo |
0ce0 | 72 28 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2a 20 31 2e 30 20 2f 20 6e 20 2a 20 33 29 29 20 | r((np.arange(n).*.1.0./.n.*.3)). |
0d00 | 2b 20 31 0a 78 73 20 3d 20 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 0a 20 20 20 20 28 6e 70 | +.1.xs.=.np.concatenate(.....(np |
0d20 | 2e 63 6f 73 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 29 29 2c 20 6e 70 2e 73 69 6e | .cos(t).reshape((-1,.1)),.np.sin |
0d40 | 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 29 29 29 2c 20 31 29 0a 78 73 20 3d 20 78 | (t).reshape((-1,.1))),.1).xs.=.x |
0d60 | 73 20 2a 20 79 73 2e 72 65 73 68 61 70 65 28 2d 31 2c 20 31 29 20 2b 20 6e 7a 20 2a 20 6e 70 2e | s.*.ys.reshape(-1,.1).+.nz.*.np. |
0d80 | 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 32 29 0a 0a 74 20 3d 20 6e 70 2e 72 61 6e 64 6f | random.randn(n,.2)..t.=.np.rando |
0da0 | 6d 2e 72 61 6e 64 28 6e 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 0a 79 74 20 3d 20 6e 70 2e 66 6c | m.rand(n).*.2.*.np.pi.yt.=.np.fl |
0dc0 | 6f 6f 72 28 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2a 20 31 2e 30 20 2f 20 6e 20 2a 20 33 29 | oor((np.arange(n).*.1.0./.n.*.3) |
0de0 | 29 20 2b 20 31 0a 78 74 20 3d 20 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 0a 20 20 20 20 28 | ).+.1.xt.=.np.concatenate(.....( |
0e00 | 6e 70 2e 63 6f 73 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 29 29 2c 20 6e 70 2e 73 | np.cos(t).reshape((-1,.1)),.np.s |
0e20 | 69 6e 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 29 29 29 2c 20 31 29 0a 78 74 20 3d | in(t).reshape((-1,.1))),.1).xt.= |
0e40 | 20 78 74 20 2a 20 79 74 2e 72 65 73 68 61 70 65 28 2d 31 2c 20 31 29 20 2b 20 6e 7a 20 2a 20 6e | .xt.*.yt.reshape(-1,.1).+.nz.*.n |
0e60 | 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 32 29 0a 0a 6e 62 6e 6f 69 73 65 20 3d 20 | p.random.randn(n,.2)..nbnoise.=. |
0e80 | 38 0a 0a 78 73 20 3d 20 6e 70 2e 68 73 74 61 63 6b 28 28 78 73 2c 20 6e 70 2e 72 61 6e 64 6f 6d | 8..xs.=.np.hstack((xs,.np.random |
0ea0 | 2e 72 61 6e 64 6e 28 6e 2c 20 6e 62 6e 6f 69 73 65 29 29 29 0a 78 74 20 3d 20 6e 70 2e 68 73 74 | .randn(n,.nbnoise))).xt.=.np.hst |
0ec0 | 61 63 6b 28 28 78 74 2c 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 6e 62 6e 6f | ack((xt,.np.random.randn(n,.nbno |
0ee0 | 69 73 65 29 29 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ise)))..######################## |
0f00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
0f20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 64 61 | ######################.#.Plot.da |
0f40 | 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 | ta.#.---------..#%%.plot.samples |
0f60 | 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 2e 35 29 | .pl.figure(1,.figsize=(6.4,.3.5) |
0f80 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 | )..pl.subplot(1,.2,.1).pl.scatte |
0fa0 | 72 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b | r(xt[:,.0],.xt[:,.1],.c=ys,.mark |
0fc0 | 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a | er='+',.label='Source.samples'). |
0fe0 | 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 63 72 | pl.legend(loc=0).pl.title('Discr |
1000 | 69 6d 69 6e 61 6e 74 20 64 69 6d 65 6e 73 69 6f 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 | iminant.dimensions')..pl.subplot |
1020 | 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 20 32 5d 2c 20 78 | (1,.2,.2).pl.scatter(xt[:,.2],.x |
1040 | 74 5b 3a 2c 20 33 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c | t[:,.3],.c=ys,.marker='+',.label |
1060 | 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 | ='Source.samples').pl.legend(loc |
1080 | 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 74 68 65 72 20 64 69 6d 65 6e 73 69 6f 6e 73 27 29 | =0).pl.title('Other.dimensions') |
10a0 | 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 | .pl.tight_layout()..############ |
10c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
10e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1100 | 23 23 0a 23 20 43 6f 6d 70 75 74 65 20 46 69 73 68 65 72 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 | ##.#.Compute.Fisher.Discriminant |
1120 | 20 41 6e 61 6c 79 73 69 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .Analysis.#.-------------------- |
1140 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 43 6f 6d 70 75 74 65 20 46 44 | ----------------..#%%.Compute.FD |
1160 | 41 0a 70 20 3d 20 32 0a 0a 50 66 64 61 2c 20 70 72 6f 6a 66 64 61 20 3d 20 66 64 61 28 78 73 2c | A.p.=.2..Pfda,.projfda.=.fda(xs, |
1180 | 20 79 73 2c 20 70 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .ys,.p)..####################### |
11a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
11c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 6f 6d 70 75 74 | #######################.#.Comput |
11e0 | 65 20 57 61 73 73 65 72 73 74 65 69 6e 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 | e.Wasserstein.Discriminant.Analy |
1200 | 73 69 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | sis.#.-------------------------- |
1220 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 43 6f 6d 70 75 74 65 20 57 44 41 | ---------------..#%%.Compute.WDA |
1240 | 0a 70 20 3d 20 32 0a 72 65 67 20 3d 20 31 65 30 0a 6b 20 3d 20 31 30 0a 6d 61 78 69 74 65 72 20 | .p.=.2.reg.=.1e0.k.=.10.maxiter. |
1260 | 3d 20 31 30 30 0a 0a 50 77 64 61 2c 20 70 72 6f 6a 77 64 61 20 3d 20 77 64 61 28 78 73 2c 20 79 | =.100..Pwda,.projwda.=.wda(xs,.y |
1280 | 73 2c 20 70 2c 20 72 65 67 2c 20 6b 2c 20 6d 61 78 69 74 65 72 3d 6d 61 78 69 74 65 72 29 0a 0a | s,.p,.reg,.k,.maxiter=maxiter).. |
12a0 | 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .############################### |
12c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
12e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 32 44 20 70 72 6f 6a 65 63 | ###############.#.Plot.2D.projec |
1300 | 74 69 6f 6e 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 | tions.#.-------------------..#%% |
1320 | 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 78 73 70 20 3d 20 70 72 6f 6a 66 64 61 28 78 73 29 | .plot.samples..xsp.=.projfda(xs) |
1340 | 0a 78 74 70 20 3d 20 70 72 6f 6a 66 64 61 28 78 74 29 0a 0a 78 73 70 77 20 3d 20 70 72 6f 6a 77 | .xtp.=.projfda(xt)..xspw.=.projw |
1360 | 64 61 28 78 73 29 0a 78 74 70 77 20 3d 20 70 72 6f 6a 77 64 61 28 78 74 29 0a 0a 70 6c 2e 66 69 | da(xs).xtpw.=.projwda(xt)..pl.fi |
1380 | 67 75 72 65 28 32 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 0a 70 6c 2e | gure(2)..pl.subplot(2,.2,.1).pl. |
13a0 | 73 63 61 74 74 65 72 28 78 73 70 5b 3a 2c 20 30 5d 2c 20 78 73 70 5b 3a 2c 20 31 5d 2c 20 63 3d | scatter(xsp[:,.0],.xsp[:,.1],.c= |
13c0 | 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 | ys,.marker='+',.label='Projected |
13e0 | 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 | .samples').pl.legend(loc=0).pl.t |
1400 | 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 | itle('Projected.training.samples |
1420 | 20 46 44 41 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 0a 70 6c 2e 73 | .FDA')..pl.subplot(2,.2,.2).pl.s |
1440 | 63 61 74 74 65 72 28 78 74 70 5b 3a 2c 20 30 5d 2c 20 78 74 70 5b 3a 2c 20 31 5d 2c 20 63 3d 79 | catter(xtp[:,.0],.xtp[:,.1],.c=y |
1460 | 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 | s,.marker='+',.label='Projected. |
1480 | 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 | samples').pl.legend(loc=0).pl.ti |
14a0 | 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 65 73 74 20 73 61 6d 70 6c 65 73 20 46 44 41 27 | tle('Projected.test.samples.FDA' |
14c0 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 33 29 0a 70 6c 2e 73 63 61 74 74 65 | )..pl.subplot(2,.2,.3).pl.scatte |
14e0 | 72 28 78 73 70 77 5b 3a 2c 20 30 5d 2c 20 78 73 70 77 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 | r(xspw[:,.0],.xspw[:,.1],.c=ys,. |
1500 | 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 73 61 6d | marker='+',.label='Projected.sam |
1520 | 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 | ples').pl.legend(loc=0).pl.title |
1540 | 28 27 50 72 6f 6a 65 63 74 65 64 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 20 57 44 41 | ('Projected.training.samples.WDA |
1560 | 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 34 29 0a 70 6c 2e 73 63 61 74 74 | ')..pl.subplot(2,.2,.4).pl.scatt |
1580 | 65 72 28 78 74 70 77 5b 3a 2c 20 30 5d 2c 20 78 74 70 77 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c | er(xtpw[:,.0],.xtpw[:,.1],.c=ys, |
15a0 | 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 73 61 | .marker='+',.label='Projected.sa |
15c0 | 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c | mples').pl.legend(loc=0).pl.titl |
15e0 | 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 65 73 74 20 73 61 6d 70 6c 65 73 20 57 44 41 27 29 0a | e('Projected.test.samples.WDA'). |
1600 | 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 | pl.tight_layout()..pl.show().PK. |
1620 | 04 14 00 00 00 00 00 17 78 50 4c e5 d4 47 7d 9d 1c 00 00 9d 1c 00 00 19 00 00 00 70 6c 6f 74 5f | ........xPL..G}............plot_ |
1640 | 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 | gromov_barycenter.py#.-*-.coding |
1660 | 3a 20 75 74 66 2d 38 20 2d 2a 2d 0d 0a 22 22 22 0d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | :.utf-8.-*-.."""..============== |
1680 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 47 72 6f 6d 6f 76 2d | =======================..Gromov- |
16a0 | 57 61 73 73 65 72 73 74 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 20 65 78 61 6d 70 6c 65 0d 0a | Wasserstein.Barycenter.example.. |
16c0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
16e0 | 3d 3d 3d 3d 3d 0d 0a 0d 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 64 65 73 69 67 6e 65 | =====....This.example.is.designe |
1700 | 64 20 74 6f 20 73 68 6f 77 20 68 6f 77 20 74 6f 20 75 73 65 20 74 68 65 20 47 72 6f 6d 6f 76 2d | d.to.show.how.to.use.the.Gromov- |
1720 | 57 61 73 73 65 72 73 74 65 69 6e 20 64 69 73 74 61 6e 63 65 0d 0a 63 6f 6d 70 75 74 61 74 69 6f | Wasserstein.distance..computatio |
1740 | 6e 20 69 6e 20 50 4f 54 2e 0d 0a 22 22 22 0d 0a 0d 0a 23 20 41 75 74 68 6f 72 3a 20 45 72 77 61 | n.in.POT..."""....#.Author:.Erwa |
1760 | 6e 20 56 61 75 74 69 65 72 20 3c 65 72 77 61 6e 2e 76 61 75 74 69 65 72 40 67 6d 61 69 6c 2e 63 | n.Vautier.<erwan.vautier@gmail.c |
1780 | 6f 6d 3e 0d 0a 23 20 20 20 20 20 20 20 20 20 4e 69 63 6f 6c 61 73 20 43 6f 75 72 74 79 20 3c 6e | om>..#.........Nicolas.Courty.<n |
17a0 | 63 6f 75 72 74 79 40 69 72 69 73 61 2e 66 72 3e 0d 0a 23 0d 0a 23 20 4c 69 63 65 6e 73 65 3a 20 | courty@irisa.fr>..#..#.License:. |
17c0 | 4d 49 54 20 4c 69 63 65 6e 73 65 0d 0a 0d 0a 0d 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 | MIT.License......import.numpy.as |
17e0 | 20 6e 70 0d 0a 69 6d 70 6f 72 74 20 73 63 69 70 79 20 61 73 20 73 70 0d 0a 0d 0a 69 6d 70 6f 72 | .np..import.scipy.as.sp....impor |
1800 | 74 20 73 63 69 70 79 2e 6e 64 69 6d 61 67 65 20 61 73 20 73 70 69 0d 0a 69 6d 70 6f 72 74 20 6d | t.scipy.ndimage.as.spi..import.m |
1820 | 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0d 0a 66 72 6f 6d 20 73 6b 6c 65 | atplotlib.pylab.as.pl..from.skle |
1840 | 61 72 6e 20 69 6d 70 6f 72 74 20 6d 61 6e 69 66 6f 6c 64 0d 0a 66 72 6f 6d 20 73 6b 6c 65 61 72 | arn.import.manifold..from.sklear |
1860 | 6e 2e 64 65 63 6f 6d 70 6f 73 69 74 69 6f 6e 20 69 6d 70 6f 72 74 20 50 43 41 0d 0a 0d 0a 69 6d | n.decomposition.import.PCA....im |
1880 | 70 6f 72 74 20 6f 74 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | port.ot....##################### |
18a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
18c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 23 20 53 6d 61 | #########################..#.Sma |
18e0 | 63 6f 66 20 4d 44 53 0d 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 0d 0a 23 20 54 68 69 73 | cof.MDS..#.----------..#..#.This |
1900 | 20 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 74 6f 20 66 69 6e 64 20 61 6e 20 65 6d 62 65 | .function.allows.to.find.an.embe |
1920 | 64 64 69 6e 67 20 6f 66 20 70 6f 69 6e 74 73 20 67 69 76 65 6e 20 61 20 64 69 73 73 69 6d 69 6c | dding.of.points.given.a.dissimil |
1940 | 61 72 69 74 79 20 6d 61 74 72 69 78 0d 0a 23 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 67 69 76 | arity.matrix..#.that.will.be.giv |
1960 | 65 6e 20 62 79 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 74 68 65 20 61 6c 67 6f 72 69 74 68 | en.by.the.output.of.the.algorith |
1980 | 6d 0d 0a 0d 0a 0d 0a 64 65 66 20 73 6d 61 63 6f 66 5f 6d 64 73 28 43 2c 20 64 69 6d 2c 20 6d 61 | m......def.smacof_mds(C,.dim,.ma |
19a0 | 78 5f 69 74 65 72 3d 33 30 30 30 2c 20 65 70 73 3d 31 65 2d 39 29 3a 0d 0a 20 20 20 20 22 22 22 | x_iter=3000,.eps=1e-9):......""" |
19c0 | 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 70 6f | ......Returns.an.interpolated.po |
19e0 | 69 6e 74 20 63 6c 6f 75 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 64 69 73 73 69 6d 69 6c | int.cloud.following.the.dissimil |
1a00 | 61 72 69 74 79 20 6d 61 74 72 69 78 20 43 0d 0a 20 20 20 20 75 73 69 6e 67 20 53 4d 41 43 4f 46 | arity.matrix.C......using.SMACOF |
1a20 | 20 6d 75 6c 74 69 64 69 6d 65 6e 73 69 6f 6e 61 6c 20 73 63 61 6c 69 6e 67 20 28 4d 44 53 29 20 | .multidimensional.scaling.(MDS). |
1a40 | 69 6e 20 73 70 65 63 69 66 69 63 20 64 69 6d 65 6e 73 69 6f 6e 6e 65 64 0d 0a 20 20 20 20 74 61 | in.specific.dimensionned......ta |
1a60 | 72 67 65 74 20 73 70 61 63 65 0d 0a 0d 0a 20 20 20 20 50 61 72 61 6d 65 74 65 72 73 0d 0a 20 20 | rget.space........Parameters.... |
1a80 | 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 20 20 20 20 43 20 3a 20 6e 64 61 72 72 61 79 2c 20 73 | ..----------......C.:.ndarray,.s |
1aa0 | 68 61 70 65 20 28 6e 73 2c 20 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 64 69 73 73 69 6d 69 6c 61 | hape.(ns,.ns)..........dissimila |
1ac0 | 72 69 74 79 20 6d 61 74 72 69 78 0d 0a 20 20 20 20 64 69 6d 20 3a 20 69 6e 74 0d 0a 20 20 20 20 | rity.matrix......dim.:.int...... |
1ae0 | 20 20 20 20 20 20 64 69 6d 65 6e 73 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 65 64 20 | ......dimension.of.the.targeted. |
1b00 | 73 70 61 63 65 0d 0a 20 20 20 20 6d 61 78 5f 69 74 65 72 20 3a 20 20 69 6e 74 0d 0a 20 20 20 20 | space......max_iter.:..int...... |
1b20 | 20 20 20 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 | ....Maximum.number.of.iterations |
1b40 | 20 6f 66 20 74 68 65 20 53 4d 41 43 4f 46 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 61 20 73 | .of.the.SMACOF.algorithm.for.a.s |
1b60 | 69 6e 67 6c 65 20 72 75 6e 0d 0a 20 20 20 20 65 70 73 20 3a 20 66 6c 6f 61 74 0d 0a 20 20 20 20 | ingle.run......eps.:.float...... |
1b80 | 20 20 20 20 72 65 6c 61 74 69 76 65 20 74 6f 6c 65 72 61 6e 63 65 20 77 2e 72 2e 74 20 73 74 72 | ....relative.tolerance.w.r.t.str |
1ba0 | 65 73 73 20 74 6f 20 64 65 63 6c 61 72 65 20 63 6f 6e 76 65 72 67 65 0d 0a 0d 0a 20 20 20 20 52 | ess.to.declare.converge........R |
1bc0 | 65 74 75 72 6e 73 0d 0a 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 0d 0a 20 20 20 20 6e 70 6f 73 20 3a 20 | eturns......-------......npos.:. |
1be0 | 6e 64 61 72 72 61 79 2c 20 73 68 61 70 65 20 28 52 2c 20 64 69 6d 29 0d 0a 20 20 20 20 20 20 20 | ndarray,.shape.(R,.dim)......... |
1c00 | 20 20 20 20 45 6d 62 65 64 64 65 64 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f 66 20 74 68 65 20 | ....Embedded.coordinates.of.the. |
1c20 | 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 70 6f 69 6e 74 20 63 6c 6f 75 64 20 28 64 65 66 69 6e 65 | interpolated.point.cloud.(define |
1c40 | 64 20 77 69 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 6f 6e 65 20 69 73 6f 6d 65 74 72 79 29 | d.with.............one.isometry) |
1c60 | 0d 0a 20 20 20 20 22 22 22 0d 0a 0d 0a 20 20 20 20 72 6e 67 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d | ......"""........rng.=.np.random |
1c80 | 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 73 65 65 64 3d 33 29 0d 0a 0d 0a 20 20 20 20 6d 64 73 20 | .RandomState(seed=3)........mds. |
1ca0 | 3d 20 6d 61 6e 69 66 6f 6c 64 2e 4d 44 53 28 0d 0a 20 20 20 20 20 20 20 20 64 69 6d 2c 0d 0a 20 | =.manifold.MDS(..........dim,... |
1cc0 | 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 6d 61 78 5f 69 74 65 72 2c 0d 0a 20 20 20 20 20 | .......max_iter=max_iter,....... |
1ce0 | 20 20 20 65 70 73 3d 31 65 2d 39 2c 0d 0a 20 20 20 20 20 20 20 20 64 69 73 73 69 6d 69 6c 61 72 | ...eps=1e-9,..........dissimilar |
1d00 | 69 74 79 3d 27 70 72 65 63 6f 6d 70 75 74 65 64 27 2c 0d 0a 20 20 20 20 20 20 20 20 6e 5f 69 6e | ity='precomputed',..........n_in |
1d20 | 69 74 3d 31 29 0d 0a 20 20 20 20 70 6f 73 20 3d 20 6d 64 73 2e 66 69 74 28 43 29 2e 65 6d 62 65 | it=1)......pos.=.mds.fit(C).embe |
1d40 | 64 64 69 6e 67 5f 0d 0a 0d 0a 20 20 20 20 6e 6d 64 73 20 3d 20 6d 61 6e 69 66 6f 6c 64 2e 4d 44 | dding_........nmds.=.manifold.MD |
1d60 | 53 28 0d 0a 20 20 20 20 20 20 20 20 32 2c 0d 0a 20 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 72 | S(..........2,..........max_iter |
1d80 | 3d 6d 61 78 5f 69 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 65 70 73 3d 31 65 2d 39 2c 0d 0a 20 | =max_iter,..........eps=1e-9,... |
1da0 | 20 20 20 20 20 20 20 64 69 73 73 69 6d 69 6c 61 72 69 74 79 3d 22 70 72 65 63 6f 6d 70 75 74 65 | .......dissimilarity="precompute |
1dc0 | 64 22 2c 0d 0a 20 20 20 20 20 20 20 20 72 61 6e 64 6f 6d 5f 73 74 61 74 65 3d 72 6e 67 2c 0d 0a | d",..........random_state=rng,.. |
1de0 | 20 20 20 20 20 20 20 20 6e 5f 69 6e 69 74 3d 31 29 0d 0a 20 20 20 20 6e 70 6f 73 20 3d 20 6e 6d | ........n_init=1)......npos.=.nm |
1e00 | 64 73 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 43 2c 20 69 6e 69 74 3d 70 6f 73 29 0d 0a 0d | ds.fit_transform(C,.init=pos)... |
1e20 | 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 6f 73 0d 0a 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 | .....return.npos......########## |
1e40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1e60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1e80 | 23 23 23 23 0d 0a 23 20 44 61 74 61 20 70 72 65 70 61 72 61 74 69 6f 6e 0d 0a 23 20 2d 2d 2d 2d | ####..#.Data.preparation..#.---- |
1ea0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 0d 0a 23 20 54 68 65 20 66 6f 75 72 20 64 69 73 74 | ------------..#..#.The.four.dist |
1ec0 | 72 69 62 75 74 69 6f 6e 73 20 61 72 65 20 63 6f 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 34 | ributions.are.constructed.from.4 |
1ee0 | 20 73 69 6d 70 6c 65 20 69 6d 61 67 65 73 0d 0a 0d 0a 0d 0a 64 65 66 20 69 6d 32 6d 61 74 28 49 | .simple.images......def.im2mat(I |
1f00 | 29 3a 0d 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f | ):......"""Converts.and.image.to |
1f20 | 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 22 22 22 0d | .matrix.(one.pixel.per.line)""". |
1f40 | 0a 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 | .....return.I.reshape((I.shape[0 |
1f60 | 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 29 0d 0a 0d 0a | ].*.I.shape[1],.I.shape[2])).... |
1f80 | 0d 0a 73 71 75 61 72 65 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 73 | ..square.=.spi.imread('../data/s |
1fa0 | 71 75 61 72 65 2e 70 6e 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 5b 3a | quare.png').astype(np.float64)[: |
1fc0 | 2c 20 3a 2c 20 32 5d 20 2f 20 32 35 36 0d 0a 63 72 6f 73 73 20 3d 20 73 70 69 2e 69 6d 72 65 61 | ,.:,.2]./.256..cross.=.spi.imrea |
1fe0 | 64 28 27 2e 2e 2f 64 61 74 61 2f 63 72 6f 73 73 2e 70 6e 67 27 29 2e 61 73 74 79 70 65 28 6e 70 | d('../data/cross.png').astype(np |
2000 | 2e 66 6c 6f 61 74 36 34 29 5b 3a 2c 20 3a 2c 20 32 5d 20 2f 20 32 35 36 0d 0a 74 72 69 61 6e 67 | .float64)[:,.:,.2]./.256..triang |
2020 | 6c 65 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 74 72 69 61 6e 67 6c | le.=.spi.imread('../data/triangl |
2040 | 65 2e 70 6e 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 5b 3a 2c 20 3a 2c | e.png').astype(np.float64)[:,.:, |
2060 | 20 32 5d 20 2f 20 32 35 36 0d 0a 73 74 61 72 20 3d 20 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e | .2]./.256..star.=.spi.imread('.. |
2080 | 2f 64 61 74 61 2f 73 74 61 72 2e 70 6e 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 | /data/star.png').astype(np.float |
20a0 | 36 34 29 5b 3a 2c 20 3a 2c 20 32 5d 20 2f 20 32 35 36 0d 0a 0d 0a 73 68 61 70 65 73 20 3d 20 5b | 64)[:,.:,.2]./.256....shapes.=.[ |
20c0 | 73 71 75 61 72 65 2c 20 63 72 6f 73 73 2c 20 74 72 69 61 6e 67 6c 65 2c 20 73 74 61 72 5d 0d 0a | square,.cross,.triangle,.star].. |
20e0 | 0d 0a 53 20 3d 20 34 0d 0a 78 73 20 3d 20 5b 5b 5d 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 | ..S.=.4..xs.=.[[].for.i.in.range |
2100 | 28 53 29 5d 0d 0a 0d 0a 0d 0a 66 6f 72 20 6e 62 20 69 6e 20 72 61 6e 67 65 28 34 29 3a 0d 0a 20 | (S)]......for.nb.in.range(4):... |
2120 | 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 38 29 3a 0d 0a 20 20 20 20 20 20 20 20 66 | ...for.i.in.range(8):..........f |
2140 | 6f 72 20 6a 20 69 6e 20 72 61 6e 67 65 28 38 29 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 | or.j.in.range(8):..............i |
2160 | 66 20 73 68 61 70 65 73 5b 6e 62 5d 5b 69 2c 20 6a 5d 20 3c 20 30 2e 39 35 3a 0d 0a 20 20 20 20 | f.shapes[nb][i,.j].<.0.95:...... |
2180 | 20 20 20 20 20 20 20 20 20 20 20 20 78 73 5b 6e 62 5d 2e 61 70 70 65 6e 64 28 5b 6a 2c 20 38 20 | ............xs[nb].append([j,.8. |
21a0 | 2d 20 69 5d 29 0d 0a 0d 0a 78 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 6e 70 2e 61 72 72 61 79 | -.i])....xs.=.np.array([np.array |
21c0 | 28 78 73 5b 30 5d 29 2c 20 6e 70 2e 61 72 72 61 79 28 78 73 5b 31 5d 29 2c 0d 0a 20 20 20 20 20 | (xs[0]),.np.array(xs[1]),....... |
21e0 | 20 20 20 20 20 20 20 20 20 20 6e 70 2e 61 72 72 61 79 28 78 73 5b 32 5d 29 2c 20 6e 70 2e 61 72 | ..........np.array(xs[2]),.np.ar |
2200 | 72 61 79 28 78 73 5b 33 5d 29 5d 29 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ray(xs[3])])....################ |
2220 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2240 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a | ##############################.. |
2260 | 23 20 42 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0d 0a 23 20 2d 2d 2d 2d | #.Barycenter.computation..#.---- |
2280 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 6e 73 20 3d 20 5b 6c 65 | ------------------......ns.=.[le |
22a0 | 6e 28 78 73 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 0d 0a 6e 5f 73 | n(xs[s]).for.s.in.range(S)]..n_s |
22c0 | 61 6d 70 6c 65 73 20 3d 20 33 30 0d 0a 0d 0a 22 22 22 43 6f 6d 70 75 74 65 20 61 6c 6c 20 64 69 | amples.=.30...."""Compute.all.di |
22e0 | 73 74 61 6e 63 65 73 20 6d 61 74 72 69 63 65 73 20 66 6f 72 20 74 68 65 20 66 6f 75 72 20 73 68 | stances.matrices.for.the.four.sh |
2300 | 61 70 65 73 22 22 22 0d 0a 43 73 20 3d 20 5b 73 70 2e 73 70 61 74 69 61 6c 2e 64 69 73 74 61 6e | apes"""..Cs.=.[sp.spatial.distan |
2320 | 63 65 2e 63 64 69 73 74 28 78 73 5b 73 5d 2c 20 78 73 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 | ce.cdist(xs[s],.xs[s]).for.s.in. |
2340 | 72 61 6e 67 65 28 53 29 5d 0d 0a 43 73 20 3d 20 5b 63 73 20 2f 20 63 73 2e 6d 61 78 28 29 20 66 | range(S)]..Cs.=.[cs./.cs.max().f |
2360 | 6f 72 20 63 73 20 69 6e 20 43 73 5d 0d 0a 0d 0a 70 73 20 3d 20 5b 6f 74 2e 75 6e 69 66 28 6e 73 | or.cs.in.Cs]....ps.=.[ot.unif(ns |
2380 | 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 0d 0a 70 20 3d 20 6f 74 2e | [s]).for.s.in.range(S)]..p.=.ot. |
23a0 | 75 6e 69 66 28 6e 5f 73 61 6d 70 6c 65 73 29 0d 0a 0d 0a 0d 0a 6c 61 6d 62 64 61 73 74 20 3d 20 | unif(n_samples)......lambdast.=. |
23c0 | 5b 5b 66 6c 6f 61 74 28 69 29 20 2f 20 33 2c 20 66 6c 6f 61 74 28 33 20 2d 20 69 29 20 2f 20 33 | [[float(i)./.3,.float(3.-.i)./.3 |
23e0 | 5d 20 66 6f 72 20 69 20 69 6e 20 5b 31 2c 20 32 5d 5d 0d 0a 0d 0a 43 74 30 31 20 3d 20 5b 30 20 | ].for.i.in.[1,.2]]....Ct01.=.[0. |
2400 | 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 0d 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e | for.i.in.range(2)]..for.i.in.ran |
2420 | 67 65 28 32 29 3a 0d 0a 20 20 20 20 43 74 30 31 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e | ge(2):......Ct01[i].=.ot.gromov. |
2440 | 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 5b 43 | gromov_barycenters(n_samples,.[C |
2460 | 73 5b 30 5d 2c 20 43 73 5b 31 5d 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | s[0],.Cs[1]],................... |
2480 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 70 73 5b 30 5d | ..........................[ps[0] |
24a0 | 2c 20 70 73 5b 31 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ,.ps[1]......................... |
24c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5d 2c 20 70 2c 20 6c 61 6d 62 64 | .....................],.p,.lambd |
24e0 | 61 73 74 5b 69 5d 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 20 23 20 35 65 2d 34 2c 0d | ast[i],.'square_loss',..#.5e-4,. |
2500 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
2520 | 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 30 2c 20 74 6f 6c 3d 31 65 | ............max_iter=100,.tol=1e |
2540 | 2d 33 29 0d 0a 0d 0a 43 74 30 32 20 3d 20 5b 30 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 | -3)....Ct02.=.[0.for.i.in.range( |
2560 | 32 29 5d 0d 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 3a 0d 0a 20 20 20 20 43 74 30 | 2)]..for.i.in.range(2):......Ct0 |
2580 | 32 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 | 2[i].=.ot.gromov.gromov_barycent |
25a0 | 65 72 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 5b 43 73 5b 30 5d 2c 20 43 73 5b 32 5d 5d 2c 0d 0a | ers(n_samples,.[Cs[0],.Cs[2]],.. |
25c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
25e0 | 20 20 20 20 20 20 20 20 20 20 20 5b 70 73 5b 30 5d 2c 20 70 73 5b 32 5d 0d 0a 20 20 20 20 20 20 | ...........[ps[0],.ps[2]........ |
2600 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
2620 | 20 20 20 20 20 20 5d 2c 20 70 2c 20 6c 61 6d 62 64 61 73 74 5b 69 5d 2c 20 27 73 71 75 61 72 65 | ......],.p,.lambdast[i],.'square |
2640 | 5f 6c 6f 73 73 27 2c 20 20 23 20 35 65 2d 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | _loss',..#.5e-4,................ |
2660 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 | .............................max |
2680 | 5f 69 74 65 72 3d 31 30 30 2c 20 74 6f 6c 3d 31 65 2d 33 29 0d 0a 0d 0a 43 74 31 33 20 3d 20 5b | _iter=100,.tol=1e-3)....Ct13.=.[ |
26a0 | 30 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 0d 0a 66 6f 72 20 69 20 69 6e 20 72 | 0.for.i.in.range(2)]..for.i.in.r |
26c0 | 61 6e 67 65 28 32 29 3a 0d 0a 20 20 20 20 43 74 31 33 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f | ange(2):......Ct13[i].=.ot.gromo |
26e0 | 76 2e 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 | v.gromov_barycenters(n_samples,. |
2700 | 5b 43 73 5b 31 5d 2c 20 43 73 5b 33 5d 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | [Cs[1],.Cs[3]],................. |
2720 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 70 73 5b | ............................[ps[ |
2740 | 31 5d 2c 20 70 73 5b 33 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 1],.ps[3]....................... |
2760 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5d 2c 20 70 2c 20 6c 61 6d | .......................],.p,.lam |
2780 | 62 64 61 73 74 5b 69 5d 2c 20 27 73 71 75 61 72 65 5f 6c 6f 73 73 27 2c 20 20 23 20 35 65 2d 34 | bdast[i],.'square_loss',..#.5e-4 |
27a0 | 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ,............................... |
27c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 30 2c 20 74 6f 6c 3d | ..............max_iter=100,.tol= |
27e0 | 31 65 2d 33 29 0d 0a 0d 0a 43 74 32 33 20 3d 20 5b 30 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 | 1e-3)....Ct23.=.[0.for.i.in.rang |
2800 | 65 28 32 29 5d 0d 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 32 29 3a 0d 0a 20 20 20 20 43 | e(2)]..for.i.in.range(2):......C |
2820 | 74 32 33 5b 69 5d 20 3d 20 6f 74 2e 67 72 6f 6d 6f 76 2e 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 | t23[i].=.ot.gromov.gromov_baryce |
2840 | 6e 74 65 72 73 28 6e 5f 73 61 6d 70 6c 65 73 2c 20 5b 43 73 5b 32 5d 2c 20 43 73 5b 33 5d 5d 2c | nters(n_samples,.[Cs[2],.Cs[3]], |
2860 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
2880 | 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 70 73 5b 32 5d 2c 20 70 73 5b 33 5d 0d 0a 20 20 20 20 | .............[ps[2],.ps[3]...... |
28a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
28c0 | 20 20 20 20 20 20 20 20 5d 2c 20 70 2c 20 6c 61 6d 62 64 61 73 74 5b 69 5d 2c 20 27 73 71 75 61 | ........],.p,.lambdast[i],.'squa |
28e0 | 72 65 5f 6c 6f 73 73 27 2c 20 20 23 20 35 65 2d 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | re_loss',..#.5e-4,.............. |
2900 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d | ...............................m |
2920 | 61 78 5f 69 74 65 72 3d 31 30 30 2c 20 74 6f 6c 3d 31 65 2d 33 29 0d 0a 0d 0a 0d 0a 23 23 23 23 | ax_iter=100,.tol=1e-3)......#### |
2940 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2960 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2980 | 23 23 23 23 23 23 23 23 23 23 0d 0a 23 20 56 69 73 75 61 6c 69 7a 61 74 69 6f 6e 0d 0a 23 20 2d | ##########..#.Visualization..#.- |
29a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 0d 0a 23 20 54 68 65 20 50 43 41 20 68 65 6c 70 73 | ------------..#..#.The.PCA.helps |
29c0 | 20 69 6e 20 67 65 74 74 69 6e 67 20 63 6f 6e 73 69 73 74 65 6e 63 79 20 62 65 74 77 65 65 6e 20 | .in.getting.consistency.between. |
29e0 | 74 68 65 20 72 6f 74 61 74 69 6f 6e 73 0d 0a 0d 0a 0d 0a 63 6c 66 20 3d 20 50 43 41 28 6e 5f 63 | the.rotations......clf.=.PCA(n_c |
2a00 | 6f 6d 70 6f 6e 65 6e 74 73 3d 32 29 0d 0a 6e 70 6f 73 20 3d 20 5b 30 2c 20 30 2c 20 30 2c 20 30 | omponents=2)..npos.=.[0,.0,.0,.0 |
2a20 | 5d 0d 0a 6e 70 6f 73 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 73 5b 73 5d 2c 20 32 29 20 | ]..npos.=.[smacof_mds(Cs[s],.2). |
2a40 | 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 53 29 5d 0d 0a 0d 0a 6e 70 6f 73 74 30 31 20 3d 20 | for.s.in.range(S)]....npost01.=. |
2a60 | 5b 30 2c 20 30 5d 0d 0a 6e 70 6f 73 74 30 31 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 | [0,.0]..npost01.=.[smacof_mds(Ct |
2a80 | 30 31 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 0d 0a 6e 70 | 01[s],.2).for.s.in.range(2)]..np |
2aa0 | 6f 73 74 30 31 20 3d 20 5b 63 6c 66 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 6e 70 6f 73 74 | ost01.=.[clf.fit_transform(npost |
2ac0 | 30 31 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 0d 0a 0d 0a 6e 70 6f | 01[s]).for.s.in.range(2)]....npo |
2ae0 | 73 74 30 32 20 3d 20 5b 30 2c 20 30 5d 0d 0a 6e 70 6f 73 74 30 32 20 3d 20 5b 73 6d 61 63 6f 66 | st02.=.[0,.0]..npost02.=.[smacof |
2b00 | 5f 6d 64 73 28 43 74 30 32 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 | _mds(Ct02[s],.2).for.s.in.range( |
2b20 | 32 29 5d 0d 0a 6e 70 6f 73 74 30 32 20 3d 20 5b 63 6c 66 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 | 2)]..npost02.=.[clf.fit_transfor |
2b40 | 6d 28 6e 70 6f 73 74 30 32 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d | m(npost02[s]).for.s.in.range(2)] |
2b60 | 0d 0a 0d 0a 6e 70 6f 73 74 31 33 20 3d 20 5b 30 2c 20 30 5d 0d 0a 6e 70 6f 73 74 31 33 20 3d 20 | ....npost13.=.[0,.0]..npost13.=. |
2b80 | 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 31 33 5b 73 5d 2c 20 32 29 20 66 6f 72 20 73 20 69 6e | [smacof_mds(Ct13[s],.2).for.s.in |
2ba0 | 20 72 61 6e 67 65 28 32 29 5d 0d 0a 6e 70 6f 73 74 31 33 20 3d 20 5b 63 6c 66 2e 66 69 74 5f 74 | .range(2)]..npost13.=.[clf.fit_t |
2bc0 | 72 61 6e 73 66 6f 72 6d 28 6e 70 6f 73 74 31 33 5b 73 5d 29 20 66 6f 72 20 73 20 69 6e 20 72 61 | ransform(npost13[s]).for.s.in.ra |
2be0 | 6e 67 65 28 32 29 5d 0d 0a 0d 0a 6e 70 6f 73 74 32 33 20 3d 20 5b 30 2c 20 30 5d 0d 0a 6e 70 6f | nge(2)]....npost23.=.[0,.0]..npo |
2c00 | 73 74 32 33 20 3d 20 5b 73 6d 61 63 6f 66 5f 6d 64 73 28 43 74 32 33 5b 73 5d 2c 20 32 29 20 66 | st23.=.[smacof_mds(Ct23[s],.2).f |
2c20 | 6f 72 20 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 0d 0a 6e 70 6f 73 74 32 33 20 3d 20 5b 63 6c | or.s.in.range(2)]..npost23.=.[cl |
2c40 | 66 2e 66 69 74 5f 74 72 61 6e 73 66 6f 72 6d 28 6e 70 6f 73 74 32 33 5b 73 5d 29 20 66 6f 72 20 | f.fit_transform(npost23[s]).for. |
2c60 | 73 20 69 6e 20 72 61 6e 67 65 28 32 29 5d 0d 0a 0d 0a 0d 0a 66 69 67 20 3d 20 70 6c 2e 66 69 67 | s.in.range(2)]......fig.=.pl.fig |
2c80 | 75 72 65 28 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 29 0d 0a 0d 0a 61 78 31 20 3d 20 70 | ure(figsize=(10,.10))....ax1.=.p |
2ca0 | 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 30 29 29 0d 0a | l.subplot2grid((4,.4),.(0,.0)).. |
2cc0 | 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 | pl.xlim((-1,.1))..pl.ylim((-1,.1 |
2ce0 | 29 29 0d 0a 61 78 31 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e | ))..ax1.scatter(npos[0][:,.0],.n |
2d00 | 70 6f 73 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 0d 0a 0d 0a 61 78 32 20 | pos[0][:,.1],.color='r')....ax2. |
2d20 | 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 31 29 | =.pl.subplot2grid((4,.4),.(0,.1) |
2d40 | 29 0d 0a 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 | )..pl.xlim((-1,.1))..pl.ylim((-1 |
2d60 | 2c 20 31 29 29 0d 0a 61 78 32 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 30 31 5b 31 5d 5b 3a 2c | ,.1))..ax2.scatter(npost01[1][:, |
2d80 | 20 30 5d 2c 20 6e 70 6f 73 74 30 31 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 | .0],.npost01[1][:,.1],.color='b' |
2da0 | 29 0d 0a 0d 0a 61 78 33 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 | )....ax3.=.pl.subplot2grid((4,.4 |
2dc0 | 29 2c 20 28 30 2c 20 32 29 29 0d 0a 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c | ),.(0,.2))..pl.xlim((-1,.1))..pl |
2de0 | 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 61 78 33 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 | .ylim((-1,.1))..ax3.scatter(npos |
2e00 | 74 30 31 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 31 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 | t01[0][:,.0],.npost01[0][:,.1],. |
2e20 | 63 6f 6c 6f 72 3d 27 62 27 29 0d 0a 0d 0a 61 78 34 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 | color='b')....ax4.=.pl.subplot2g |
2e40 | 72 69 64 28 28 34 2c 20 34 29 2c 20 28 30 2c 20 33 29 29 0d 0a 70 6c 2e 78 6c 69 6d 28 28 2d 31 | rid((4,.4),.(0,.3))..pl.xlim((-1 |
2e60 | 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 61 78 34 2e 73 63 61 | ,.1))..pl.ylim((-1,.1))..ax4.sca |
2e80 | 74 74 65 72 28 6e 70 6f 73 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 5b 31 5d 5b 3a 2c 20 31 | tter(npos[1][:,.0],.npos[1][:,.1 |
2ea0 | 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 0d 0a 0d 0a 61 78 35 20 3d 20 70 6c 2e 73 75 62 70 6c 6f | ],.color='r')....ax5.=.pl.subplo |
2ec0 | 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 31 2c 20 30 29 29 0d 0a 70 6c 2e 78 6c 69 6d 28 | t2grid((4,.4),.(1,.0))..pl.xlim( |
2ee0 | 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 61 78 35 2e | (-1,.1))..pl.ylim((-1,.1))..ax5. |
2f00 | 73 63 61 74 74 65 72 28 6e 70 6f 73 74 30 32 5b 31 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 | scatter(npost02[1][:,.0],.npost0 |
2f20 | 32 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 0d 0a 0d 0a 61 78 36 20 3d 20 | 2[1][:,.1],.color='b')....ax6.=. |
2f40 | 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 31 2c 20 33 29 29 0d | pl.subplot2grid((4,.4),.(1,.3)). |
2f60 | 0a 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 | .pl.xlim((-1,.1))..pl.ylim((-1,. |
2f80 | 31 29 29 0d 0a 61 78 36 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 31 33 5b 31 5d 5b 3a 2c 20 30 | 1))..ax6.scatter(npost13[1][:,.0 |
2fa0 | 5d 2c 20 6e 70 6f 73 74 31 33 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 0d | ],.npost13[1][:,.1],.color='b'). |
2fc0 | 0a 0d 0a 61 78 37 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c | ...ax7.=.pl.subplot2grid((4,.4), |
2fe0 | 20 28 32 2c 20 30 29 29 0d 0a 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 | .(2,.0))..pl.xlim((-1,.1))..pl.y |
3000 | 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 61 78 37 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 30 | lim((-1,.1))..ax7.scatter(npost0 |
3020 | 32 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 30 32 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 63 6f | 2[0][:,.0],.npost02[0][:,.1],.co |
3040 | 6c 6f 72 3d 27 62 27 29 0d 0a 0d 0a 61 78 38 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 | lor='b')....ax8.=.pl.subplot2gri |
3060 | 64 28 28 34 2c 20 34 29 2c 20 28 32 2c 20 33 29 29 0d 0a 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 | d((4,.4),.(2,.3))..pl.xlim((-1,. |
3080 | 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 61 78 38 2e 73 63 61 74 74 | 1))..pl.ylim((-1,.1))..ax8.scatt |
30a0 | 65 72 28 6e 70 6f 73 74 31 33 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 31 33 5b 30 5d 5b | er(npost13[0][:,.0],.npost13[0][ |
30c0 | 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 0d 0a 0d 0a 61 78 39 20 3d 20 70 6c 2e 73 75 | :,.1],.color='b')....ax9.=.pl.su |
30e0 | 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 30 29 29 0d 0a 70 6c 2e 78 | bplot2grid((4,.4),.(3,.0))..pl.x |
3100 | 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a | lim((-1,.1))..pl.ylim((-1,.1)).. |
3120 | 61 78 39 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 5b 32 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 5b | ax9.scatter(npos[2][:,.0],.npos[ |
3140 | 32 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 0d 0a 0d 0a 61 78 31 30 20 3d 20 70 | 2][:,.1],.color='r')....ax10.=.p |
3160 | 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 31 29 29 0d 0a | l.subplot2grid((4,.4),.(3,.1)).. |
3180 | 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 | pl.xlim((-1,.1))..pl.ylim((-1,.1 |
31a0 | 29 29 0d 0a 61 78 31 30 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 74 32 33 5b 31 5d 5b 3a 2c 20 30 | ))..ax10.scatter(npost23[1][:,.0 |
31c0 | 5d 2c 20 6e 70 6f 73 74 32 33 5b 31 5d 5b 3a 2c 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 62 27 29 0d | ],.npost23[1][:,.1],.color='b'). |
31e0 | 0a 0d 0a 61 78 31 31 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 67 72 69 64 28 28 34 2c 20 34 29 | ...ax11.=.pl.subplot2grid((4,.4) |
3200 | 2c 20 28 33 2c 20 32 29 29 0d 0a 70 6c 2e 78 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 70 6c 2e | ,.(3,.2))..pl.xlim((-1,.1))..pl. |
3220 | 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 61 78 31 31 2e 73 63 61 74 74 65 72 28 6e 70 6f 73 | ylim((-1,.1))..ax11.scatter(npos |
3240 | 74 32 33 5b 30 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 74 32 33 5b 30 5d 5b 3a 2c 20 31 5d 2c 20 | t23[0][:,.0],.npost23[0][:,.1],. |
3260 | 63 6f 6c 6f 72 3d 27 62 27 29 0d 0a 0d 0a 61 78 31 32 20 3d 20 70 6c 2e 73 75 62 70 6c 6f 74 32 | color='b')....ax12.=.pl.subplot2 |
3280 | 67 72 69 64 28 28 34 2c 20 34 29 2c 20 28 33 2c 20 33 29 29 0d 0a 70 6c 2e 78 6c 69 6d 28 28 2d | grid((4,.4),.(3,.3))..pl.xlim((- |
32a0 | 31 2c 20 31 29 29 0d 0a 70 6c 2e 79 6c 69 6d 28 28 2d 31 2c 20 31 29 29 0d 0a 61 78 31 32 2e 73 | 1,.1))..pl.ylim((-1,.1))..ax12.s |
32c0 | 63 61 74 74 65 72 28 6e 70 6f 73 5b 33 5d 5b 3a 2c 20 30 5d 2c 20 6e 70 6f 73 5b 33 5d 5b 3a 2c | catter(npos[3][:,.0],.npos[3][:, |
32e0 | 20 31 5d 2c 20 63 6f 6c 6f 72 3d 27 72 27 29 0d 0a 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c be | .1],.color='r')..PK.........xPL. |
3300 | a0 06 25 7c 0b 00 00 7c 0b 00 00 13 00 00 00 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e | ..%|...|.......plot_optim_OTreg. |
3320 | 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d | py#.-*-.coding:.utf-8.-*-.""".== |
3340 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
3360 | 0a 52 65 67 75 6c 61 72 69 7a 65 64 20 4f 54 20 77 69 74 68 20 67 65 6e 65 72 69 63 20 73 6f 6c | .Regularized.OT.with.generic.sol |
3380 | 76 65 72 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ver.============================ |
33a0 | 3d 3d 3d 3d 3d 3d 0a 0a 49 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 | ======..Illustrates.the.use.of.t |
33c0 | 68 65 20 67 65 6e 65 72 69 63 20 73 6f 6c 76 65 72 20 66 6f 72 20 72 65 67 75 6c 61 72 69 7a 65 | he.generic.solver.for.regularize |
33e0 | 64 20 4f 54 20 77 69 74 68 0a 75 73 65 72 2d 64 65 73 69 67 6e 65 64 20 72 65 67 75 6c 61 72 69 | d.OT.with.user-designed.regulari |
3400 | 7a 61 74 69 6f 6e 20 74 65 72 6d 2e 20 49 74 20 75 73 65 73 20 43 6f 6e 64 69 74 69 6f 6e 61 6c | zation.term..It.uses.Conditional |
3420 | 20 67 72 61 64 69 65 6e 74 20 61 73 20 69 6e 20 5b 36 5d 20 61 6e 64 0a 67 65 6e 65 72 61 6c 69 | .gradient.as.in.[6].and.generali |
3440 | 7a 65 64 20 43 6f 6e 64 69 74 69 6f 6e 61 6c 20 47 72 61 64 69 65 6e 74 20 61 73 20 70 72 6f 70 | zed.Conditional.Gradient.as.prop |
3460 | 6f 73 65 64 20 69 6e 20 5b 35 5d 5b 37 5d 2e 0a 0a 0a 5b 35 5d 20 4e 2e 20 43 6f 75 72 74 79 3b | osed.in.[5][7]....[5].N..Courty; |
3480 | 20 52 2e 20 46 6c 61 6d 61 72 79 3b 20 44 2e 20 54 75 69 61 3b 20 41 2e 20 52 61 6b 6f 74 6f 6d | .R..Flamary;.D..Tuia;.A..Rakotom |
34a0 | 61 6d 6f 6e 6a 79 2c 20 4f 70 74 69 6d 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 66 6f 72 0a 44 6f | amonjy,.Optimal.Transport.for.Do |
34c0 | 6d 61 69 6e 20 41 64 61 70 74 61 74 69 6f 6e 2c 20 69 6e 20 49 45 45 45 20 54 72 61 6e 73 61 63 | main.Adaptation,.in.IEEE.Transac |
34e0 | 74 69 6f 6e 73 20 6f 6e 20 50 61 74 74 65 72 6e 20 41 6e 61 6c 79 73 69 73 20 61 6e 64 20 4d 61 | tions.on.Pattern.Analysis.and.Ma |
3500 | 63 68 69 6e 65 0a 49 6e 74 65 6c 6c 69 67 65 6e 63 65 20 2c 20 76 6f 6c 2e 50 50 2c 20 6e 6f 2e | chine.Intelligence.,.vol.PP,.no. |
3520 | 39 39 2c 20 70 70 2e 31 2d 31 2e 0a 0a 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 | 99,.pp.1-1...[6].Ferradans,.S.,. |
3540 | 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 c3 a9 2c 20 47 2e 2c 20 26 20 41 75 6a | Papadakis,.N.,.Peyr..,.G.,.&.Auj |
3560 | 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 0a 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 | ol,.J..F..(2014)..Regularized.di |
3580 | 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a | screte.optimal.transport..SIAM.J |
35a0 | 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 0a 37 28 33 29 | ournal.on.Imaging.Sciences,.7(3) |
35c0 | 2c 20 31 38 35 33 2d 31 38 38 32 2e 0a 0a 5b 37 5d 20 52 61 6b 6f 74 6f 6d 61 6d 6f 6e 6a 79 2c | ,.1853-1882...[7].Rakotomamonjy, |
35e0 | 20 41 2e 2c 20 46 6c 61 6d 61 72 79 2c 20 52 2e 2c 20 26 20 43 6f 75 72 74 79 2c 20 4e 2e 20 28 | .A.,.Flamary,.R.,.&.Courty,.N..( |
3600 | 32 30 31 35 29 2e 20 47 65 6e 65 72 61 6c 69 7a 65 64 0a 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 67 | 2015)..Generalized.conditional.g |
3620 | 72 61 64 69 65 6e 74 3a 20 61 6e 61 6c 79 73 69 73 20 6f 66 20 63 6f 6e 76 65 72 67 65 6e 63 65 | radient:.analysis.of.convergence |
3640 | 20 61 6e 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 0a 61 72 58 69 76 20 70 72 65 70 72 69 6e | .and.applications..arXiv.preprin |
3660 | 74 20 61 72 58 69 76 3a 31 35 31 30 2e 30 36 35 36 37 2e 0a 0a 0a 0a 22 22 22 0a 0a 69 6d 70 6f | t.arXiv:1510.06567....."""..impo |
3680 | 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | rt.numpy.as.np.import.matplotlib |
36a0 | 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 69 6d 70 6f 72 74 20 6f 74 | .pylab.as.pl.import.ot.import.ot |
36c0 | 2e 70 6c 6f 74 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .plot..######################### |
36e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3700 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 47 65 6e 65 72 61 74 65 | #####################.#.Generate |
3720 | 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 61 72 61 6d | .data.#.-------------..#%%.param |
3740 | 65 74 65 72 73 0a 0a 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e | eters..n.=.100..#.nb.bins..#.bin |
3760 | 20 70 6f 73 69 74 69 6f 6e 73 0a 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 | .positions.x.=.np.arange(n,.dtyp |
3780 | 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 | e=np.float64)..#.Gaussian.distri |
37a0 | 62 75 74 69 6f 6e 73 0a 61 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 | butions.a.=.ot.datasets.get_1D_g |
37c0 | 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 | auss(n,.m=20,.s=5)..#.m=.mean,.s |
37e0 | 3d 20 73 74 64 0a 62 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 | =.std.b.=.ot.datasets.get_1D_gau |
3800 | 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 31 30 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 | ss(n,.m=60,.s=10)..#.loss.matrix |
3820 | 0a 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 | .M.=.ot.dist(x.reshape((n,.1)),. |
3840 | 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a | x.reshape((n,.1))).M./=.M.max(). |
3860 | 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .############################### |
3880 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
38a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 53 6f 6c 76 65 20 45 4d 44 0a 23 20 2d 2d | ###############.#.Solve.EMD.#.-- |
38c0 | 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 20 3d 20 6f 74 2e 65 6d 64 28 61 2c | -------..#%%.EMD..G0.=.ot.emd(a, |
38e0 | 20 62 2c 20 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c | .b,.M)..pl.figure(3,.figsize=(5, |
3900 | 20 35 29 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 30 | .5)).ot.plot.plot1D_mat(a,.b,.G0 |
3920 | 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | ,.'OT.matrix.G0')..############# |
3940 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3960 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3980 | 23 0a 23 20 53 6f 6c 76 65 20 45 4d 44 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 | #.#.Solve.EMD.with.Frobenius.nor |
39a0 | 6d 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | m.regularization.#.------------- |
39c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a | -------------------------------. |
39e0 | 0a 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d | .#%%.Example.with.Frobenius.norm |
3a00 | 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 0a 0a 64 65 66 20 66 28 47 29 3a 0a 20 20 20 20 | .regularization...def.f(G):..... |
3a20 | 72 65 74 75 72 6e 20 30 2e 35 20 2a 20 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 0a 0a 0a 64 65 66 20 | return.0.5.*.np.sum(G**2)...def. |
3a40 | 64 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 47 0a 0a 0a 72 65 67 20 3d 20 31 65 2d 31 | df(G):.....return.G...reg.=.1e-1 |
3a60 | 0a 0a 47 6c 32 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 | ..Gl2.=.ot.optim.cg(a,.b,.M,.reg |
3a80 | 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 | ,.f,.df,.verbose=True)..pl.figur |
3aa0 | 65 28 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 6c | e(3).ot.plot.plot1D_mat(a,.b,.Gl |
3ac0 | 32 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 0a 0a 23 23 23 23 23 | 2,.'OT.matrix.Frob..reg')..##### |
3ae0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3b00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3b20 | 23 23 23 23 23 23 23 23 23 0a 23 20 53 6f 6c 76 65 20 45 4d 44 20 77 69 74 68 20 65 6e 74 72 6f | #########.#.Solve.EMD.with.entro |
3b40 | 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | pic.regularization.#.----------- |
3b60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 | ---------------------------..#%% |
3b80 | 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a | .Example.with.entropic.regulariz |
3ba0 | 61 74 69 6f 6e 0a 0a 0a 64 65 66 20 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e | ation...def.f(G):.....return.np. |
3bc0 | 73 75 6d 28 47 20 2a 20 6e 70 2e 6c 6f 67 28 47 29 29 0a 0a 0a 64 65 66 20 64 66 28 47 29 3a 0a | sum(G.*.np.log(G))...def.df(G):. |
3be0 | 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 6c 6f 67 28 47 29 20 2b 20 31 2e 0a 0a 0a 72 65 67 20 | ....return.np.log(G).+.1....reg. |
3c00 | 3d 20 31 65 2d 33 0a 0a 47 65 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 20 62 2c 20 4d | =.1e-3..Ge.=.ot.optim.cg(a,.b,.M |
3c20 | 2c 20 72 65 67 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e | ,.reg,.f,.df,.verbose=True)..pl. |
3c40 | 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 0a 6f 74 2e 70 6c 6f | figure(4,.figsize=(5,.5)).ot.plo |
3c60 | 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 65 2c 20 27 4f 54 20 6d 61 74 72 69 | t.plot1D_mat(a,.b,.Ge,.'OT.matri |
3c80 | 78 20 45 6e 74 72 6f 70 2e 20 72 65 67 27 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | x.Entrop..reg')..############### |
3ca0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3cc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a | ###############################. |
3ce0 | 23 20 53 6f 6c 76 65 20 45 4d 44 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 | #.Solve.EMD.with.Frobenius.norm. |
3d00 | 2b 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 23 20 2d 2d 2d 2d | +.entropic.regularization.#.---- |
3d20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
3d40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 45 78 61 6d 70 6c 65 | -------------------..#%%.Example |
3d60 | 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 2b 20 65 6e 74 72 6f 70 69 63 20 | .with.Frobenius.norm.+.entropic. |
3d80 | 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 77 69 74 68 20 67 63 67 0a 0a 0a 64 65 66 20 66 28 | regularization.with.gcg...def.f( |
3da0 | 47 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 30 2e 35 20 2a 20 6e 70 2e 73 75 6d 28 47 2a 2a 32 | G):.....return.0.5.*.np.sum(G**2 |
3dc0 | 29 0a 0a 0a 64 65 66 20 64 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 47 0a 0a 0a 72 65 | )...def.df(G):.....return.G...re |
3de0 | 67 31 20 3d 20 31 65 2d 33 0a 72 65 67 32 20 3d 20 31 65 2d 31 0a 0a 47 65 6c 32 20 3d 20 6f 74 | g1.=.1e-3.reg2.=.1e-1..Gel2.=.ot |
3e00 | 2e 6f 70 74 69 6d 2e 67 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 31 2c 20 72 65 67 32 2c 20 | .optim.gcg(a,.b,.M,.reg1,.reg2,. |
3e20 | 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 | f,.df,.verbose=True)..pl.figure( |
3e40 | 35 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 | 5,.figsize=(5,.5)).ot.plot.plot1 |
3e60 | 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 65 6c 32 2c 20 27 4f 54 20 65 6e 74 72 6f 70 69 63 20 2b | D_mat(a,.b,.Gel2,.'OT.entropic.+ |
3e80 | 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b | .matrix.Frob..reg').pl.show().PK |
3ea0 | 03 04 14 00 00 00 00 00 17 78 50 4c 66 5a 12 7c 0a 15 00 00 0a 15 00 00 0f 00 00 00 70 6c 6f 74 | .........xPLfZ.|............plot |
3ec0 | 5f 6f 74 64 61 5f 64 32 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d | _otda_d2.py#.-*-.coding:.utf-8.- |
3ee0 | 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | *-.""".========================= |
3f00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f | ==========================.OT.fo |
3f20 | 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 6f 6e 20 65 6d 70 69 72 69 63 61 6c | r.domain.adaptation.on.empirical |
3f40 | 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | .distributions.================= |
3f60 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
3f80 | 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 6f 64 75 63 65 73 20 61 20 64 6f | ==..This.example.introduces.a.do |
3fa0 | 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 32 44 20 73 65 74 74 69 6e 67 2e | main.adaptation.in.a.2D.setting. |
3fc0 | 20 49 74 20 65 78 70 6c 69 63 69 74 73 0a 74 68 65 20 70 72 6f 62 6c 65 6d 20 6f 66 20 64 6f 6d | .It.explicits.the.problem.of.dom |
3fe0 | 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 61 6e 64 20 69 6e 74 72 6f 64 75 63 65 73 20 73 6f | ain.adaptation.and.introduces.so |
4000 | 6d 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 61 70 70 72 6f 61 63 68 65 73 20 | me.optimal.transport.approaches. |
4020 | 74 6f 20 73 6f 6c 76 65 20 69 74 2e 0a 0a 51 75 61 6e 74 69 74 69 65 73 20 73 75 63 68 20 61 73 | to.solve.it...Quantities.such.as |
4040 | 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 2c 20 67 72 65 61 74 65 72 20 63 6f 75 70 | .optimal.couplings,.greater.coup |
4060 | 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 61 6e 64 0a 74 72 61 6e 73 70 6f 72 74 65 | ling.coefficients.and.transporte |
4080 | 64 20 73 61 6d 70 6c 65 73 20 61 72 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 69 6e 20 6f 72 64 | d.samples.are.represented.in.ord |
40a0 | 65 72 20 74 6f 20 67 69 76 65 20 61 20 76 69 73 75 61 6c 20 75 6e 64 65 72 73 74 61 6e 64 69 6e | er.to.give.a.visual.understandin |
40c0 | 67 0a 6f 66 20 77 68 61 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 74 20 6d 65 74 68 6f 64 73 20 | g.of.what.the.transport.methods. |
40e0 | 61 72 65 20 64 6f 69 6e 67 2e 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 | are.doing.."""..#.Authors:.Remi. |
4100 | 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a | Flamary.<remi.flamary@unice.fr>. |
4120 | 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 | #..........Stanislas.Chambon.<st |
4140 | 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 | an.chambon@gmail.com>.#.#.Licens |
4160 | 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 | e:.MIT.License..import.matplotli |
4180 | 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 69 6d 70 6f 72 74 20 6f | b.pylab.as.pl.import.ot.import.o |
41a0 | 74 2e 70 6c 6f 74 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | t.plot..######################## |
41c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
41e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 67 65 6e 65 72 61 74 | ######################.#.generat |
4200 | 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 6e 5f 73 61 6d 70 6c 65 | e.data.#.-------------..n_sample |
4220 | 73 5f 73 6f 75 72 63 65 20 3d 20 31 35 30 0a 6e 5f 73 61 6d 70 6c 65 73 5f 74 61 72 67 65 74 20 | s_source.=.150.n_samples_target. |
4240 | 3d 20 31 35 30 0a 0a 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f | =.150..Xs,.ys.=.ot.datasets.get_ |
4260 | 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 20 6e 5f 73 61 6d 70 6c 65 73 | data_classif('3gauss',.n_samples |
4280 | 5f 73 6f 75 72 63 65 29 0a 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 | _source).Xt,.yt.=.ot.datasets.ge |
42a0 | 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 6e 5f 73 61 6d 70 | t_data_classif('3gauss2',.n_samp |
42c0 | 6c 65 73 5f 74 61 72 67 65 74 29 0a 0a 23 20 43 6f 73 74 20 6d 61 74 72 69 78 0a 4d 20 3d 20 6f | les_target)..#.Cost.matrix.M.=.o |
42e0 | 74 2e 64 69 73 74 28 58 73 2c 20 58 74 2c 20 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 | t.dist(Xs,.Xt,.metric='sqeuclide |
4300 | 61 6e 27 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | an')...######################### |
4320 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4340 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 49 6e 73 74 61 6e 74 69 | #####################.#.Instanti |
4360 | 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f | ate.the.different.transport.algo |
4380 | 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | rithms.and.fit.them.#.---------- |
43a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
43c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 20 45 4d 44 20 54 72 61 6e 73 70 6f | -----------------..#.EMD.Transpo |
43e0 | 72 74 0a 6f 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 | rt.ot_emd.=.ot.da.EMDTransport() |
4400 | 0a 6f 74 5f 65 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 53 69 6e | .ot_emd.fit(Xs=Xs,.Xt=Xt)..#.Sin |
4420 | 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 | khorn.Transport.ot_sinkhorn.=.ot |
4440 | 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 | .da.SinkhornTransport(reg_e=1e-1 |
4460 | 29 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a | ).ot_sinkhorn.fit(Xs=Xs,.Xt=Xt). |
4480 | 0a 23 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 47 72 6f 75 70 | .#.Sinkhorn.Transport.with.Group |
44a0 | 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 6f 74 5f 6c 70 6c 31 20 3d 20 | .lasso.regularization.ot_lpl1.=. |
44c0 | 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f | ot.da.SinkhornLpl1Transport(reg_ |
44e0 | 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 31 65 30 29 0a 6f 74 5f 6c 70 6c 31 2e 66 69 74 28 | e=1e-1,.reg_cl=1e0).ot_lpl1.fit( |
4500 | 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 74 72 61 6e 73 70 6f 72 | Xs=Xs,.ys=ys,.Xt=Xt)..#.transpor |
4520 | 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 61 72 67 65 74 20 73 61 6d | t.source.samples.onto.target.sam |
4540 | 70 6c 65 73 0a 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e | ples.transp_Xs_emd.=.ot_emd.tran |
4560 | 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 | sform(Xs=Xs).transp_Xs_sinkhorn. |
4580 | 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 74 | =.ot_sinkhorn.transform(Xs=Xs).t |
45a0 | 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 20 3d 20 6f 74 5f 6c 70 6c 31 2e 74 72 61 6e 73 66 6f 72 | ransp_Xs_lpl1.=.ot_lpl1.transfor |
45c0 | 6d 28 58 73 3d 58 73 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | m(Xs=Xs)...##################### |
45e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4600 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 | #########################.#.Fig. |
4620 | 31 20 3a 20 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d 70 | 1.:.plots.source.and.target.samp |
4640 | 6c 65 73 20 2b 20 6d 61 74 72 69 78 20 6f 66 20 70 61 69 72 77 69 73 65 20 64 69 73 74 61 6e 63 | les.+.matrix.of.pairwise.distanc |
4660 | 65 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | e.#.---------------------------- |
4680 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
46a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d | ---------..pl.figure(1,.figsize= |
46c0 | 28 31 30 2c 20 31 30 29 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 0a 70 6c | (10,.10)).pl.subplot(2,.2,.1).pl |
46e0 | 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 | .scatter(Xs[:,.0],.Xs[:,.1],.c=y |
4700 | 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d | s,.marker='+',.label='Source.sam |
4720 | 70 6c 65 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b | ples').pl.xticks([]).pl.yticks([ |
4740 | 5d 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f | ]).pl.legend(loc=0).pl.title('So |
4760 | 75 72 63 65 20 20 73 61 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 | urce..samples')..pl.subplot(2,.2 |
4780 | 2c 20 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 | ,.2).pl.scatter(Xt[:,.0],.Xt[:,. |
47a0 | 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 | 1],.c=yt,.marker='o',.label='Tar |
47c0 | 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 | get.samples').pl.xticks([]).pl.y |
47e0 | 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 | ticks([]).pl.legend(loc=0).pl.ti |
4800 | 74 6c 65 28 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f | tle('Target.samples')..pl.subplo |
4820 | 74 28 32 2c 20 32 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e 74 65 72 70 6f 6c | t(2,.2,.3).pl.imshow(M,.interpol |
4840 | 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 | ation='nearest').pl.xticks([]).p |
4860 | 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4d 61 74 72 69 78 20 6f 66 | l.yticks([]).pl.title('Matrix.of |
4880 | 20 70 61 69 72 77 69 73 65 20 64 69 73 74 61 6e 63 65 73 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c | .pairwise.distances').pl.tight_l |
48a0 | 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ayout()...###################### |
48c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
48e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 32 | ########################.#.Fig.2 |
4900 | 20 3a 20 70 6c 6f 74 73 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 20 66 6f 72 20 74 | .:.plots.optimal.couplings.for.t |
4920 | 68 65 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 68 6f 64 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d | he.different.methods.#.--------- |
4940 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
4960 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 | ----------------.pl.figure(2,.fi |
4980 | 67 73 69 7a 65 3d 28 31 30 2c 20 36 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c | gsize=(10,.6))..pl.subplot(2,.3, |
49a0 | 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 | .1).pl.imshow(ot_emd.coupling_,. |
49c0 | 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 | interpolation='nearest').pl.xtic |
49e0 | 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f | ks([]).pl.yticks([]).pl.title('O |
4a00 | 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 0a | ptimal.coupling\nEMDTransport'). |
4a20 | 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f | .pl.subplot(2,.3,.2).pl.imshow(o |
4a40 | 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 | t_sinkhorn.coupling_,.interpolat |
4a60 | 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e | ion='nearest').pl.xticks([]).pl. |
4a80 | 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 | yticks([]).pl.title('Optimal.cou |
4aa0 | 70 6c 69 6e 67 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 | pling\nSinkhornTransport')..pl.s |
4ac0 | 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 70 6c | ubplot(2,.3,.3).pl.imshow(ot_lpl |
4ae0 | 31 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 | 1.coupling_,.interpolation='near |
4b00 | 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d | est').pl.xticks([]).pl.yticks([] |
4b20 | 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 53 69 | ).pl.title('Optimal.coupling\nSi |
4b40 | 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f | nkhornLpl1Transport')..pl.subplo |
4b60 | 74 28 32 2c 20 33 2c 20 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 | t(2,.3,.4).ot.plot.plot2D_sample |
4b80 | 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 | s_mat(Xs,.Xt,.ot_emd.coupling_,. |
4ba0 | 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 | c=[.5,..5,.1]).pl.scatter(Xs[:,. |
4bc0 | 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 | 0],.Xs[:,.1],.c=ys,.marker='+',. |
4be0 | 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 74 | label='Source.samples').pl.scatt |
4c00 | 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 | er(Xt[:,.0],.Xt[:,.1],.c=yt,.mar |
4c20 | 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 | ker='o',.label='Target.samples') |
4c40 | 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e | .pl.xticks([]).pl.yticks([]).pl. |
4c60 | 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 | title('Main.coupling.coefficient |
4c80 | 73 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | s\nEMDTransport')..pl.subplot(2, |
4ca0 | 20 33 2c 20 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 | .3,.5).ot.plot.plot2D_samples_ma |
4cc0 | 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c | t(Xs,.Xt,.ot_sinkhorn.coupling_, |
4ce0 | 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c | .c=[.5,..5,.1]).pl.scatter(Xs[:, |
4d00 | 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c | .0],.Xs[:,.1],.c=ys,.marker='+', |
4d20 | 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 | .label='Source.samples').pl.scat |
4d40 | 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 | ter(Xt[:,.0],.Xt[:,.1],.c=yt,.ma |
4d60 | 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 | rker='o',.label='Target.samples' |
4d80 | 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c | ).pl.xticks([]).pl.yticks([]).pl |
4da0 | 2e 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e | .title('Main.coupling.coefficien |
4dc0 | 74 73 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 | ts\nSinkhornTransport')..pl.subp |
4de0 | 6c 6f 74 28 32 2c 20 33 2c 20 36 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 | lot(2,.3,.6).ot.plot.plot2D_samp |
4e00 | 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c 69 6e 67 | les_mat(Xs,.Xt,.ot_lpl1.coupling |
4e20 | 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b | _,.c=[.5,..5,.1]).pl.scatter(Xs[ |
4e40 | 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b | :,.0],.Xs[:,.1],.c=ys,.marker='+ |
4e60 | 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 63 | ',.label='Source.samples').pl.sc |
4e80 | 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 | atter(Xt[:,.0],.Xt[:,.1],.c=yt,. |
4ea0 | 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 | marker='o',.label='Target.sample |
4ec0 | 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a | s').pl.xticks([]).pl.yticks([]). |
4ee0 | 70 6c 2e 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 | pl.title('Main.coupling.coeffici |
4f00 | 65 6e 74 73 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 6c | ents\nSinkhornLpl1Transport').pl |
4f20 | 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .tight_layout()...############## |
4f40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4f60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4f80 | 0a 23 20 46 69 67 20 33 20 3a 20 70 6c 6f 74 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 | .#.Fig.3.:.plot.transported.samp |
4fa0 | 6c 65 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | les.#.-------------------------- |
4fc0 | 2d 2d 2d 2d 2d 2d 0a 0a 23 20 64 69 73 70 6c 61 79 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 | ------..#.display.transported.sa |
4fe0 | 6d 70 6c 65 73 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 | mples.pl.figure(4,.figsize=(10,. |
5000 | 34 29 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 | 4)).pl.subplot(1,.3,.1).pl.scatt |
5020 | 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 | er(Xt[:,.0],.Xt[:,.1],.c=yt,.mar |
5040 | 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 | ker='o',............label='Targe |
5060 | 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 | t.samples',.alpha=0.5).pl.scatte |
5080 | 72 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 | r(transp_Xs_emd[:,.0],.transp_Xs |
50a0 | 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 | _emd[:,.1],.c=ys,............mar |
50c0 | 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c | ker='+',.label='Transp.samples', |
50e0 | 20 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d | .s=30).pl.title('Transported.sam |
5100 | 70 6c 65 73 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c | ples\nEmdTransport').pl.legend(l |
5120 | 6f 63 3d 30 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d | oc=0).pl.xticks([]).pl.yticks([] |
5140 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 0a 70 6c 2e 73 63 61 74 74 65 | )..pl.subplot(1,.3,.2).pl.scatte |
5160 | 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b | r(Xt[:,.0],.Xt[:,.1],.c=yt,.mark |
5180 | 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 | er='o',............label='Target |
51a0 | 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 | .samples',.alpha=0.5).pl.scatter |
51c0 | 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 | (transp_Xs_sinkhorn[:,.0],.trans |
51e0 | 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 20 | p_Xs_sinkhorn[:,.1],.c=ys,...... |
5200 | 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 | ......marker='+',.label='Transp. |
5220 | 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 | samples',.s=30).pl.title('Transp |
5240 | 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 | orted.samples\nSinkhornTransport |
5260 | 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 0a | ').pl.xticks([]).pl.yticks([]).. |
5280 | 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 | pl.subplot(1,.3,.3).pl.scatter(X |
52a0 | 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d | t[:,.0],.Xt[:,.1],.c=yt,.marker= |
52c0 | 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 | 'o',............label='Target.sa |
52e0 | 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 | mples',.alpha=0.5).pl.scatter(tr |
5300 | 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 70 | ansp_Xs_lpl1[:,.0],.transp_Xs_lp |
5320 | 6c 31 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 | l1[:,.1],.c=ys,............marke |
5340 | 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 | r='+',.label='Transp.samples',.s |
5360 | 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c | =30).pl.title('Transported.sampl |
5380 | 65 73 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 6c 2e 78 | es\nSinkhornLpl1Transport').pl.x |
53a0 | 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 0a 70 6c 2e 74 69 67 68 | ticks([]).pl.yticks([])..pl.tigh |
53c0 | 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 17 | t_layout().pl.show().PK......... |
53e0 | 78 50 4c 0a ea dc a4 21 12 00 00 21 12 00 00 1c 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 73 65 6d | xPL....!...!.......plot_otda_sem |
5400 | 69 5f 73 75 70 65 72 76 69 73 65 64 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 | i_supervised.py#.-*-.coding:.utf |
5420 | 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | -8.-*-.""".===================== |
5440 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 44 41 20 75 6e 73 | =======================.OTDA.uns |
5460 | 75 70 65 72 76 69 73 65 64 20 76 73 20 73 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 73 65 74 | upervised.vs.semi-supervised.set |
5480 | 74 69 6e 67 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ting.=========================== |
54a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 | =================..This.example. |
54c0 | 69 6e 74 72 6f 64 75 63 65 73 20 61 20 73 65 6d 69 20 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d | introduces.a.semi.supervised.dom |
54e0 | 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 32 44 20 73 65 74 74 69 6e 67 2e 0a | ain.adaptation.in.a.2D.setting.. |
5500 | 49 74 20 65 78 70 6c 69 63 69 74 73 20 74 68 65 20 70 72 6f 62 6c 65 6d 20 6f 66 20 73 65 6d 69 | It.explicits.the.problem.of.semi |
5520 | 20 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 61 6e | .supervised.domain.adaptation.an |
5540 | 64 20 69 6e 74 72 6f 64 75 63 65 73 0a 73 6f 6d 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 | d.introduces.some.optimal.transp |
5560 | 6f 72 74 20 61 70 70 72 6f 61 63 68 65 73 20 74 6f 20 73 6f 6c 76 65 20 69 74 2e 0a 0a 51 75 61 | ort.approaches.to.solve.it...Qua |
5580 | 6e 74 69 74 69 65 73 20 73 75 63 68 20 61 73 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 | ntities.such.as.optimal.coupling |
55a0 | 73 2c 20 67 72 65 61 74 65 72 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 | s,.greater.coupling.coefficients |
55c0 | 20 61 6e 64 0a 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 20 61 72 65 20 72 65 70 | .and.transported.samples.are.rep |
55e0 | 72 65 73 65 6e 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 67 69 76 65 20 61 20 76 69 73 75 | resented.in.order.to.give.a.visu |
5600 | 61 6c 20 75 6e 64 65 72 73 74 61 6e 64 69 6e 67 0a 6f 66 20 77 68 61 74 20 74 68 65 20 74 72 61 | al.understanding.of.what.the.tra |
5620 | 6e 73 70 6f 72 74 20 6d 65 74 68 6f 64 73 20 61 72 65 20 64 6f 69 6e 67 2e 0a 22 22 22 0a 0a 23 | nsport.methods.are.doing.."""..# |
5640 | 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 | .Authors:.Remi.Flamary.<remi.fla |
5660 | 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 | mary@unice.fr>.#..........Stanis |
5680 | 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e | las.Chambon.<stan.chambon@gmail. |
56a0 | 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 | com>.#.#.License:.MIT.License..i |
56c0 | 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 | mport.matplotlib.pylab.as.pl.imp |
56e0 | 6f 72 74 20 6f 74 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ort.ot...####################### |
5700 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
5720 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 47 65 6e 65 72 61 | #######################.#.Genera |
5740 | 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 6e 5f 73 61 6d 70 6c | te.data.#.-------------..n_sampl |
5760 | 65 73 5f 73 6f 75 72 63 65 20 3d 20 31 35 30 0a 6e 5f 73 61 6d 70 6c 65 73 5f 74 61 72 67 65 74 | es_source.=.150.n_samples_target |
5780 | 20 3d 20 31 35 30 0a 0a 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 | .=.150..Xs,.ys.=.ot.datasets.get |
57a0 | 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 20 6e 5f 73 61 6d 70 6c 65 | _data_classif('3gauss',.n_sample |
57c0 | 73 5f 73 6f 75 72 63 65 29 0a 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 | s_source).Xt,.yt.=.ot.datasets.g |
57e0 | 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 6e 5f 73 61 6d | et_data_classif('3gauss2',.n_sam |
5800 | 70 6c 65 73 5f 74 61 72 67 65 74 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ples_target)...################# |
5820 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
5840 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 | #############################.#. |
5860 | 54 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 61 | Transport.source.samples.onto.ta |
5880 | 72 67 65 74 20 73 61 6d 70 6c 65 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | rget.samples.#.----------------- |
58a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 0a 23 20 | ---------------------------...#. |
58c0 | 75 6e 73 75 70 65 72 76 69 73 65 64 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 0a 6f | unsupervised.domain.adaptation.o |
58e0 | 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 | t_sinkhorn_un.=.ot.da.SinkhornTr |
5900 | 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f | ansport(reg_e=1e-1).ot_sinkhorn_ |
5920 | 75 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 74 72 61 6e 73 70 5f 58 73 5f 73 | un.fit(Xs=Xs,.Xt=Xt).transp_Xs_s |
5940 | 69 6e 6b 68 6f 72 6e 5f 75 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 2e 74 72 61 6e | inkhorn_un.=.ot_sinkhorn_un.tran |
5960 | 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 23 20 73 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 | sform(Xs=Xs)..#.semi-supervised. |
5980 | 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 | domain.adaptation.ot_sinkhorn_se |
59a0 | 6d 69 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 | mi.=.ot.da.SinkhornTransport(reg |
59c0 | 5f 65 3d 31 65 2d 31 29 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 2e 66 69 74 28 58 73 | _e=1e-1).ot_sinkhorn_semi.fit(Xs |
59e0 | 3d 58 73 2c 20 58 74 3d 58 74 2c 20 79 73 3d 79 73 2c 20 79 74 3d 79 74 29 0a 74 72 61 6e 73 70 | =Xs,.Xt=Xt,.ys=ys,.yt=yt).transp |
5a00 | 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f | _Xs_sinkhorn_semi.=.ot_sinkhorn_ |
5a20 | 73 65 6d 69 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 23 20 73 65 6d 69 20 73 75 | semi.transform(Xs=Xs)..#.semi.su |
5a40 | 70 65 72 76 69 73 65 64 20 44 41 20 75 73 65 73 20 61 76 61 69 6c 61 62 6c 65 20 6c 61 62 61 6c | pervised.DA.uses.available.labal |
5a60 | 65 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 | ed.target.samples.to.modify.the. |
5a80 | 63 6f 73 74 0a 23 20 6d 61 74 72 69 78 20 69 6e 76 6f 6c 76 65 64 20 69 6e 20 74 68 65 20 4f 54 | cost.#.matrix.involved.in.the.OT |
5aa0 | 20 70 72 6f 62 6c 65 6d 2e 20 54 68 65 20 63 6f 73 74 20 6f 66 20 74 72 61 6e 73 70 6f 72 74 69 | .problem..The.cost.of.transporti |
5ac0 | 6e 67 20 61 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 0a 23 20 6f 66 20 63 6c 61 73 73 20 41 20 | ng.a.source.sample.#.of.class.A. |
5ae0 | 6f 6e 74 6f 20 61 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 20 6f 66 20 63 6c 61 73 73 20 42 20 | onto.a.target.sample.of.class.B. |
5b00 | 21 3d 20 41 20 69 73 20 73 65 74 20 74 6f 20 69 6e 66 69 6e 69 74 65 2c 20 6f 72 20 61 0a 23 20 | !=.A.is.set.to.infinite,.or.a.#. |
5b20 | 76 65 72 79 20 6c 61 72 67 65 20 76 61 6c 75 65 0a 0a 23 20 6e 6f 74 65 20 74 68 61 74 20 69 6e | very.large.value..#.note.that.in |
5b40 | 20 74 68 65 20 70 72 65 73 65 6e 74 20 63 61 73 65 20 77 65 20 63 6f 6e 73 69 64 65 72 20 74 68 | .the.present.case.we.consider.th |
5b60 | 61 74 20 61 6c 6c 20 74 68 65 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 61 72 65 0a 23 20 | at.all.the.target.samples.are.#. |
5b80 | 6c 61 62 65 6c 65 64 2e 20 46 6f 72 20 64 61 69 6c 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 2c | labeled..For.daily.applications, |
5ba0 | 20 73 6f 6d 65 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 | .some.target.sample.might.not.ha |
5bc0 | 76 65 20 6c 61 62 65 6c 73 2c 0a 23 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 74 68 65 20 65 6c | ve.labels,.#.in.this.case.the.el |
5be0 | 65 6d 65 6e 74 20 6f 66 20 79 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 | ement.of.yt.corresponding.to.the |
5c00 | 73 65 20 73 61 6d 70 6c 65 73 20 73 68 6f 75 6c 64 20 62 65 0a 23 20 66 69 6c 6c 65 64 20 77 69 | se.samples.should.be.#.filled.wi |
5c20 | 74 68 20 2d 31 2e 0a 0a 23 20 57 61 72 6e 69 6e 67 3a 20 77 65 20 72 65 63 61 6c 6c 20 74 68 61 | th.-1...#.Warning:.we.recall.tha |
5c40 | 74 20 2d 31 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 61 73 20 61 20 63 6c 61 73 73 20 6c | t.-1.cannot.be.used.as.a.class.l |
5c60 | 61 62 65 6c 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | abel...######################### |
5c80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
5ca0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 31 20 3a 20 | #####################.#.Fig.1.:. |
5cc0 | 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 | plots.source.and.target.samples. |
5ce0 | 2b 20 6d 61 74 72 69 78 20 6f 66 20 70 61 69 72 77 69 73 65 20 64 69 73 74 61 6e 63 65 0a 23 20 | +.matrix.of.pairwise.distance.#. |
5d00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
5d20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
5d40 | 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c | -----..pl.figure(1,.figsize=(10, |
5d60 | 20 31 30 29 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 | .10)).pl.subplot(2,.2,.1).pl.sca |
5d80 | 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d | tter(Xs[:,.0],.Xs[:,.1],.c=ys,.m |
5da0 | 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 | arker='+',.label='Source.samples |
5dc0 | 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 | ').pl.xticks([]).pl.yticks([]).p |
5de0 | 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 | l.legend(loc=0).pl.title('Source |
5e00 | 20 20 73 61 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 | ..samples')..pl.subplot(2,.2,.2) |
5e20 | 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 | .pl.scatter(Xt[:,.0],.Xt[:,.1],. |
5e40 | 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 | c=yt,.marker='o',.label='Target. |
5e60 | 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b | samples').pl.xticks([]).pl.ytick |
5e80 | 73 28 5b 5d 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 | s([]).pl.legend(loc=0).pl.title( |
5ea0 | 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | 'Target.samples')..pl.subplot(2, |
5ec0 | 20 32 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 2e | .2,.3).pl.imshow(ot_sinkhorn_un. |
5ee0 | 63 6f 73 74 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a | cost_,.interpolation='nearest'). |
5f00 | 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 | pl.xticks([]).pl.yticks([]).pl.t |
5f20 | 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 2d 20 75 6e 73 75 70 65 72 76 69 73 65 64 | itle('Cost.matrix.-.unsupervised |
5f40 | 20 44 41 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 34 29 0a 70 6c 2e 69 6d | .DA')..pl.subplot(2,.2,.4).pl.im |
5f60 | 73 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d 69 2e 63 6f 73 74 5f 2c 20 69 6e 74 | show(ot_sinkhorn_semi.cost_,.int |
5f80 | 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 | erpolation='nearest').pl.xticks( |
5fa0 | 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 | []).pl.yticks([]).pl.title('Cost |
5fc0 | 20 6d 61 74 72 69 78 20 2d 20 73 65 6d 69 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 0a 0a 70 | .matrix.-.semisupervised.DA')..p |
5fe0 | 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 23 20 74 68 65 20 6f 70 74 69 6d 61 6c 20 | l.tight_layout()..#.the.optimal. |
6000 | 63 6f 75 70 6c 69 6e 67 20 69 6e 20 74 68 65 20 73 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 | coupling.in.the.semi-supervised. |
6020 | 44 41 20 63 61 73 65 20 77 69 6c 6c 20 65 78 68 69 62 69 74 20 22 20 73 68 61 70 65 0a 23 20 73 | DA.case.will.exhibit.".shape.#.s |
6040 | 69 6d 69 6c 61 72 22 20 74 6f 20 74 68 65 20 63 6f 73 74 20 6d 61 74 72 69 78 2c 20 28 62 6c 6f | imilar".to.the.cost.matrix,.(blo |
6060 | 63 6b 20 64 69 61 67 6f 6e 61 6c 20 6d 61 74 72 69 78 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 | ck.diagonal.matrix)...########## |
6080 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
60a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
60c0 | 23 23 23 23 0a 23 20 46 69 67 20 32 20 3a 20 70 6c 6f 74 73 20 6f 70 74 69 6d 61 6c 20 63 6f 75 | ####.#.Fig.2.:.plots.optimal.cou |
60e0 | 70 6c 69 6e 67 73 20 66 6f 72 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 68 6f 64 73 | plings.for.the.different.methods |
6100 | 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .#.----------------------------- |
6120 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 6c | ----------------------------..pl |
6140 | 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c 20 34 29 29 0a 0a 70 6c 2e 73 | .figure(2,.figsize=(8,.4))..pl.s |
6160 | 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e | ubplot(1,.2,.1).pl.imshow(ot_sin |
6180 | 6b 68 6f 72 6e 5f 75 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f | khorn_un.coupling_,.interpolatio |
61a0 | 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 | n='nearest').pl.xticks([]).pl.yt |
61c0 | 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c | icks([]).pl.title('Optimal.coupl |
61e0 | 69 6e 67 5c 6e 55 6e 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 0a 0a 70 6c 2e 73 75 62 70 6c | ing\nUnsupervised.DA')..pl.subpl |
6200 | 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 | ot(1,.2,.2).pl.imshow(ot_sinkhor |
6220 | 6e 5f 73 65 6d 69 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d | n_semi.coupling_,.interpolation= |
6240 | 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 | 'nearest').pl.xticks([]).pl.ytic |
6260 | 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e | ks([]).pl.title('Optimal.couplin |
6280 | 67 5c 6e 53 65 6d 69 2d 73 75 70 65 72 76 69 73 65 64 20 44 41 27 29 0a 0a 70 6c 2e 74 69 67 68 | g\nSemi-supervised.DA')..pl.tigh |
62a0 | 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | t_layout()...################### |
62c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
62e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 | ###########################.#.Fi |
6300 | 67 20 33 20 3a 20 70 6c 6f 74 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 0a 23 | g.3.:.plot.transported.samples.# |
6320 | 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .------------------------------- |
6340 | 2d 0a 0a 23 20 64 69 73 70 6c 61 79 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 | -..#.display.transported.samples |
6360 | 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c 20 34 29 29 0a 70 6c | .pl.figure(4,.figsize=(8,.4)).pl |
6380 | 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b | .subplot(1,.2,.1).pl.scatter(Xt[ |
63a0 | 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f | :,.0],.Xt[:,.1],.c=yt,.marker='o |
63c0 | 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 | ',............label='Target.samp |
63e0 | 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e | les',.alpha=0.5).pl.scatter(tran |
6400 | 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f | sp_Xs_sinkhorn_un[:,.0],.transp_ |
6420 | 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 75 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 | Xs_sinkhorn_un[:,.1],.c=ys,..... |
6440 | 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 | .......marker='+',.label='Transp |
6460 | 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 | .samples',.s=30).pl.title('Trans |
6480 | 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 | ported.samples\nEmdTransport').p |
64a0 | 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c | l.legend(loc=0).pl.xticks([]).pl |
64c0 | 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 | .yticks([])..pl.subplot(1,.2,.2) |
64e0 | 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 | .pl.scatter(Xt[:,.0],.Xt[:,.1],. |
6500 | 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 | c=yt,.marker='o',............lab |
6520 | 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 35 29 0a | el='Target.samples',.alpha=0.5). |
6540 | 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 | pl.scatter(transp_Xs_sinkhorn_se |
6560 | 6d 69 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5f 73 65 6d | mi[:,.0],.transp_Xs_sinkhorn_sem |
6580 | 69 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 | i[:,.1],.c=ys,............marker |
65a0 | 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d | ='+',.label='Transp.samples',.s= |
65c0 | 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 | 30).pl.title('Transported.sample |
65e0 | 73 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 | s\nSinkhornTransport').pl.xticks |
6600 | 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 | ([]).pl.yticks([])..pl.tight_lay |
6620 | 6f 75 74 28 29 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c c6 f7 | out().pl.show().PK.........xPL.. |
6640 | 0c 9f a1 06 00 00 a1 06 00 00 0d 00 00 00 70 6c 6f 74 5f 4f 54 5f 31 44 2e 70 79 23 20 2d 2a 2d | ..............plot_OT_1D.py#.-*- |
6660 | 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d | .coding:.utf-8.-*-.""".========= |
6680 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 | ===========.1D.optimal.transport |
66a0 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d | .====================..This.exam |
66c0 | 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 | ple.illustrates.the.computation. |
66e0 | 6f 66 20 45 4d 44 20 61 6e 64 20 53 69 6e 6b 68 6f 72 6e 20 74 72 61 6e 73 70 6f 72 74 20 70 6c | of.EMD.and.Sinkhorn.transport.pl |
6700 | 61 6e 73 0a 61 6e 64 20 74 68 65 69 72 20 76 69 73 75 61 6c 69 7a 61 74 69 6f 6e 2e 0a 0a 22 22 | ans.and.their.visualization..."" |
6720 | 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e | "..#.Author:.Remi.Flamary.<remi. |
6740 | 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d | flamary@unice.fr>.#.#.License:.M |
6760 | 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 | IT.License..import.numpy.as.np.i |
6780 | 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 | mport.matplotlib.pylab.as.pl.imp |
67a0 | 6f 72 74 20 6f 74 0a 69 6d 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 | ort.ot.import.ot.plot.from.ot.da |
67c0 | 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 | tasets.import.get_1D_gauss.as.ga |
67e0 | 75 73 73 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | uss..########################### |
6800 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6820 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 47 65 6e 65 72 61 74 65 20 64 | ###################.#.Generate.d |
6840 | 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 | ata.#.-------------...#%%.parame |
6860 | 74 65 72 73 0a 0a 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 | ters..n.=.100..#.nb.bins..#.bin. |
6880 | 70 6f 73 69 74 69 6f 6e 73 0a 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 | positions.x.=.np.arange(n,.dtype |
68a0 | 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 | =np.float64)..#.Gaussian.distrib |
68c0 | 75 74 69 6f 6e 73 0a 61 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 | utions.a.=.gauss(n,.m=20,.s=5).. |
68e0 | 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d | #.m=.mean,.s=.std.b.=.gauss(n,.m |
6900 | 3d 36 30 2c 20 73 3d 31 30 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 20 3d 20 6f 74 | =60,.s=10)..#.loss.matrix.M.=.ot |
6920 | 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 | .dist(x.reshape((n,.1)),.x.resha |
6940 | 70 65 28 28 6e 2c 20 31 29 29 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a 0a 0a 23 23 23 23 23 | pe((n,.1))).M./=.M.max()...##### |
6960 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6980 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
69a0 | 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 | #########.#.Plot.distributions.a |
69c0 | 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nd.loss.matrix.#.--------------- |
69e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 6c 6f 74 20 74 68 | -------------------..#%%.plot.th |
6a00 | 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 | e.distributions..pl.figure(1,.fi |
6a20 | 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 20 61 2c 20 27 62 | gsize=(6.4,.3)).pl.plot(x,.a,.'b |
6a40 | 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a | ',.label='Source.distribution'). |
6a60 | 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 | pl.plot(x,.b,.'r',.label='Target |
6a80 | 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 23 25 25 | .distribution').pl.legend()..#%% |
6aa0 | 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 | .plot.distributions.and.loss.mat |
6ac0 | 72 69 78 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 | rix..pl.figure(2,.figsize=(5,.5) |
6ae0 | 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 4d 2c 20 27 43 | ).ot.plot.plot1D_mat(a,.b,.M,.'C |
6b00 | 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ost.matrix.M')..################ |
6b20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6b40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 | ##############################.# |
6b60 | 20 53 6f 6c 76 65 20 45 4d 44 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 0a 23 25 25 20 45 4d 44 | .Solve.EMD.#.---------...#%%.EMD |
6b80 | 0a 0a 47 30 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 | ..G0.=.ot.emd(a,.b,.M)..pl.figur |
6ba0 | 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f | e(3,.figsize=(5,.5)).ot.plot.plo |
6bc0 | 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 30 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 | t1D_mat(a,.b,.G0,.'OT.matrix.G0' |
6be0 | 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | )..############################# |
6c00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6c20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 53 6f 6c 76 65 20 53 69 6e 6b 68 6f | #################.#.Solve.Sinkho |
6c40 | 72 6e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 0a 23 25 25 20 53 69 6e 6b 68 6f | rn.#.--------------...#%%.Sinkho |
6c60 | 72 6e 0a 0a 6c 61 6d 62 64 20 3d 20 31 65 2d 33 0a 47 73 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 | rn..lambd.=.1e-3.Gs.=.ot.sinkhor |
6c80 | 6e 28 61 2c 20 62 2c 20 4d 2c 20 6c 61 6d 62 64 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a | n(a,.b,.M,.lambd,.verbose=True). |
6ca0 | 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 0a 6f 74 | .pl.figure(4,.figsize=(5,.5)).ot |
6cc0 | 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 73 2c 20 27 4f 54 20 6d | .plot.plot1D_mat(a,.b,.Gs,.'OT.m |
6ce0 | 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 | atrix.Sinkhorn')..pl.show().PK.. |
6d00 | 14 00 00 00 00 00 17 78 50 4c 2b 3f e5 77 26 0d 00 00 26 0d 00 00 15 00 00 00 70 6c 6f 74 5f 62 | .......xPL+?.w&...&.......plot_b |
6d20 | 61 72 79 63 65 6e 74 65 72 5f 31 44 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 | arycenter_1D.py#.-*-.coding:.utf |
6d40 | 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | -8.-*-.""".===================== |
6d60 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e | =========.1D.Wasserstein.barycen |
6d80 | 74 65 72 20 64 65 6d 6f 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ter.demo.======================= |
6da0 | 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6c 6c 75 73 74 72 61 74 65 | =======..This.example.illustrate |
6dc0 | 73 20 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 72 65 67 75 6c 61 72 69 7a 65 64 | s.the.computation.of.regularized |
6de0 | 20 57 61 73 73 65 72 73 79 65 69 6e 20 42 61 72 79 63 65 6e 74 65 72 0a 61 73 20 70 72 6f 70 6f | .Wassersyein.Barycenter.as.propo |
6e00 | 73 65 64 20 69 6e 20 5b 33 5d 2e 0a 0a 0a 5b 33 5d 20 42 65 6e 61 6d 6f 75 2c 20 4a 2e 20 44 2e | sed.in.[3]....[3].Benamou,.J..D. |
6e20 | 2c 20 43 61 72 6c 69 65 72 2c 20 47 2e 2c 20 43 75 74 75 72 69 2c 20 4d 2e 2c 20 4e 65 6e 6e 61 | ,.Carlier,.G.,.Cuturi,.M.,.Nenna |
6e40 | 2c 20 4c 2e 2c 20 26 20 50 65 79 72 c3 a9 2c 20 47 2e 20 28 32 30 31 35 29 2e 0a 49 74 65 72 61 | ,.L.,.&.Peyr..,.G..(2015)..Itera |
6e60 | 74 69 76 65 20 42 72 65 67 6d 61 6e 20 70 72 6f 6a 65 63 74 69 6f 6e 73 20 66 6f 72 20 72 65 67 | tive.Bregman.projections.for.reg |
6e80 | 75 6c 61 72 69 7a 65 64 20 74 72 61 6e 73 70 6f 72 74 61 74 69 6f 6e 20 70 72 6f 62 6c 65 6d 73 | ularized.transportation.problems |
6ea0 | 0a 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 53 63 69 65 6e 74 69 66 69 63 20 43 6f 6d 70 | .SIAM.Journal.on.Scientific.Comp |
6ec0 | 75 74 69 6e 67 2c 20 33 37 28 32 29 2c 20 41 31 31 31 31 2d 41 31 31 33 38 2e 0a 0a 22 22 22 0a | uting,.37(2),.A1111-A1138...""". |
6ee0 | 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c | .#.Author:.Remi.Flamary.<remi.fl |
6f00 | 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 | amary@unice.fr>.#.#.License:.MIT |
6f20 | 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 | .License..import.numpy.as.np.imp |
6f40 | 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 | ort.matplotlib.pylab.as.pl.impor |
6f60 | 74 20 6f 74 0a 23 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 33 64 20 70 6c 6f 74 20 65 76 65 | t.ot.#.necessary.for.3d.plot.eve |
6f80 | 6e 20 69 66 20 6e 6f 74 20 75 73 65 64 0a 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e | n.if.not.used.from.mpl_toolkits. |
6fa0 | 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 20 23 20 6e 6f 71 61 0a 66 72 | mplot3d.import.Axes3D..#.noqa.fr |
6fc0 | 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 | om.matplotlib.collections.import |
6fe0 | 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 0a 0a 23 0a 23 20 47 65 6e 65 72 61 74 65 20 64 61 | .PolyCollection..#.#.Generate.da |
7000 | 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 | ta.#.-------------..#%%.paramete |
7020 | 72 73 0a 0a 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 70 6f | rs..n.=.100..#.nb.bins..#.bin.po |
7040 | 73 69 74 69 6f 6e 73 0a 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e | sitions.x.=.np.arange(n,.dtype=n |
7060 | 70 2e 66 6c 6f 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 | p.float64)..#.Gaussian.distribut |
7080 | 69 6f 6e 73 0a 61 31 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 | ions.a1.=.ot.datasets.get_1D_gau |
70a0 | 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 | ss(n,.m=20,.s=5)..#.m=.mean,.s=. |
70c0 | 73 74 64 0a 61 32 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 | std.a2.=.ot.datasets.get_1D_gaus |
70e0 | 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 38 29 0a 0a 23 20 63 72 65 61 74 69 6e 67 20 6d 61 74 72 | s(n,.m=60,.s=8)..#.creating.matr |
7100 | 69 78 20 41 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e | ix.A.containing.all.distribution |
7120 | 73 0a 41 20 3d 20 6e 70 2e 76 73 74 61 63 6b 28 28 61 31 2c 20 61 32 29 29 2e 54 0a 6e 5f 64 69 | s.A.=.np.vstack((a1,.a2)).T.n_di |
7140 | 73 74 72 69 62 75 74 69 6f 6e 73 20 3d 20 41 2e 73 68 61 70 65 5b 31 5d 0a 0a 23 20 6c 6f 73 73 | stributions.=.A.shape[1]..#.loss |
7160 | 20 6d 61 74 72 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 0a 4d 20 3d 20 6f 74 2e 75 | .matrix.+.normalization.M.=.ot.u |
7180 | 74 69 6c 73 2e 64 69 73 74 30 28 6e 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a 0a 23 0a 23 20 | tils.dist0(n).M./=.M.max()..#.#. |
71a0 | 50 6c 6f 74 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 6c 6f 74 20 | Plot.data.#.---------..#%%.plot. |
71c0 | 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 | the.distributions..pl.figure(1,. |
71e0 | 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 | figsize=(6.4,.3)).for.i.in.range |
7200 | 28 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 29 3a 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 | (n_distributions):.....pl.plot(x |
7220 | 2c 20 41 5b 3a 2c 20 69 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f | ,.A[:,.i]).pl.title('Distributio |
7240 | 6e 73 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 23 0a 23 20 42 61 72 79 | ns').pl.tight_layout()..#.#.Bary |
7260 | 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | center.computation.#.----------- |
7280 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 | -----------..#%%.barycenter.comp |
72a0 | 75 74 61 74 69 6f 6e 0a 0a 61 6c 70 68 61 20 3d 20 30 2e 32 20 20 23 20 30 3c 3d 61 6c 70 68 61 | utation..alpha.=.0.2..#.0<=alpha |
72c0 | 3c 3d 31 0a 77 65 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 31 20 2d 20 61 6c 70 68 | <=1.weights.=.np.array([1.-.alph |
72e0 | 61 2c 20 61 6c 70 68 61 5d 29 0a 0a 23 20 6c 32 62 61 72 79 0a 62 61 72 79 5f 6c 32 20 3d 20 41 | a,.alpha])..#.l2bary.bary_l2.=.A |
7300 | 2e 64 6f 74 28 77 65 69 67 68 74 73 29 0a 0a 23 20 77 61 73 73 65 72 73 74 65 69 6e 0a 72 65 67 | .dot(weights)..#.wasserstein.reg |
7320 | 20 3d 20 31 65 2d 33 0a 62 61 72 79 5f 77 61 73 73 20 3d 20 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 | .=.1e-3.bary_wass.=.ot.bregman.b |
7340 | 61 72 79 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 0a 0a 70 | arycenter(A,.M,.reg,.weights)..p |
7360 | 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 | l.figure(2).pl.clf().pl.subplot( |
7380 | 32 2c 20 31 2c 20 31 29 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 5f 64 69 73 74 72 69 | 2,.1,.1).for.i.in.range(n_distri |
73a0 | 62 75 74 69 6f 6e 73 29 3a 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c 20 69 5d | butions):.....pl.plot(x,.A[:,.i] |
73c0 | 29 0a 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e | ).pl.title('Distributions')..pl. |
73e0 | 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 61 72 79 | subplot(2,.1,.2).pl.plot(x,.bary |
7400 | 5f 6c 32 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 6c 32 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c | _l2,.'r',.label='l2').pl.plot(x, |
7420 | 20 62 61 72 79 5f 77 61 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 57 61 73 73 65 72 73 74 | .bary_wass,.'g',.label='Wasserst |
7440 | 65 69 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 | ein').pl.legend().pl.title('Bary |
7460 | 63 65 6e 74 65 72 73 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 23 0a 23 | centers').pl.tight_layout()..#.# |
7480 | 20 42 61 72 79 63 65 6e 74 72 69 63 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 0a 23 20 2d 2d 2d | .Barycentric.interpolation.#.--- |
74a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 62 61 72 79 | ----------------------..#%%.bary |
74c0 | 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 0a 0a 6e 5f 61 6c 70 68 61 20 3d 20 | center.interpolation..n_alpha.=. |
74e0 | 31 31 0a 61 6c 70 68 61 5f 6c 69 73 74 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 30 2c 20 31 | 11.alpha_list.=.np.linspace(0,.1 |
7500 | 2c 20 6e 5f 61 6c 70 68 61 29 0a 0a 0a 42 5f 6c 32 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c | ,.n_alpha)...B_l2.=.np.zeros((n, |
7520 | 20 6e 5f 61 6c 70 68 61 29 29 0a 0a 42 5f 77 61 73 73 20 3d 20 6e 70 2e 63 6f 70 79 28 42 5f 6c | .n_alpha))..B_wass.=.np.copy(B_l |
7540 | 32 29 0a 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 30 2c 20 6e 5f 61 6c 70 68 61 29 3a 0a | 2)..for.i.in.range(0,.n_alpha):. |
7560 | 20 20 20 20 61 6c 70 68 61 20 3d 20 61 6c 70 68 61 5f 6c 69 73 74 5b 69 5d 0a 20 20 20 20 77 65 | ....alpha.=.alpha_list[i].....we |
7580 | 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 31 20 2d 20 61 6c 70 68 61 2c 20 61 6c 70 | ights.=.np.array([1.-.alpha,.alp |
75a0 | 68 61 5d 29 0a 20 20 20 20 42 5f 6c 32 5b 3a 2c 20 69 5d 20 3d 20 41 2e 64 6f 74 28 77 65 69 67 | ha]).....B_l2[:,.i].=.A.dot(weig |
75c0 | 68 74 73 29 0a 20 20 20 20 42 5f 77 61 73 73 5b 3a 2c 20 69 5d 20 3d 20 6f 74 2e 62 72 65 67 6d | hts).....B_wass[:,.i].=.ot.bregm |
75e0 | 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 | an.barycenter(A,.M,.reg,.weights |
7600 | 29 0a 0a 23 25 25 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 0a 0a 70 6c 2e 66 69 | )..#%%.plot.interpolation..pl.fi |
7620 | 67 75 72 65 28 33 29 0a 0a 63 6d 61 70 20 3d 20 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 | gure(3)..cmap.=.pl.cm.get_cmap(' |
7640 | 76 69 72 69 64 69 73 27 29 0a 76 65 72 74 73 20 3d 20 5b 5d 0a 7a 73 20 3d 20 61 6c 70 68 61 5f | viridis').verts.=.[].zs.=.alpha_ |
7660 | 6c 69 73 74 0a 66 6f 72 20 69 2c 20 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 0a | list.for.i,.z.in.enumerate(zs):. |
7680 | 20 20 20 20 79 73 20 3d 20 42 5f 6c 32 5b 3a 2c 20 69 5d 0a 20 20 20 20 76 65 72 74 73 2e 61 70 | ....ys.=.B_l2[:,.i].....verts.ap |
76a0 | 70 65 6e 64 28 6c 69 73 74 28 7a 69 70 28 78 2c 20 79 73 29 29 29 0a 0a 61 78 20 3d 20 70 6c 2e | pend(list(zip(x,.ys)))..ax.=.pl. |
76c0 | 67 63 66 28 29 2e 67 63 61 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0a 0a 70 6f 6c 79 | gcf().gca(projection='3d')..poly |
76e0 | 20 3d 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 20 66 61 63 65 63 6f 6c | .=.PolyCollection(verts,.facecol |
7700 | 6f 72 73 3d 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 5f 6c 69 73 74 | ors=[cmap(a).for.a.in.alpha_list |
7720 | 5d 29 0a 70 6f 6c 79 2e 73 65 74 5f 61 6c 70 68 61 28 30 2e 37 29 0a 61 78 2e 61 64 64 5f 63 6f | ]).poly.set_alpha(0.7).ax.add_co |
7740 | 6c 6c 65 63 74 69 6f 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 | llection3d(poly,.zs=zs,.zdir='y' |
7760 | 29 0a 61 78 2e 73 65 74 5f 78 6c 61 62 65 6c 28 27 78 27 29 0a 61 78 2e 73 65 74 5f 78 6c 69 6d | ).ax.set_xlabel('x').ax.set_xlim |
7780 | 33 64 28 30 2c 20 6e 29 0a 61 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 61 6c 70 68 61 | 3d(0,.n).ax.set_ylabel('$\\alpha |
77a0 | 24 27 29 0a 61 78 2e 73 65 74 5f 79 6c 69 6d 33 64 28 30 2c 20 31 29 0a 61 78 2e 73 65 74 5f 7a | $').ax.set_ylim3d(0,.1).ax.set_z |
77c0 | 6c 61 62 65 6c 28 27 27 29 0a 61 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 2e | label('').ax.set_zlim3d(0,.B_l2. |
77e0 | 6d 61 78 28 29 20 2a 20 31 2e 30 31 29 0a 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 | max().*.1.01).pl.title('Barycent |
7800 | 65 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 77 69 74 68 20 6c 32 27 29 0a 70 6c 2e 74 69 | er.interpolation.with.l2').pl.ti |
7820 | 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 63 6d 61 70 20 | ght_layout()..pl.figure(4).cmap. |
7840 | 3d 20 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 76 69 72 69 64 69 73 27 29 0a 76 65 72 74 | =.pl.cm.get_cmap('viridis').vert |
7860 | 73 20 3d 20 5b 5d 0a 7a 73 20 3d 20 61 6c 70 68 61 5f 6c 69 73 74 0a 66 6f 72 20 69 2c 20 7a 20 | s.=.[].zs.=.alpha_list.for.i,.z. |
7880 | 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 0a 20 20 20 20 79 73 20 3d 20 42 5f 77 61 73 | in.enumerate(zs):.....ys.=.B_was |
78a0 | 73 5b 3a 2c 20 69 5d 0a 20 20 20 20 76 65 72 74 73 2e 61 70 70 65 6e 64 28 6c 69 73 74 28 7a 69 | s[:,.i].....verts.append(list(zi |
78c0 | 70 28 78 2c 20 79 73 29 29 29 0a 0a 61 78 20 3d 20 70 6c 2e 67 63 66 28 29 2e 67 63 61 28 70 72 | p(x,.ys)))..ax.=.pl.gcf().gca(pr |
78e0 | 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0a 0a 70 6f 6c 79 20 3d 20 50 6f 6c 79 43 6f 6c 6c 65 | ojection='3d')..poly.=.PolyColle |
7900 | 63 74 69 6f 6e 28 76 65 72 74 73 2c 20 66 61 63 65 63 6f 6c 6f 72 73 3d 5b 63 6d 61 70 28 61 29 | ction(verts,.facecolors=[cmap(a) |
7920 | 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 5f 6c 69 73 74 5d 29 0a 70 6f 6c 79 2e 73 65 74 5f | .for.a.in.alpha_list]).poly.set_ |
7940 | 61 6c 70 68 61 28 30 2e 37 29 0a 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 74 69 6f 6e 33 64 28 70 | alpha(0.7).ax.add_collection3d(p |
7960 | 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 0a 61 78 2e 73 65 74 5f 78 6c 61 | oly,.zs=zs,.zdir='y').ax.set_xla |
7980 | 62 65 6c 28 27 78 27 29 0a 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 2c 20 6e 29 0a 61 78 2e | bel('x').ax.set_xlim3d(0,.n).ax. |
79a0 | 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 61 6c 70 68 61 24 27 29 0a 61 78 2e 73 65 74 5f 79 | set_ylabel('$\\alpha$').ax.set_y |
79c0 | 6c 69 6d 33 64 28 30 2c 20 31 29 0a 61 78 2e 73 65 74 5f 7a 6c 61 62 65 6c 28 27 27 29 0a 61 78 | lim3d(0,.1).ax.set_zlabel('').ax |
79e0 | 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 2e 6d 61 78 28 29 20 2a 20 31 2e 30 31 | .set_zlim3d(0,.B_l2.max().*.1.01 |
7a00 | 29 0a 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 | ).pl.title('Barycenter.interpola |
7a20 | 74 69 6f 6e 20 77 69 74 68 20 57 61 73 73 65 72 73 74 65 69 6e 27 29 0a 70 6c 2e 74 69 67 68 74 | tion.with.Wasserstein').pl.tight |
7a40 | 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 17 | _layout()..pl.show().PK......... |
7a60 | 78 50 4c 60 f3 2a fb 00 11 00 00 00 11 00 00 14 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 | xPL`.*.............plot_otda_cla |
7a80 | 73 73 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 | sses.py#.-*-.coding:.utf-8.-*-." |
7aa0 | 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 | "".========================.OT.f |
7ac0 | 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | or.domain.adaptation.=========== |
7ae0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 | =============..This.example.intr |
7b00 | 6f 64 75 63 65 73 20 61 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 | oduces.a.domain.adaptation.in.a. |
7b20 | 32 44 20 73 65 74 74 69 6e 67 20 61 6e 64 20 74 68 65 20 34 20 4f 54 44 41 0a 61 70 70 72 6f 61 | 2D.setting.and.the.4.OTDA.approa |
7b40 | 63 68 65 73 20 63 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 65 64 20 69 6e 20 50 4f 54 2e | ches.currently.supported.in.POT. |
7b60 | 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c | .."""..#.Authors:.Remi.Flamary.< |
7b80 | 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 20 20 20 20 20 20 20 20 | remi.flamary@unice.fr>.#........ |
7ba0 | 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f | ..Stanislas.Chambon.<stan.chambo |
7bc0 | 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 | n@gmail.com>.#.#.License:.MIT.Li |
7be0 | 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 | cense..import.matplotlib.pylab.a |
7c00 | 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | s.pl.import.ot...############### |
7c20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7c40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a | ###############################. |
7c60 | 23 20 47 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a | #.Generate.data.#.-------------. |
7c80 | 0a 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 20 3d 20 31 35 30 0a 6e 5f 74 61 72 67 65 74 | .n_source_samples.=.150.n_target |
7ca0 | 5f 73 61 6d 70 6c 65 73 20 3d 20 31 35 30 0a 0a 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 | _samples.=.150..Xs,.ys.=.ot.data |
7cc0 | 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 20 | sets.get_data_classif('3gauss',. |
7ce0 | 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 29 0a 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 | n_source_samples).Xt,.yt.=.ot.da |
7d00 | 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 | tasets.get_data_classif('3gauss2 |
7d20 | 27 2c 20 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 | ',.n_target_samples)...######### |
7d40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7d60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7d80 | 23 23 23 23 23 0a 23 20 49 6e 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e | #####.#.Instantiate.the.differen |
7da0 | 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 | t.transport.algorithms.and.fit.t |
7dc0 | 68 65 6d 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | hem.#.-------------------------- |
7de0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
7e00 | 2d 0a 0a 23 20 45 4d 44 20 54 72 61 6e 73 70 6f 72 74 0a 6f 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 | -..#.EMD.Transport.ot_emd.=.ot.d |
7e20 | 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 0a 6f 74 5f 65 6d 64 2e 66 69 74 28 58 73 3d 58 | a.EMDTransport().ot_emd.fit(Xs=X |
7e40 | 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 0a | s,.Xt=Xt)..#.Sinkhorn.Transport. |
7e60 | 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e | ot_sinkhorn.=.ot.da.SinkhornTran |
7e80 | 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 | sport(reg_e=1e-1).ot_sinkhorn.fi |
7ea0 | 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e | t(Xs=Xs,.Xt=Xt)..#.Sinkhorn.Tran |
7ec0 | 73 70 6f 72 74 20 77 69 74 68 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a | sport.with.Group.lasso.regulariz |
7ee0 | 61 74 69 6f 6e 0a 6f 74 5f 6c 70 6c 31 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 70 | ation.ot_lpl1.=.ot.da.SinkhornLp |
7f00 | 6c 31 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 31 | l1Transport(reg_e=1e-1,.reg_cl=1 |
7f20 | 65 30 29 0a 6f 74 5f 6c 70 6c 31 2e 66 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 | e0).ot_lpl1.fit(Xs=Xs,.ys=ys,.Xt |
7f40 | 3d 58 74 29 0a 0a 23 20 53 69 6e 6b 68 6f 72 6e 20 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 | =Xt)..#.Sinkhorn.Transport.with. |
7f60 | 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 6c 31 6c 32 0a | Group.lasso.regularization.l1l2. |
7f80 | 6f 74 5f 6c 31 6c 32 20 3d 20 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 61 6e | ot_l1l2.=.ot.da.SinkhornL1l2Tran |
7fa0 | 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 2c 20 72 65 67 5f 63 6c 3d 32 65 30 2c 20 6d 61 | sport(reg_e=1e-1,.reg_cl=2e0,.ma |
7fc0 | 78 5f 69 74 65 72 3d 32 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | x_iter=20,...................... |
7fe0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 6f | .................verbose=True).o |
8000 | 74 5f 6c 31 6c 32 2e 66 69 74 28 58 73 3d 58 73 2c 20 79 73 3d 79 73 2c 20 58 74 3d 58 74 29 0a | t_l1l2.fit(Xs=Xs,.ys=ys,.Xt=Xt). |
8020 | 0a 23 20 74 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 20 6f 6e 74 6f | .#.transport.source.samples.onto |
8040 | 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 0a 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 | .target.samples.transp_Xs_emd.=. |
8060 | 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 74 72 61 6e 73 70 5f 58 | ot_emd.transform(Xs=Xs).transp_X |
8080 | 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 74 72 61 6e 73 66 6f | s_sinkhorn.=.ot_sinkhorn.transfo |
80a0 | 72 6d 28 58 73 3d 58 73 29 0a 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 20 3d 20 6f 74 5f 6c 70 | rm(Xs=Xs).transp_Xs_lpl1.=.ot_lp |
80c0 | 6c 31 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 74 72 61 6e 73 70 5f 58 73 5f 6c 31 | l1.transform(Xs=Xs).transp_Xs_l1 |
80e0 | 6c 32 20 3d 20 6f 74 5f 6c 31 6c 32 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 0a | l2.=.ot_l1l2.transform(Xs=Xs)... |
8100 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8120 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8140 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 31 20 3a 20 70 6c 6f 74 73 20 73 | ##############.#.Fig.1.:.plots.s |
8160 | 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 0a 23 20 2d 2d 2d 2d 2d | ource.and.target.samples.#.----- |
8180 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
81a0 | 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 35 29 | --..pl.figure(1,.figsize=(10,.5) |
81c0 | 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 | ).pl.subplot(1,.2,.1).pl.scatter |
81e0 | 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 | (Xs[:,.0],.Xs[:,.1],.c=ys,.marke |
8200 | 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 | r='+',.label='Source.samples').p |
8220 | 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 6c 65 | l.xticks([]).pl.yticks([]).pl.le |
8240 | 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 73 61 | gend(loc=0).pl.title('Source..sa |
8260 | 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e | mples')..pl.subplot(1,.2,.2).pl. |
8280 | 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 | scatter(Xt[:,.0],.Xt[:,.1],.c=yt |
82a0 | 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 | ,.marker='o',.label='Target.samp |
82c0 | 6c 65 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d | les').pl.xticks([]).pl.yticks([] |
82e0 | 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 | ).pl.legend(loc=0).pl.title('Tar |
8300 | 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a | get.samples').pl.tight_layout(). |
8320 | 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ..############################## |
8340 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8360 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 32 20 3a 20 70 6c 6f 74 20 | ################.#.Fig.2.:.plot. |
8380 | 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 20 61 6e 64 20 74 72 61 6e 73 70 6f 72 74 65 | optimal.couplings.and.transporte |
83a0 | 64 20 73 61 6d 70 6c 65 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | d.samples.#.-------------------- |
83c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
83e0 | 2d 2d 0a 0a 70 61 72 61 6d 5f 69 6d 67 20 3d 20 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 27 | --..param_img.=.{'interpolation' |
8400 | 3a 20 27 6e 65 61 72 65 73 74 27 2c 20 27 63 6d 61 70 27 3a 20 27 73 70 65 63 74 72 61 6c 27 7d | :.'nearest',.'cmap':.'spectral'} |
8420 | 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 35 2c 20 38 29 29 0a | ..pl.figure(2,.figsize=(15,.8)). |
8440 | 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 | pl.subplot(2,.4,.1).pl.imshow(ot |
8460 | 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e | _emd.coupling_,.**param_img).pl. |
8480 | 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c | xticks([]).pl.yticks([]).pl.titl |
84a0 | 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 | e('Optimal.coupling\nEMDTranspor |
84c0 | 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 | t')..pl.subplot(2,.4,.2).pl.imsh |
84e0 | 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 | ow(ot_sinkhorn.coupling_,.**para |
8500 | 6d 5f 69 6d 67 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b | m_img).pl.xticks([]).pl.yticks([ |
8520 | 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 53 | ]).pl.title('Optimal.coupling\nS |
8540 | 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 | inkhornTransport')..pl.subplot(2 |
8560 | 2c 20 34 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c 69 | ,.4,.3).pl.imshow(ot_lpl1.coupli |
8580 | 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a | ng_,.**param_img).pl.xticks([]). |
85a0 | 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 | pl.yticks([]).pl.title('Optimal. |
85c0 | 63 6f 75 70 6c 69 6e 67 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 | coupling\nSinkhornLpl1Transport' |
85e0 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 | )..pl.subplot(2,.4,.4).pl.imshow |
8600 | 28 6f 74 5f 6c 31 6c 32 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 | (ot_l1l2.coupling_,.**param_img) |
8620 | 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e | .pl.xticks([]).pl.yticks([]).pl. |
8640 | 74 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 53 69 6e 6b 68 6f 72 | title('Optimal.coupling\nSinkhor |
8660 | 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 | nL1l2Transport')..pl.subplot(2,. |
8680 | 34 2c 20 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c | 4,.5).pl.scatter(Xt[:,.0],.Xt[:, |
86a0 | 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 | .1],.c=yt,.marker='o',.......... |
86c0 | 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d | ..label='Target.samples',.alpha= |
86e0 | 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c | 0.3).pl.scatter(transp_Xs_emd[:, |
8700 | 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a | .0],.transp_Xs_emd[:,.1],.c=ys,. |
8720 | 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 | ...........marker='+',.label='Tr |
8740 | 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b | ansp.samples',.s=30).pl.xticks([ |
8760 | 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 | ]).pl.yticks([]).pl.title('Trans |
8780 | 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 | ported.samples\nEmdTransport').p |
87a0 | 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 22 6c 6f 77 65 72 20 6c 65 66 74 22 29 0a 0a 70 6c 2e 73 | l.legend(loc="lower.left")..pl.s |
87c0 | 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 36 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c | ubplot(2,.4,.6).pl.scatter(Xt[:, |
87e0 | 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c | .0],.Xt[:,.1],.c=yt,.marker='o', |
8800 | 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 | ............label='Target.sample |
8820 | 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 | s',.alpha=0.3).pl.scatter(transp |
8840 | 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 73 69 | _Xs_sinkhorn[:,.0],.transp_Xs_si |
8860 | 6e 6b 68 6f 72 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6d | nkhorn[:,.1],.c=ys,............m |
8880 | 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 | arker='+',.label='Transp.samples |
88a0 | 27 2c 20 73 3d 33 30 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 | ',.s=30).pl.xticks([]).pl.yticks |
88c0 | 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c | ([]).pl.title('Transported.sampl |
88e0 | 65 73 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 | es\nSinkhornTransport')..pl.subp |
8900 | 6c 6f 74 28 32 2c 20 34 2c 20 37 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d | lot(2,.4,.7).pl.scatter(Xt[:,.0] |
8920 | 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 | ,.Xt[:,.1],.c=yt,.marker='o',... |
8940 | 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c | .........label='Target.samples', |
8960 | 20 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 | .alpha=0.3).pl.scatter(transp_Xs |
8980 | 5f 6c 70 6c 31 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 70 6c 31 5b 3a 2c 20 31 | _lpl1[:,.0],.transp_Xs_lpl1[:,.1 |
89a0 | 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 | ],.c=ys,............marker='+',. |
89c0 | 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 0a 70 6c | label='Transp.samples',.s=30).pl |
89e0 | 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 | .xticks([]).pl.yticks([]).pl.tit |
8a00 | 6c 65 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 53 69 6e 6b 68 6f 72 | le('Transported.samples\nSinkhor |
8a20 | 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 | nLpl1Transport')..pl.subplot(2,. |
8a40 | 34 2c 20 38 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c | 4,.8).pl.scatter(Xt[:,.0],.Xt[:, |
8a60 | 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 | .1],.c=yt,.marker='o',.......... |
8a80 | 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d | ..label='Target.samples',.alpha= |
8aa0 | 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a | 0.3).pl.scatter(transp_Xs_l1l2[: |
8ac0 | 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 | ,.0],.transp_Xs_l1l2[:,.1],.c=ys |
8ae0 | 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 | ,............marker='+',.label=' |
8b00 | 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 0a 70 6c 2e 78 74 69 63 6b 73 | Transp.samples',.s=30).pl.xticks |
8b20 | 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 | ([]).pl.yticks([]).pl.title('Tra |
8b40 | 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 31 6c 32 54 72 | nsported.samples\nSinkhornL1l2Tr |
8b60 | 61 6e 73 70 6f 72 74 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e | ansport').pl.tight_layout()..pl. |
8b80 | 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c 1a d1 23 82 4f 10 00 00 4f 10 00 | show().PK.........xPL..#.O...O.. |
8ba0 | 00 22 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 73 5f 69 6d | ."...plot_otda_mapping_colors_im |
8bc0 | 61 67 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 | ages.py#.-*-.coding:.utf-8.-*-." |
8be0 | 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | "".============================= |
8c00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 | ========================.OT.for. |
8c20 | 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 6d 61 70 70 | image.color.adaptation.with.mapp |
8c40 | 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ing.estimation.================= |
8c60 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
8c80 | 3d 3d 3d 3d 0a 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 | ====..OT.for.domain.adaptation.w |
8ca0 | 69 74 68 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 20 77 | ith.image.color.adaptation.[6].w |
8cc0 | 69 74 68 20 6d 61 70 70 69 6e 67 0a 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 2e 0a 0a 5b 36 5d | ith.mapping.estimation.[8]...[6] |
8ce0 | 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 | .Ferradans,.S.,.Papadakis,.N.,.P |
8d00 | 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e | eyre,.G.,.&.Aujol,.J..F..(2014). |
8d20 | 20 52 65 67 75 6c 61 72 69 7a 65 64 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 | .Regularized.....discrete.optima |
8d40 | 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 | l.transport..SIAM.Journal.on.Ima |
8d60 | 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 0a 20 20 20 20 31 38 35 33 2d 31 38 | ging.Sciences,.7(3),.....1853-18 |
8d80 | 38 32 2e 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e | 82..[8].M..Perrot,.N..Courty,.R. |
8da0 | 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 20 22 4d 61 70 70 69 6e 67 20 65 | .Flamary,.A..Habrard,."Mapping.e |
8dc0 | 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d | stimation.for.....discrete.optim |
8de0 | 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f | al.transport",.Neural.Informatio |
8e00 | 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c 0a 20 20 20 | n.Processing.Systems.(NIPS),.... |
8e20 | 20 32 30 31 36 2e 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 | .2016..."""..#.Authors:.Remi.Fla |
8e40 | 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 20 20 | mary.<remi.flamary@unice.fr>.#.. |
8e60 | 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e | ........Stanislas.Chambon.<stan. |
8e80 | 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 | chambon@gmail.com>.#.#.License:. |
8ea0 | 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a | MIT.License..import.numpy.as.np. |
8ec0 | 66 72 6f 6d 20 73 63 69 70 79 20 69 6d 70 6f 72 74 20 6e 64 69 6d 61 67 65 0a 69 6d 70 6f 72 74 | from.scipy.import.ndimage.import |
8ee0 | 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f | .matplotlib.pylab.as.pl.import.o |
8f00 | 74 0a 0a 72 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 34 32 29 | t..r.=.np.random.RandomState(42) |
8f20 | 0a 0a 0a 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 | ...def.im2mat(I):....."""Convert |
8f40 | 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c | s.and.image.to.matrix.(one.pixel |
8f60 | 20 70 65 72 20 6c 69 6e 65 29 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 | .per.line)""".....return.I.resha |
8f80 | 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 | pe((I.shape[0].*.I.shape[1],.I.s |
8fa0 | 68 61 70 65 5b 32 5d 29 29 0a 0a 0a 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 | hape[2]))...def.mat2im(X,.shape) |
8fc0 | 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 | :....."""Converts.back.a.matrix. |
8fe0 | 74 6f 20 61 6e 20 69 6d 61 67 65 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 | to.an.image""".....return.X.resh |
9000 | 61 70 65 28 73 68 61 70 65 29 0a 0a 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 0a 20 20 20 20 | ape(shape)...def.minmax(I):..... |
9020 | 72 65 74 75 72 6e 20 6e 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 0a 0a 0a 23 23 23 23 23 23 | return.np.clip(I,.0,.1)...###### |
9040 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9060 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9080 | 23 23 23 23 23 23 23 23 0a 23 20 47 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d | ########.#.Generate.data.#.----- |
90a0 | 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a 49 31 20 3d 20 | --------..#.Loading.images.I1.=. |
90c0 | 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 | ndimage.imread('../data/ocean_da |
90e0 | 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 | y.jpg').astype(np.float64)./.256 |
9100 | 0a 49 32 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 | .I2.=.ndimage.imread('../data/oc |
9120 | 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 | ean_sunset.jpg').astype(np.float |
9140 | 36 34 29 20 2f 20 32 35 36 0a 0a 0a 58 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 29 0a 58 32 20 3d | 64)./.256...X1.=.im2mat(I1).X2.= |
9160 | 20 69 6d 32 6d 61 74 28 49 32 29 0a 0a 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 0a | .im2mat(I2)..#.training.samples. |
9180 | 6e 62 20 3d 20 31 30 30 30 0a 69 64 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 | nb.=.1000.idx1.=.r.randint(X1.sh |
91a0 | 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 69 64 78 32 20 3d 20 72 2e 72 61 6e | ape[0],.size=(nb,)).idx2.=.r.ran |
91c0 | 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 0a 58 | dint(X2.shape[0],.size=(nb,))..X |
91e0 | 73 20 3d 20 58 31 5b 69 64 78 31 2c 20 3a 5d 0a 58 74 20 3d 20 58 32 5b 69 64 78 32 2c 20 3a 5d | s.=.X1[idx1,.:].Xt.=.X2[idx2,.:] |
9200 | 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ...############################# |
9220 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9240 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 44 6f 6d 61 69 6e 20 61 64 61 70 74 | #################.#.Domain.adapt |
9260 | 61 74 69 6f 6e 20 66 6f 72 20 70 69 78 65 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 74 72 61 | ation.for.pixel.distribution.tra |
9280 | 6e 73 66 65 72 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nsfer.#.------------------------ |
92a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 20 45 4d 44 | -------------------------..#.EMD |
92c0 | 54 72 61 6e 73 70 6f 72 74 0a 6f 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e | Transport.ot_emd.=.ot.da.EMDTran |
92e0 | 73 70 6f 72 74 28 29 0a 6f 74 5f 65 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 | sport().ot_emd.fit(Xs=Xs,.Xt=Xt) |
9300 | 0a 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 | .transp_Xs_emd.=.ot_emd.transfor |
9320 | 6d 28 58 73 3d 58 31 29 0a 49 6d 61 67 65 5f 65 6d 64 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 | m(Xs=X1).Image_emd.=.minmax(mat2 |
9340 | 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 0a 23 20 | im(transp_Xs_emd,.I1.shape))..#. |
9360 | 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 | SinkhornTransport.ot_sinkhorn.=. |
9380 | 6f 74 2e 64 61 2e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 | ot.da.SinkhornTransport(reg_e=1e |
93a0 | 2d 31 29 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 | -1).ot_sinkhorn.fit(Xs=Xs,.Xt=Xt |
93c0 | 29 0a 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 | ).transp_Xs_sinkhorn.=.ot_emd.tr |
93e0 | 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 0a 49 6d 61 67 65 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 | ansform(Xs=X1).Image_sinkhorn.=. |
9400 | 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e | minmax(mat2im(transp_Xs_sinkhorn |
9420 | 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 20 | ,.I1.shape))..ot_mapping_linear. |
9440 | 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6d 75 | =.ot.da.MappingTransport(.....mu |
9460 | 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 6d 61 78 5f 69 | =1e0,.eta=1e-8,.bias=True,.max_i |
9480 | 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 | ter=20,.verbose=True).ot_mapping |
94a0 | 5f 6c 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 58 31 74 6c 20 | _linear.fit(Xs=Xs,.Xt=Xt)..X1tl. |
94c0 | 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 | =.ot_mapping_linear.transform(Xs |
94e0 | 3d 58 31 29 0a 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6d 69 6e 6d | =X1).Image_mapping_linear.=.minm |
9500 | 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6c 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 0a 6f 74 5f 6d | ax(mat2im(X1tl,.I1.shape))..ot_m |
9520 | 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 | apping_gaussian.=.ot.da.MappingT |
9540 | 72 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6d 75 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 32 2c 20 | ransport(.....mu=1e0,.eta=1e-2,. |
9560 | 73 69 67 6d 61 3d 31 2c 20 62 69 61 73 3d 46 61 6c 73 65 2c 20 6d 61 78 5f 69 74 65 72 3d 31 30 | sigma=1,.bias=False,.max_iter=10 |
9580 | 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 | ,.verbose=True).ot_mapping_gauss |
95a0 | 69 61 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 58 31 74 6e 20 3d 20 6f 74 | ian.fit(Xs=Xs,.Xt=Xt)..X1tn.=.ot |
95c0 | 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 | _mapping_gaussian.transform(Xs=X |
95e0 | 31 29 20 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 0a | 1)..#.use.the.estimated.mapping. |
9600 | 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6d 69 6e 6d 61 78 28 | Image_mapping_gaussian.=.minmax( |
9620 | 6d 61 74 32 69 6d 28 58 31 74 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 0a 0a 23 23 23 23 23 23 | mat2im(X1tn,.I1.shape))...###### |
9640 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9660 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9680 | 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 73 0a | ########.#.Plot.original.images. |
96a0 | 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 | #.--------------------..pl.figur |
96c0 | 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 0a 70 6c 2e 73 75 62 70 6c 6f | e(1,.figsize=(6.4,.3)).pl.subplo |
96e0 | 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 61 78 69 73 | t(1,.2,.1).pl.imshow(I1).pl.axis |
9700 | 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e | ('off').pl.title('Image.1')..pl. |
9720 | 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 | subplot(1,.2,.2).pl.imshow(I2).p |
9740 | 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 | l.axis('off').pl.title('Image.2' |
9760 | 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 | ).pl.tight_layout()...########## |
9780 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
97a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
97c0 | 23 23 23 23 0a 23 20 50 6c 6f 74 20 70 69 78 65 6c 20 76 61 6c 75 65 73 20 64 69 73 74 72 69 62 | ####.#.Plot.pixel.values.distrib |
97e0 | 75 74 69 6f 6e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ution.#.------------------------ |
9800 | 2d 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e | ------..pl.figure(2,.figsize=(6. |
9820 | 34 2c 20 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 | 4,.5))..pl.subplot(1,.2,.1).pl.s |
9840 | 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 32 5d 2c 20 63 3d 58 73 29 | catter(Xs[:,.0],.Xs[:,.2],.c=Xs) |
9860 | 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c | .pl.axis([0,.1,.0,.1]).pl.xlabel |
9880 | 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 69 74 | ('Red').pl.ylabel('Blue').pl.tit |
98a0 | 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 | le('Image.1')..pl.subplot(1,.2,. |
98c0 | 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 32 5d | 2).pl.scatter(Xt[:,.0],.Xt[:,.2] |
98e0 | 2c 20 63 3d 58 74 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 0a 70 6c | ,.c=Xt).pl.axis([0,.1,.0,.1]).pl |
9900 | 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 | .xlabel('Red').pl.ylabel('Blue') |
9920 | 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 | .pl.title('Image.2').pl.tight_la |
9940 | 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | yout()...####################### |
9960 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9980 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 74 | #######################.#.Plot.t |
99a0 | 72 61 6e 73 66 6f 72 6d 65 64 20 69 6d 61 67 65 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ransformed.images.#.------------ |
99c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a | -----------..pl.figure(2,.figsiz |
99e0 | 65 3d 28 31 30 2c 20 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 31 29 0a | e=(10,.5))..pl.subplot(2,.3,.1). |
9a00 | 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e | pl.imshow(I1).pl.axis('off').pl. |
9a20 | 74 69 74 6c 65 28 27 49 6d 2e 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c | title('Im..1')..pl.subplot(2,.3, |
9a40 | 20 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 | .4).pl.imshow(I2).pl.axis('off') |
9a60 | 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 | .pl.title('Im..2')..pl.subplot(2 |
9a80 | 2c 20 33 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 67 65 5f 65 6d 64 29 0a 70 6c 2e | ,.3,.2).pl.imshow(Image_emd).pl. |
9aa0 | 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 45 6d 64 54 72 61 6e 73 70 6f | axis('off').pl.title('EmdTranspo |
9ac0 | 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 35 29 0a 70 6c 2e 69 6d 73 | rt')..pl.subplot(2,.3,.5).pl.ims |
9ae0 | 68 6f 77 28 49 6d 61 67 65 5f 73 69 6e 6b 68 6f 72 6e 29 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 | how(Image_sinkhorn).pl.axis('off |
9b00 | 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 | ').pl.title('SinkhornTransport') |
9b20 | 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 | ..pl.subplot(2,.3,.3).pl.imshow( |
9b40 | 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 29 0a 70 6c 2e 61 78 69 73 28 27 6f | Image_mapping_linear).pl.axis('o |
9b60 | 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 | ff').pl.title('MappingTransport. |
9b80 | 28 6c 69 6e 65 61 72 29 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 36 29 0a | (linear)')..pl.subplot(2,.3,.6). |
9ba0 | 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e | pl.imshow(Image_mapping_gaussian |
9bc0 | 29 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4d 61 70 70 69 | ).pl.axis('off').pl.title('Mappi |
9be0 | 6e 67 54 72 61 6e 73 70 6f 72 74 20 28 67 61 75 73 73 69 61 6e 29 27 29 0a 70 6c 2e 74 69 67 68 | ngTransport.(gaussian)').pl.tigh |
9c00 | 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 | t_layout()..pl.show().PK........ |
9c20 | 17 78 50 4c 10 25 96 fd 88 13 00 00 88 13 00 00 13 00 00 00 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 | .xPL.%..............plot_OT_L1_v |
9c40 | 73 5f 4c 32 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 | s_L2.py#.-*-.coding:.utf-8.-*-." |
9c60 | 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | "".============================= |
9c80 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f | =============.2D.Optimal.transpo |
9ca0 | 72 74 20 66 6f 72 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 72 69 63 73 0a 3d 3d 3d 3d 3d 3d 3d | rt.for.different.metrics.======= |
9cc0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
9ce0 | 3d 3d 3d 0a 0a 32 44 20 4f 54 20 6f 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 | ===..2D.OT.on.empirical.distribu |
9d00 | 74 69 6f 20 20 77 69 74 68 20 64 69 66 66 65 72 65 6e 74 20 67 6f 75 6e 64 20 6d 65 74 72 69 63 | tio..with.different.gound.metric |
9d20 | 2e 0a 0a 53 74 6f 6c 65 20 74 68 65 20 66 69 67 75 72 65 20 69 64 65 61 20 66 72 6f 6d 20 46 69 | ...Stole.the.figure.idea.from.Fi |
9d40 | 67 2e 20 31 20 61 6e 64 20 32 20 69 6e 0a 68 74 74 70 73 3a 2f 2f 61 72 78 69 76 2e 6f 72 67 2f | g..1.and.2.in.https://arxiv.org/ |
9d60 | 70 64 66 2f 31 37 30 36 2e 30 37 36 35 30 2e 70 64 66 0a 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 | pdf/1706.07650.pdf..."""..#.Auth |
9d80 | 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 | or:.Remi.Flamary.<remi.flamary@u |
9da0 | 6e 69 63 65 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 | nice.fr>.#.#.License:.MIT.Licens |
9dc0 | 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 | e..import.numpy.as.np.import.mat |
9de0 | 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 69 6d | plotlib.pylab.as.pl.import.ot.im |
9e00 | 70 6f 72 74 20 6f 74 2e 70 6c 6f 74 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | port.ot.plot..################## |
9e20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
9e40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 44 | ############################.#.D |
9e60 | 61 74 61 73 65 74 20 31 20 3a 20 75 6e 69 66 6f 72 6d 20 73 61 6d 70 6c 69 6e 67 0a 23 20 2d 2d | ataset.1.:.uniform.sampling.#.-- |
9e80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 6e 20 3d 20 | --------------------------..n.=. |
9ea0 | 32 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0a 78 73 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 | 20..#.nb.samples.xs.=.np.zeros(( |
9ec0 | 6e 2c 20 32 29 29 0a 78 73 5b 3a 2c 20 30 5d 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b | n,.2)).xs[:,.0].=.np.arange(n).+ |
9ee0 | 20 31 0a 78 73 5b 3a 2c 20 31 5d 20 3d 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 29 | .1.xs[:,.1].=.(np.arange(n).+.1) |
9f00 | 20 2a 20 2d 30 2e 30 30 31 20 20 23 20 74 6f 20 6d 61 6b 65 20 69 74 20 73 74 72 69 63 74 6c 79 | .*.-0.001..#.to.make.it.strictly |
9f20 | 20 63 6f 6e 76 65 78 2e 2e 2e 0a 0a 78 74 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 20 32 29 | .convex.....xt.=.np.zeros((n,.2) |
9f40 | 29 0a 78 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 0a 0a 61 | ).xt[:,.1].=.np.arange(n).+.1..a |
9f60 | 2c 20 62 20 3d 20 6f 74 2e 75 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 6e 29 20 20 23 20 | ,.b.=.ot.unif(n),.ot.unif(n)..#. |
9f80 | 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a | uniform.distribution.on.samples. |
9fa0 | 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 31 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 | .#.loss.matrix.M1.=.ot.dist(xs,. |
9fc0 | 78 74 2c 20 6d 65 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 31 20 2f 3d 20 4d 31 | xt,.metric='euclidean').M1./=.M1 |
9fe0 | 2e 6d 61 78 28 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 32 20 3d 20 6f 74 2e 64 69 | .max()..#.loss.matrix.M2.=.ot.di |
a000 | 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 | st(xs,.xt,.metric='sqeuclidean') |
a020 | 0a 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d | .M2./=.M2.max()..#.loss.matrix.M |
a040 | 70 20 3d 20 6e 70 2e 73 71 72 74 28 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 | p.=.np.sqrt(ot.dist(xs,.xt,.metr |
a060 | 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 29 0a 4d 70 20 2f 3d 20 4d 70 2e 6d 61 78 28 29 0a | ic='euclidean')).Mp./=.Mp.max(). |
a080 | 0a 23 20 44 61 74 61 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c | .#.Data.pl.figure(1,.figsize=(7, |
a0a0 | 20 33 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 | .3)).pl.clf().pl.plot(xs[:,.0],. |
a0c0 | 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 | xs[:,.1],.'+b',.label='Source.sa |
a0e0 | 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 | mples').pl.plot(xt[:,.0],.xt[:,. |
a100 | 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 | 1],.'xr',.label='Target.samples' |
a120 | 29 0a 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 | ).pl.axis('equal').pl.title('Sou |
a140 | 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a | rce.and.traget.distributions').. |
a160 | 0a 23 20 43 6f 73 74 20 6d 61 74 72 69 63 65 73 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 | .#.Cost.matrices.pl.figure(2,.fi |
a180 | 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 | gsize=(7,.3))..pl.subplot(1,.3,. |
a1a0 | 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 31 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 | 1).pl.imshow(M1,.interpolation=' |
a1c0 | 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 63 6f | nearest').pl.title('Euclidean.co |
a1e0 | 73 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 0a 70 6c 2e 69 6d 73 | st')..pl.subplot(1,.3,.2).pl.ims |
a200 | 68 6f 77 28 4d 32 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 | how(M2,.interpolation='nearest') |
a220 | 0a 70 6c 2e 74 69 74 6c 65 28 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 | .pl.title('Squared.Euclidean.cos |
a240 | 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 | t')..pl.subplot(1,.3,.3).pl.imsh |
a260 | 6f 77 28 4d 70 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a | ow(Mp,.interpolation='nearest'). |
a280 | 70 6c 2e 74 69 74 6c 65 28 27 53 71 72 74 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a | pl.title('Sqrt.Euclidean.cost'). |
a2a0 | 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | pl.tight_layout()..############# |
a2c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a2e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a300 | 23 0a 23 20 44 61 74 61 73 65 74 20 31 20 3a 20 50 6c 6f 74 20 4f 54 20 4d 61 74 72 69 63 65 73 | #.#.Dataset.1.:.Plot.OT.Matrices |
a320 | 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a | .#.----------------------------. |
a340 | 0a 0a 23 25 25 20 45 4d 44 0a 47 31 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 31 29 0a | ..#%%.EMD.G1.=.ot.emd(a,.b,.M1). |
a360 | 47 32 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 32 29 0a 47 70 20 3d 20 6f 74 2e 65 6d | G2.=.ot.emd(a,.b,.M2).Gp.=.ot.em |
a380 | 64 28 61 2c 20 62 2c 20 4d 70 29 0a 0a 23 20 4f 54 20 6d 61 74 72 69 63 65 73 0a 70 6c 2e 66 69 | d(a,.b,.Mp)..#.OT.matrices.pl.fi |
a3a0 | 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 0a 0a 70 6c 2e 73 75 62 70 | gure(3,.figsize=(7,.3))..pl.subp |
a3c0 | 6c 6f 74 28 31 2c 20 33 2c 20 31 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 | lot(1,.3,.1).ot.plot.plot2D_samp |
a3e0 | 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 31 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 | les_mat(xs,.xt,.G1,.c=[.5,..5,.1 |
a400 | 5d 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 | ]).pl.plot(xs[:,.0],.xs[:,.1],.' |
a420 | 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e | +b',.label='Source.samples').pl. |
a440 | 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c | plot(xt[:,.0],.xt[:,.1],.'xr',.l |
a460 | 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 61 78 69 73 28 27 | abel='Target.samples').pl.axis(' |
a480 | 65 71 75 61 6c 27 29 0a 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 | equal').#.pl.legend(loc=0).pl.ti |
a4a0 | 74 6c 65 28 27 4f 54 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 | tle('OT.Euclidean')..pl.subplot( |
a4c0 | 31 2c 20 33 2c 20 32 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f | 1,.3,.2).ot.plot.plot2D_samples_ |
a4e0 | 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 32 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 | mat(xs,.xt,.G2,.c=[.5,..5,.1]).p |
a500 | 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c | l.plot(xs[:,.0],.xs[:,.1],.'+b', |
a520 | 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 | .label='Source.samples').pl.plot |
a540 | 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c | (xt[:,.0],.xt[:,.1],.'xr',.label |
a560 | 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 61 78 69 73 28 27 65 71 75 61 | ='Target.samples').pl.axis('equa |
a580 | 6c 27 29 0a 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 | l').#.pl.legend(loc=0).pl.title( |
a5a0 | 27 4f 54 20 73 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 | 'OT.squared.Euclidean')..pl.subp |
a5c0 | 6c 6f 74 28 31 2c 20 33 2c 20 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 | lot(1,.3,.3).ot.plot.plot2D_samp |
a5e0 | 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 70 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 | les_mat(xs,.xt,.Gp,.c=[.5,..5,.1 |
a600 | 5d 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 | ]).pl.plot(xs[:,.0],.xs[:,.1],.' |
a620 | 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e | +b',.label='Source.samples').pl. |
a640 | 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c | plot(xt[:,.0],.xt[:,.1],.'xr',.l |
a660 | 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 61 78 69 73 28 27 | abel='Target.samples').pl.axis(' |
a680 | 65 71 75 61 6c 27 29 0a 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 | equal').#.pl.legend(loc=0).pl.ti |
a6a0 | 74 6c 65 28 27 4f 54 20 73 71 72 74 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 70 6c 2e 74 69 67 68 | tle('OT.sqrt.Euclidean').pl.tigh |
a6c0 | 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 | t_layout()..pl.show()...######## |
a6e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a700 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a720 | 23 23 23 23 23 23 0a 23 20 44 61 74 61 73 65 74 20 32 20 3a 20 50 61 72 74 69 61 6c 20 63 69 72 | ######.#.Dataset.2.:.Partial.cir |
a740 | 63 6c 65 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | cle.#.-------------------------- |
a760 | 0a 0a 6e 20 3d 20 35 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0a 78 74 6f 74 20 3d 20 6e 70 | ..n.=.50..#.nb.samples.xtot.=.np |
a780 | 2e 7a 65 72 6f 73 28 28 6e 20 2b 20 31 2c 20 32 29 29 0a 78 74 6f 74 5b 3a 2c 20 30 5d 20 3d 20 | .zeros((n.+.1,.2)).xtot[:,.0].=. |
a7a0 | 6e 70 2e 63 6f 73 28 0a 20 20 20 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 20 2b 20 31 29 20 2b 20 | np.cos(.....(np.arange(n.+.1).+. |
a7c0 | 31 2e 30 29 20 2a 20 30 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 | 1.0).*.0.9./.(n.+.2).*.2.*.np.pi |
a7e0 | 29 0a 78 74 6f 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 2e 73 69 6e 28 0a 20 20 20 20 28 6e 70 2e 61 | ).xtot[:,.1].=.np.sin(.....(np.a |
a800 | 72 61 6e 67 65 28 6e 20 2b 20 31 29 20 2b 20 31 2e 30 29 20 2a 20 30 2e 39 20 2f 20 28 6e 20 2b | range(n.+.1).+.1.0).*.0.9./.(n.+ |
a820 | 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 29 0a 0a 78 73 20 3d 20 78 74 6f 74 5b 3a 6e 2c 20 | .2).*.2.*.np.pi)..xs.=.xtot[:n,. |
a840 | 3a 5d 0a 78 74 20 3d 20 78 74 6f 74 5b 31 3a 2c 20 3a 5d 0a 0a 61 2c 20 62 20 3d 20 6f 74 2e 75 | :].xt.=.xtot[1:,.:]..a,.b.=.ot.u |
a860 | 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 6e 29 20 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 | nif(n),.ot.unif(n)..#.uniform.di |
a880 | 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 0a 23 20 6c 6f 73 73 20 6d 61 | stribution.on.samples..#.loss.ma |
a8a0 | 74 72 69 78 0a 4d 31 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 | trix.M1.=.ot.dist(xs,.xt,.metric |
a8c0 | 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 31 20 2f 3d 20 4d 31 2e 6d 61 78 28 29 0a 0a 23 20 | ='euclidean').M1./=.M1.max()..#. |
a8e0 | 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c | loss.matrix.M2.=.ot.dist(xs,.xt, |
a900 | 20 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 32 20 2f 3d 20 4d 32 2e | .metric='sqeuclidean').M2./=.M2. |
a920 | 6d 61 78 28 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 70 20 3d 20 6e 70 2e 73 71 72 | max()..#.loss.matrix.Mp.=.np.sqr |
a940 | 74 28 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 65 75 63 6c 69 64 | t(ot.dist(xs,.xt,.metric='euclid |
a960 | 65 61 6e 27 29 29 0a 4d 70 20 2f 3d 20 4d 70 2e 6d 61 78 28 29 0a 0a 0a 23 20 44 61 74 61 0a 70 | ean')).Mp./=.Mp.max()...#.Data.p |
a980 | 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 0a 70 6c 2e 63 | l.figure(4,.figsize=(7,.3)).pl.c |
a9a0 | 6c 66 28 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c | lf().pl.plot(xs[:,.0],.xs[:,.1], |
a9c0 | 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 | .'+b',.label='Source.samples').p |
a9e0 | 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c | l.plot(xt[:,.0],.xt[:,.1],.'xr', |
aa00 | 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 61 78 69 73 | .label='Target.samples').pl.axis |
aa20 | 28 27 65 71 75 61 6c 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 | ('equal').pl.title('Source.and.t |
aa40 | 72 61 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 0a 23 20 43 6f 73 74 20 6d | raget.distributions')...#.Cost.m |
aa60 | 61 74 72 69 63 65 73 0a 70 6c 2e 66 69 67 75 72 65 28 35 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c | atrices.pl.figure(5,.figsize=(7, |
aa80 | 20 33 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 0a 70 6c 2e 69 6d 73 | .3))..pl.subplot(1,.3,.1).pl.ims |
aaa0 | 68 6f 77 28 4d 31 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 | how(M1,.interpolation='nearest') |
aac0 | 0a 70 6c 2e 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a 0a 70 6c 2e | .pl.title('Euclidean.cost')..pl. |
aae0 | 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 32 2c 20 69 | subplot(1,.3,.2).pl.imshow(M2,.i |
ab00 | 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 | nterpolation='nearest').pl.title |
ab20 | 28 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a 0a 70 6c 2e 73 | ('Squared.Euclidean.cost')..pl.s |
ab40 | 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 70 2c 20 69 6e | ubplot(1,.3,.3).pl.imshow(Mp,.in |
ab60 | 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 | terpolation='nearest').pl.title( |
ab80 | 27 53 71 72 74 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a 70 6c 2e 74 69 67 68 74 5f | 'Sqrt.Euclidean.cost').pl.tight_ |
aba0 | 6c 61 79 6f 75 74 28 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | layout()..###################### |
abc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
abe0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 44 61 74 61 73 | ########################.#.Datas |
ac00 | 65 74 20 32 20 3a 20 50 6c 6f 74 20 20 4f 54 20 4d 61 74 72 69 63 65 73 0a 23 20 2d 2d 2d 2d 2d | et.2.:.Plot..OT.Matrices.#.----- |
ac20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 0a 23 25 25 20 45 | ------------------------...#%%.E |
ac40 | 4d 44 0a 47 31 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 31 29 0a 47 32 20 3d 20 6f 74 | MD.G1.=.ot.emd(a,.b,.M1).G2.=.ot |
ac60 | 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 32 29 0a 47 70 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c | .emd(a,.b,.M2).Gp.=.ot.emd(a,.b, |
ac80 | 20 4d 70 29 0a 0a 23 20 4f 54 20 6d 61 74 72 69 63 65 73 0a 70 6c 2e 66 69 67 75 72 65 28 36 2c | .Mp)..#.OT.matrices.pl.figure(6, |
aca0 | 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 | .figsize=(7,.3))..pl.subplot(1,. |
acc0 | 33 2c 20 31 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 | 3,.1).ot.plot.plot2D_samples_mat |
ace0 | 28 78 73 2c 20 78 74 2c 20 47 31 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 70 | (xs,.xt,.G1,.c=[.5,..5,.1]).pl.p |
ad00 | 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 | lot(xs[:,.0],.xs[:,.1],.'+b',.la |
ad20 | 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 | bel='Source.samples').pl.plot(xt |
ad40 | 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 | [:,.0],.xt[:,.1],.'xr',.label='T |
ad60 | 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 | arget.samples').pl.axis('equal') |
ad80 | 0a 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 | .#.pl.legend(loc=0).pl.title('OT |
ada0 | 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 | .Euclidean')..pl.subplot(1,.3,.2 |
adc0 | 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c | ).ot.plot.plot2D_samples_mat(xs, |
ade0 | 20 78 74 2c 20 47 32 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 70 6c 6f 74 28 | .xt,.G2,.c=[.5,..5,.1]).pl.plot( |
ae00 | 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d | xs[:,.0],.xs[:,.1],.'+b',.label= |
ae20 | 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 | 'Source.samples').pl.plot(xt[:,. |
ae40 | 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 | 0],.xt[:,.1],.'xr',.label='Targe |
ae60 | 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 0a 23 20 70 | t.samples').pl.axis('equal').#.p |
ae80 | 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 75 | l.legend(loc=0).pl.title('OT.squ |
aea0 | 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 | ared.Euclidean')..pl.subplot(1,. |
aec0 | 33 2c 20 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 | 3,.3).ot.plot.plot2D_samples_mat |
aee0 | 28 78 73 2c 20 78 74 2c 20 47 70 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 70 | (xs,.xt,.Gp,.c=[.5,..5,.1]).pl.p |
af00 | 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 | lot(xs[:,.0],.xs[:,.1],.'+b',.la |
af20 | 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 | bel='Source.samples').pl.plot(xt |
af40 | 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 | [:,.0],.xt[:,.1],.'xr',.label='T |
af60 | 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 | arget.samples').pl.axis('equal') |
af80 | 0a 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 | .#.pl.legend(loc=0).pl.title('OT |
afa0 | 20 73 71 72 74 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 | .sqrt.Euclidean').pl.tight_layou |
afc0 | 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c 8c 4d bd | t()..pl.show().PK.........xPL.M. |
afe0 | 60 44 09 00 00 44 09 00 00 15 00 00 00 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e | `D...D.......plot_OT_2D_samples. |
b000 | 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d | py#.-*-.coding:.utf-8.-*-.""".== |
b020 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
b040 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 | ==================.2D.Optimal.tr |
b060 | 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 | ansport.between.empirical.distri |
b080 | 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | butions.======================== |
b0a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 49 6c | ============================..Il |
b0c0 | 6c 75 73 74 72 61 74 69 6f 6e 20 6f 66 20 32 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f | lustration.of.2D.optimal.transpo |
b0e0 | 72 74 20 62 65 74 77 65 65 6e 20 64 69 73 63 72 69 62 75 74 69 6f 6e 73 20 74 68 61 74 20 61 72 | rt.between.discributions.that.ar |
b100 | 65 20 77 65 69 67 68 74 65 64 0a 73 75 6d 20 6f 66 20 64 69 72 61 63 73 2e 20 54 68 65 20 4f 54 | e.weighted.sum.of.diracs..The.OT |
b120 | 20 6d 61 74 72 69 78 20 69 73 20 70 6c 6f 74 74 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6d 70 | .matrix.is.plotted.with.the.samp |
b140 | 6c 65 73 2e 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 | les..."""..#.Author:.Remi.Flamar |
b160 | 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 0a 23 20 4c 69 | y.<remi.flamary@unice.fr>.#.#.Li |
b180 | 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 | cense:.MIT.License..import.numpy |
b1a0 | 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 | .as.np.import.matplotlib.pylab.a |
b1c0 | 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | s.pl.import.ot..################ |
b1e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b200 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 | ##############################.# |
b220 | 20 47 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a | .Generate.data.#.-------------.. |
b240 | 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 | #%%.parameters.and.data.generati |
b260 | 6f 6e 0a 0a 6e 20 3d 20 35 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0a 0a 6d 75 5f 73 20 3d | on..n.=.50..#.nb.samples..mu_s.= |
b280 | 20 6e 70 2e 61 72 72 61 79 28 5b 30 2c 20 30 5d 29 0a 63 6f 76 5f 73 20 3d 20 6e 70 2e 61 72 72 | .np.array([0,.0]).cov_s.=.np.arr |
b2a0 | 61 79 28 5b 5b 31 2c 20 30 5d 2c 20 5b 30 2c 20 31 5d 5d 29 0a 0a 6d 75 5f 74 20 3d 20 6e 70 2e | ay([[1,.0],.[0,.1]])..mu_t.=.np. |
b2c0 | 61 72 72 61 79 28 5b 34 2c 20 34 5d 29 0a 63 6f 76 5f 74 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b | array([4,.4]).cov_t.=.np.array([ |
b2e0 | 5b 31 2c 20 2d 2e 38 5d 2c 20 5b 2d 2e 38 2c 20 31 5d 5d 29 0a 0a 78 73 20 3d 20 6f 74 2e 64 61 | [1,.-.8],.[-.8,.1]])..xs.=.ot.da |
b300 | 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 20 6d | tasets.get_2D_samples_gauss(n,.m |
b320 | 75 5f 73 2c 20 63 6f 76 5f 73 29 0a 78 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 | u_s,.cov_s).xt.=.ot.datasets.get |
b340 | 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 20 6d 75 5f 74 2c 20 63 6f 76 5f 74 | _2D_samples_gauss(n,.mu_t,.cov_t |
b360 | 29 0a 0a 61 2c 20 62 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 6e 2c 29 29 20 2f 20 6e 2c 20 6e 70 2e | )..a,.b.=.np.ones((n,))./.n,.np. |
b380 | 6f 6e 65 73 28 28 6e 2c 29 29 20 2f 20 6e 20 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 | ones((n,))./.n..#.uniform.distri |
b3a0 | 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 | bution.on.samples..#.loss.matrix |
b3c0 | 0a 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 | .M.=.ot.dist(xs,.xt).M./=.M.max( |
b3e0 | 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | )..############################# |
b400 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b420 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 64 61 74 61 0a 23 20 | #################.#.Plot.data.#. |
b440 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e | ---------..#%%.plot.samples..pl. |
b460 | 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a | figure(1).pl.plot(xs[:,.0],.xs[: |
b480 | 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 | ,.1],.'+b',.label='Source.sample |
b4a0 | 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 | s').pl.plot(xt[:,.0],.xt[:,.1],. |
b4c0 | 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c | 'xr',.label='Target.samples').pl |
b4e0 | 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 | .legend(loc=0).pl.title('Source. |
b500 | 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 66 | and.target.distributions')..pl.f |
b520 | 69 67 75 72 65 28 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e 74 65 72 70 6f 6c 61 74 | igure(2).pl.imshow(M,.interpolat |
b540 | 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 | ion='nearest').pl.title('Cost.ma |
b560 | 74 72 69 78 20 4d 27 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | trix.M')..###################### |
b580 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b5a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 6f 6d 70 75 | ########################.#.Compu |
b5c0 | 74 65 20 45 4d 44 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 | te.EMD.#.-----------..#%%.EMD..G |
b5e0 | 30 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 | 0.=.ot.emd(a,.b,.M)..pl.figure(3 |
b600 | 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e | ).pl.imshow(G0,.interpolation='n |
b620 | 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 | earest').pl.title('OT.matrix.G0' |
b640 | 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 | )..pl.figure(4).ot.plot.plot2D_s |
b660 | 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 30 2c 20 63 3d 5b 2e 35 2c 20 2e 35 | amples_mat(xs,.xt,.G0,.c=[.5,..5 |
b680 | 2c 20 31 5d 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a 2c 20 31 5d | ,.1]).pl.plot(xs[:,.0],.xs[:,.1] |
b6a0 | 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a | ,.'+b',.label='Source.samples'). |
b6c0 | 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 | pl.plot(xt[:,.0],.xt[:,.1],.'xr' |
b6e0 | 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 | ,.label='Target.samples').pl.leg |
b700 | 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 77 | end(loc=0).pl.title('OT.matrix.w |
b720 | 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ith.samples')...################ |
b740 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b760 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 | ##############################.# |
b780 | 20 43 6f 6d 70 75 74 65 20 53 69 6e 6b 68 6f 72 6e 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .Compute.Sinkhorn.#.------------ |
b7a0 | 2d 2d 2d 2d 0a 0a 23 25 25 20 73 69 6e 6b 68 6f 72 6e 0a 0a 23 20 72 65 67 20 74 65 72 6d 0a 6c | ----..#%%.sinkhorn..#.reg.term.l |
b7c0 | 61 6d 62 64 20 3d 20 31 65 2d 33 0a 0a 47 73 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c | ambd.=.1e-3..Gs.=.ot.sinkhorn(a, |
b7e0 | 20 62 2c 20 4d 2c 20 6c 61 6d 62 64 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 70 6c 2e 69 | .b,.M,.lambd)..pl.figure(5).pl.i |
b800 | 6d 73 68 6f 77 28 47 73 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 | mshow(Gs,.interpolation='nearest |
b820 | 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 | ').pl.title('OT.matrix.sinkhorn' |
b840 | 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 36 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 | )..pl.figure(6).ot.plot.plot2D_s |
b860 | 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 73 2c 20 63 6f 6c 6f 72 3d 5b 2e 35 | amples_mat(xs,.xt,.Gs,.color=[.5 |
b880 | 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a | ,..5,.1]).pl.plot(xs[:,.0],.xs[: |
b8a0 | 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 | ,.1],.'+b',.label='Source.sample |
b8c0 | 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 | s').pl.plot(xt[:,.0],.xt[:,.1],. |
b8e0 | 27 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c | 'xr',.label='Target.samples').pl |
b900 | 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 | .legend(loc=0).pl.title('OT.matr |
b920 | 69 78 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 73 | ix.Sinkhorn.with.samples')..pl.s |
b940 | 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c 6f e7 38 bd f1 0f 00 00 f1 0f 00 00 | how().PK.........xPLo.8......... |
b960 | 14 00 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 2e 70 79 23 20 2d 2a 2d 20 63 6f | ....plot_otda_mapping.py#.-*-.co |
b980 | 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ding:.utf-8.-*-.""".============ |
b9a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a | ===============================. |
b9c0 | 4f 54 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 6f 6d 61 69 6e | OT.mapping.estimation.for.domain |
b9e0 | 20 61 64 61 70 74 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | .adaptation.==================== |
ba00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 | =======================..This.ex |
ba20 | 61 6d 70 6c 65 20 70 72 65 73 65 6e 74 73 20 68 6f 77 20 74 6f 20 75 73 65 20 4d 61 70 70 69 6e | ample.presents.how.to.use.Mappin |
ba40 | 67 54 72 61 6e 73 70 6f 72 74 20 74 6f 20 65 73 74 69 6d 61 74 65 20 61 74 20 74 68 65 20 73 61 | gTransport.to.estimate.at.the.sa |
ba60 | 6d 65 0a 74 69 6d 65 20 62 6f 74 68 20 74 68 65 20 63 6f 75 70 6c 69 6e 67 20 74 72 61 6e 73 70 | me.time.both.the.coupling.transp |
ba80 | 6f 72 74 20 61 6e 64 20 61 70 70 72 6f 78 69 6d 61 74 65 20 74 68 65 20 74 72 61 6e 73 70 6f 72 | ort.and.approximate.the.transpor |
baa0 | 74 20 6d 61 70 20 77 69 74 68 20 65 69 74 68 65 72 0a 61 20 6c 69 6e 65 61 72 20 6f 72 20 61 20 | t.map.with.either.a.linear.or.a. |
bac0 | 6b 65 72 6e 65 6c 69 7a 65 64 20 6d 61 70 70 69 6e 67 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 | kernelized.mapping.as.introduced |
bae0 | 20 69 6e 20 5b 38 5d 2e 0a 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 | .in.[8]...[8].M..Perrot,.N..Cour |
bb00 | 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 0a 20 20 20 20 | ty,.R..Flamary,.A..Habrard,..... |
bb20 | 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 69 73 63 72 65 74 65 | "Mapping.estimation.for.discrete |
bb40 | 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 0a 20 20 20 20 4e 65 75 72 61 6c 20 | .optimal.transport",.....Neural. |
bb60 | 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 | Information.Processing.Systems.( |
bb80 | 4e 49 50 53 29 2c 20 32 30 31 36 2e 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d | NIPS),.2016.."""..#.Authors:.Rem |
bba0 | 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 | i.Flamary.<remi.flamary@unice.fr |
bbc0 | 3e 0a 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c | >.#..........Stanislas.Chambon.< |
bbe0 | 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 | stan.chambon@gmail.com>.#.#.Lice |
bc00 | 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 | nse:.MIT.License..import.numpy.a |
bc20 | 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 | s.np.import.matplotlib.pylab.as. |
bc40 | 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | pl.import.ot...################# |
bc60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
bc80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 | #############################.#. |
bca0 | 47 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 6e | Generate.data.#.-------------..n |
bcc0 | 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 20 3d 20 31 30 30 0a 6e 5f 74 61 72 67 65 74 5f 73 | _source_samples.=.100.n_target_s |
bce0 | 61 6d 70 6c 65 73 20 3d 20 31 30 30 0a 74 68 65 74 61 20 3d 20 32 20 2a 20 6e 70 2e 70 69 20 2f | amples.=.100.theta.=.2.*.np.pi./ |
bd00 | 20 32 30 0a 6e 6f 69 73 65 5f 6c 65 76 65 6c 20 3d 20 30 2e 31 0a 0a 58 73 2c 20 79 73 20 3d 20 | .20.noise_level.=.0.1..Xs,.ys.=. |
bd20 | 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 0a 20 20 | ot.datasets.get_data_classif(... |
bd40 | 20 20 27 67 61 75 73 73 72 6f 74 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 2c 20 | ..'gaussrot',.n_source_samples,. |
bd60 | 6e 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 0a 58 73 5f 6e 65 77 2c 20 5f 20 3d 20 6f 74 2e 64 | nz=noise_level).Xs_new,._.=.ot.d |
bd80 | 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 0a 20 20 20 20 27 67 | atasets.get_data_classif(.....'g |
bda0 | 61 75 73 73 72 6f 74 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 2c 20 6e 7a 3d 6e | aussrot',.n_source_samples,.nz=n |
bdc0 | 6f 69 73 65 5f 6c 65 76 65 6c 29 0a 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 | oise_level).Xt,.yt.=.ot.datasets |
bde0 | 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 0a 20 20 20 20 27 67 61 75 73 73 72 6f 74 | .get_data_classif(.....'gaussrot |
be00 | 27 2c 20 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 2c 20 74 68 65 74 61 3d 74 68 65 74 61 | ',.n_target_samples,.theta=theta |
be20 | 2c 20 6e 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 0a 0a 23 20 6f 6e 65 20 6f 66 20 74 68 65 20 | ,.nz=noise_level)..#.one.of.the. |
be40 | 74 61 72 67 65 74 20 6d 6f 64 65 20 63 68 61 6e 67 65 73 20 69 74 73 20 76 61 72 69 61 6e 63 65 | target.mode.changes.its.variance |
be60 | 20 28 6e 6f 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 29 0a 58 74 5b 79 74 20 3d 3d 20 32 5d | .(no.linear.mapping).Xt[yt.==.2] |
be80 | 20 2a 3d 20 33 0a 58 74 20 3d 20 58 74 20 2b 20 34 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | .*=.3.Xt.=.Xt.+.4..############# |
bea0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
bec0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
bee0 | 23 0a 23 20 50 6c 6f 74 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 | #.#.Plot.data.#.---------..pl.fi |
bf00 | 67 75 72 65 28 31 2c 20 28 31 30 2c 20 35 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 63 61 | gure(1,.(10,.5)).pl.clf().pl.sca |
bf20 | 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d | tter(Xs[:,.0],.Xs[:,.1],.c=ys,.m |
bf40 | 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 | arker='+',.label='Source.samples |
bf60 | 27 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d | ').pl.scatter(Xt[:,.0],.Xt[:,.1] |
bf80 | 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 | ,.c=yt,.marker='o',.label='Targe |
bfa0 | 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e | t.samples').pl.legend(loc=0).pl. |
bfc0 | 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 | title('Source.and.target.distrib |
bfe0 | 75 74 69 6f 6e 73 27 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | utions')...##################### |
c000 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
c020 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 49 6e 73 74 | #########################.#.Inst |
c040 | 61 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 | antiate.the.different.transport. |
c060 | 61 6c 67 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 0a 23 20 2d 2d 2d 2d 2d 2d | algorithms.and.fit.them.#.------ |
c080 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
c0a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 20 4d 61 70 70 69 6e 67 | ---------------------..#.Mapping |
c0c0 | 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 6c 69 6e 65 61 72 20 6b 65 72 6e 65 6c 0a 6f 74 5f | Transport.with.linear.kernel.ot_ |
c0e0 | 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 | mapping_linear.=.ot.da.MappingTr |
c100 | 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6b 65 72 6e 65 6c 3d 22 6c 69 6e 65 61 72 22 2c 20 6d 75 | ansport(.....kernel="linear",.mu |
c120 | 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 0a 20 20 20 20 6d | =1e0,.eta=1e-8,.bias=True,.....m |
c140 | 61 78 5f 69 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 6f 74 5f 6d 61 | ax_iter=20,.verbose=True)..ot_ma |
c160 | 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a | pping_linear.fit(Xs=Xs,.Xt=Xt).. |
c180 | 23 20 66 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 | #.for.original.source.samples,.t |
c1a0 | 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 | ransform.applies.barycentric.map |
c1c0 | 70 69 6e 67 0a 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 5f 6d 61 70 70 69 | ping.transp_Xs_linear.=.ot_mappi |
c1e0 | 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 23 20 66 6f | ng_linear.transform(Xs=Xs)..#.fo |
c200 | 72 20 6f 75 74 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f | r.out.of.source.samples,.transfo |
c220 | 72 6d 20 61 70 70 6c 69 65 73 20 74 68 65 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 0a 74 72 | rm.applies.the.linear.mapping.tr |
c240 | 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f | ansp_Xs_linear_new.=.ot_mapping_ |
c260 | 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 0a 0a 0a 23 20 | linear.transform(Xs=Xs_new)...#. |
c280 | 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 67 61 75 73 73 69 61 6e 20 6b | MappingTransport.with.gaussian.k |
c2a0 | 65 72 6e 65 6c 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 2e 64 | ernel.ot_mapping_gaussian.=.ot.d |
c2c0 | 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6b 65 72 6e 65 6c 3d 22 | a.MappingTransport(.....kernel=" |
c2e0 | 67 61 75 73 73 69 61 6e 22 2c 20 65 74 61 3d 31 65 2d 35 2c 20 6d 75 3d 31 65 2d 31 2c 20 62 69 | gaussian",.eta=1e-5,.mu=1e-1,.bi |
c300 | 61 73 3d 54 72 75 65 2c 20 73 69 67 6d 61 3d 31 2c 0a 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 | as=True,.sigma=1,.....max_iter=1 |
c320 | 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 | 0,.verbose=True).ot_mapping_gaus |
c340 | 73 69 61 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 66 6f 72 20 6f 72 | sian.fit(Xs=Xs,.Xt=Xt)..#.for.or |
c360 | 69 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d | iginal.source.samples,.transform |
c380 | 20 61 70 70 6c 69 65 73 20 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 0a 74 72 61 | .applies.barycentric.mapping.tra |
c3a0 | 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 | nsp_Xs_gaussian.=.ot_mapping_gau |
c3c0 | 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 23 20 66 6f 72 20 6f 75 | ssian.transform(Xs=Xs)..#.for.ou |
c3e0 | 74 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 | t.of.source.samples,.transform.a |
c400 | 70 70 6c 69 65 73 20 74 68 65 20 67 61 75 73 73 69 61 6e 20 6d 61 70 70 69 6e 67 0a 74 72 61 6e | pplies.the.gaussian.mapping.tran |
c420 | 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f | sp_Xs_gaussian_new.=.ot_mapping_ |
c440 | 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 0a 0a 0a | gaussian.transform(Xs=Xs_new)... |
c460 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
c480 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
c4a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 74 72 61 6e 73 70 6f 72 74 65 | ##############.#.Plot.transporte |
c4c0 | 64 20 73 61 6d 70 6c 65 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | d.samples.#.-------------------- |
c4e0 | 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 | ----..pl.figure(2).pl.clf().pl.s |
c500 | 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c | ubplot(2,.2,.1).pl.scatter(Xt[:, |
c520 | 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c | .0],.Xt[:,.1],.c=yt,.marker='o', |
c540 | 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 | ............label='Target.sample |
c560 | 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f | s',.alpha=.2).pl.scatter(transp_ |
c580 | 58 73 5f 6c 69 6e 65 61 72 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 | Xs_linear[:,.0],.transp_Xs_linea |
c5a0 | 72 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 0a 20 20 20 20 20 | r[:,.1],.c=ys,.marker='+',...... |
c5c0 | 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 4d 61 70 70 65 64 20 73 6f 75 72 63 65 20 73 61 6d 70 6c | ......label='Mapped.source.sampl |
c5e0 | 65 73 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 42 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 | es').pl.title("Bary..mapping.(li |
c600 | 6e 65 61 72 29 22 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 0a 70 6c 2e 73 75 62 | near)").pl.legend(loc=0)..pl.sub |
c620 | 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 | plot(2,.2,.2).pl.scatter(Xt[:,.0 |
c640 | 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 | ],.Xt[:,.1],.c=yt,.marker='o',.. |
c660 | 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 | ..........label='Target.samples' |
c680 | 2c 20 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 | ,.alpha=.2).pl.scatter(transp_Xs |
c6a0 | 5f 6c 69 6e 65 61 72 5f 6e 65 77 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e | _linear_new[:,.0],.transp_Xs_lin |
c6c0 | 65 61 72 5f 6e 65 77 5b 3a 2c 20 31 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 63 3d 79 73 2c 20 | ear_new[:,.1],............c=ys,. |
c6e0 | 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 | marker='+',.label='Learned.mappi |
c700 | 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 45 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 20 28 6c | ng').pl.title("Estim..mapping.(l |
c720 | 69 6e 65 61 72 29 22 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 33 29 0a 70 6c | inear)")..pl.subplot(2,.2,.3).pl |
c740 | 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 | .scatter(Xt[:,.0],.Xt[:,.1],.c=y |
c760 | 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d | t,.marker='o',............label= |
c780 | 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 | 'Target.samples',.alpha=.2).pl.s |
c7a0 | 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e 5b 3a 2c 20 30 5d 2c | catter(transp_Xs_gaussian[:,.0], |
c7c0 | 20 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 73 73 69 61 6e 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c | .transp_Xs_gaussian[:,.1],.c=ys, |
c7e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 62 | ............marker='+',.label='b |
c800 | 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 42 | arycentric.mapping').pl.title("B |
c820 | 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 22 29 0a 0a 70 6c 2e 73 75 62 70 | ary..mapping.(kernel)")..pl.subp |
c840 | 6c 6f 74 28 32 2c 20 32 2c 20 34 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d | lot(2,.2,.4).pl.scatter(Xt[:,.0] |
c860 | 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 | ,.Xt[:,.1],.c=yt,.marker='o',... |
c880 | 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c | .........label='Target.samples', |
c8a0 | 20 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f | .alpha=.2).pl.scatter(transp_Xs_ |
c8c0 | 67 61 75 73 73 69 61 6e 5f 6e 65 77 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 67 61 | gaussian_new[:,.0],.transp_Xs_ga |
c8e0 | 75 73 73 69 61 6e 5f 6e 65 77 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 0a 20 20 20 20 20 20 20 20 | ussian_new[:,.1],.c=ys,......... |
c900 | 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 | ...marker='+',.label='Learned.ma |
c920 | 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 45 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 | pping').pl.title("Estim..mapping |
c940 | 20 28 6b 65 72 6e 65 6c 29 22 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 | .(kernel)").pl.tight_layout()..p |
c960 | 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 17 78 50 4c c9 85 61 a8 64 09 00 00 64 | l.show().PK.........xPL..a.d...d |
c980 | 09 00 00 13 00 00 00 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 70 79 23 20 2d 2a 2d 20 | .......plot_compute_emd.py#.-*-. |
c9a0 | 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | coding:.utf-8.-*-.""".========== |
c9c0 | 3d 3d 3d 3d 3d 3d 3d 0a 50 6c 6f 74 20 6d 75 6c 74 69 70 6c 65 20 45 4d 44 0a 3d 3d 3d 3d 3d 3d | =======.Plot.multiple.EMD.====== |
c9e0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 53 68 6f 77 73 20 68 6f 77 20 74 6f 20 63 6f 6d 70 75 74 | ===========..Shows.how.to.comput |
ca00 | 65 20 6d 75 6c 74 69 70 6c 65 20 45 4d 44 20 61 6e 64 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 | e.multiple.EMD.and.Sinkhorn.with |
ca20 | 20 74 77 6f 20 64 69 66 66 65 72 6e 74 0a 67 72 6f 75 6e 64 20 6d 65 74 72 69 63 73 20 61 6e 64 | .two.differnt.ground.metrics.and |
ca40 | 20 70 6c 6f 74 20 74 68 65 69 72 20 76 61 6c 75 65 73 20 66 6f 72 20 64 69 66 66 65 65 6e 74 20 | .plot.their.values.for.diffeent. |
ca60 | 64 69 73 74 72 69 62 75 74 69 6f 6e 73 2e 0a 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 | distributions...."""..#.Author:. |
ca80 | 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 | Remi.Flamary.<remi.flamary@unice |
caa0 | 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 | .fr>.#.#.License:.MIT.License..i |
cac0 | 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 | mport.numpy.as.np.import.matplot |
cae0 | 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f | lib.pylab.as.pl.import.ot.from.o |
cb00 | 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 | t.datasets.import.get_1D_gauss.a |
cb20 | 73 20 67 61 75 73 73 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | s.gauss...###################### |
cb40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
cb60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 47 65 6e 65 72 | ########################.#.Gener |
cb80 | 61 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 61 | ate.data.#.-------------..#%%.pa |
cba0 | 72 61 6d 65 74 65 72 73 0a 0a 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 0a 6e 5f 74 | rameters..n.=.100..#.nb.bins.n_t |
cbc0 | 61 72 67 65 74 20 3d 20 35 30 20 20 23 20 6e 62 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 75 | arget.=.50..#.nb.target.distribu |
cbe0 | 74 69 6f 6e 73 0a 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a 78 20 3d 20 6e 70 2e 61 | tions...#.bin.positions.x.=.np.a |
cc00 | 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 0a 6c 73 74 5f | range(n,.dtype=np.float64)..lst_ |
cc20 | 6d 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 32 30 2c 20 39 30 2c 20 6e 5f 74 61 72 67 65 74 | m.=.np.linspace(20,.90,.n_target |
cc40 | 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 61 20 3d 20 | )..#.Gaussian.distributions.a.=. |
cc60 | 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 | gauss(n,.m=20,.s=5)..#.m=.mean,. |
cc80 | 73 3d 20 73 74 64 0a 0a 42 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 20 6e 5f 74 61 72 67 65 | s=.std..B.=.np.zeros((n,.n_targe |
cca0 | 74 29 29 0a 0a 66 6f 72 20 69 2c 20 6d 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 6c 73 74 5f 6d | t))..for.i,.m.in.enumerate(lst_m |
ccc0 | 29 3a 0a 20 20 20 20 42 5b 3a 2c 20 69 5d 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 6d 2c 20 73 | ):.....B[:,.i].=.gauss(n,.m=m,.s |
cce0 | 3d 35 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 20 61 6e 64 20 6e 6f 72 6d 61 6c 69 7a 61 | =5)..#.loss.matrix.and.normaliza |
cd00 | 74 69 6f 6e 0a 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 | tion.M.=.ot.dist(x.reshape((n,.1 |
cd20 | 29 29 2c 20 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 27 65 75 63 6c 69 64 65 61 | )),.x.reshape((n,.1)),.'euclidea |
cd40 | 6e 27 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e | n').M./=.M.max().M2.=.ot.dist(x. |
cd60 | 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 | reshape((n,.1)),.x.reshape((n,.1 |
cd80 | 29 29 2c 20 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 | )),.'sqeuclidean').M2./=.M2.max( |
cda0 | 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | )..############################# |
cdc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
cde0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 64 61 74 61 0a 23 20 | #################.#.Plot.data.#. |
ce00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 | ---------..#%%.plot.the.distribu |
ce20 | 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 | tions..pl.figure(1).pl.subplot(2 |
ce40 | 2c 20 31 2c 20 31 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 20 61 2c 20 27 62 27 2c 20 6c 61 62 65 6c | ,.1,.1).pl.plot(x,.a,.'b',.label |
ce60 | 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 74 69 74 6c 65 | ='Source.distribution').pl.title |
ce80 | 28 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 73 75 62 70 6c | ('Source.distribution').pl.subpl |
cea0 | 6f 74 28 32 2c 20 31 2c 20 32 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 20 42 2c 20 6c 61 62 65 6c 3d | ot(2,.1,.2).pl.plot(x,.B,.label= |
cec0 | 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 70 6c 2e 74 69 74 6c 65 | 'Target.distributions').pl.title |
cee0 | 28 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 70 6c 2e 74 69 67 68 | ('Target.distributions').pl.tigh |
cf00 | 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | t_layout()...################### |
cf20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
cf40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 6f | ###########################.#.Co |
cf60 | 6d 70 75 74 65 20 45 4d 44 20 66 6f 72 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 6c 6f 73 73 | mpute.EMD.for.the.different.loss |
cf80 | 65 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | es.#.--------------------------- |
cfa0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 20 43 6f 6d 70 75 74 65 20 61 6e 64 20 70 6c 6f 74 20 | ---------..#%%.Compute.and.plot. |
cfc0 | 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 0a 64 | distributions.and.loss.matrix..d |
cfe0 | 5f 65 6d 64 20 3d 20 6f 74 2e 65 6d 64 32 28 61 2c 20 42 2c 20 4d 29 20 20 23 20 64 69 72 65 63 | _emd.=.ot.emd2(a,.B,.M)..#.direc |
d000 | 74 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 0a 64 5f 65 6d 64 32 20 3d 20 6f 74 | t.computation.of.EMD.d_emd2.=.ot |
d020 | 2e 65 6d 64 32 28 61 2c 20 42 2c 20 4d 32 29 20 20 23 20 64 69 72 65 63 74 20 63 6f 6d 70 75 74 | .emd2(a,.B,.M2)..#.direct.comput |
d040 | 61 74 69 6f 6e 20 6f 66 20 45 4d 44 20 77 69 74 68 20 6c 6f 73 73 20 4d 32 0a 0a 0a 70 6c 2e 66 | ation.of.EMD.with.loss.M2...pl.f |
d060 | 69 67 75 72 65 28 32 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 65 6c 3d 27 45 | igure(2).pl.plot(d_emd,.label='E |
d080 | 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 32 2c 20 6c | uclidean.EMD').pl.plot(d_emd2,.l |
d0a0 | 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 0a 70 6c | abel='Squared.Euclidean.EMD').pl |
d0c0 | 2e 74 69 74 6c 65 28 27 45 4d 44 20 64 69 73 74 61 6e 63 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e | .title('EMD.distances').pl.legen |
d0e0 | 64 28 29 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | d()..########################### |
d100 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
d120 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 43 6f 6d 70 75 74 65 20 53 69 | ###################.#.Compute.Si |
d140 | 6e 6b 68 6f 72 6e 20 66 6f 72 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 6c 6f 73 73 65 73 0a | nkhorn.for.the.different.losses. |
d160 | 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | #.------------------------------ |
d180 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 25 25 0a 72 65 67 20 3d 20 31 65 2d 32 0a 64 5f 73 69 | -----------..#%%.reg.=.1e-2.d_si |
d1a0 | 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 2c 20 42 2c 20 4d 2c 20 72 | nkhorn.=.ot.sinkhorn2(a,.B,.M,.r |
d1c0 | 65 67 29 0a 64 5f 73 69 6e 6b 68 6f 72 6e 32 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 | eg).d_sinkhorn2.=.ot.sinkhorn2(a |
d1e0 | 2c 20 42 2c 20 4d 32 2c 20 72 65 67 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 | ,.B,.M2,.reg)..pl.figure(2).pl.c |
d200 | 6c 66 28 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 65 6c 3d 27 45 75 63 6c 69 | lf().pl.plot(d_emd,.label='Eucli |
d220 | 64 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 32 2c 20 6c 61 62 65 6c | dean.EMD').pl.plot(d_emd2,.label |
d240 | 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f | ='Squared.Euclidean.EMD').pl.plo |
d260 | 74 28 64 5f 73 69 6e 6b 68 6f 72 6e 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 | t(d_sinkhorn,.'+',.label='Euclid |
d280 | 65 61 6e 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 73 69 6e 6b 68 6f 72 | ean.Sinkhorn').pl.plot(d_sinkhor |
d2a0 | 6e 32 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 | n2,.'+',.label='Squared.Euclidea |
d2c0 | 6e 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 45 4d 44 20 64 69 73 74 61 | n.Sinkhorn').pl.title('EMD.dista |
d2e0 | 6e 63 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b | nces').pl.legend()..pl.show().PK |
d300 | 03 04 14 00 00 00 00 00 17 78 50 4c 99 da 74 4f 0d 0e 00 00 0d 0e 00 00 19 00 00 00 70 6c 6f 74 | .........xPL..tO............plot |
d320 | 5f 6f 74 64 61 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e | _otda_color_images.py#.-*-.codin |
d340 | 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | g:.utf-8.-*-.""".=============== |
d360 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 69 6d 61 67 65 20 63 6f 6c 6f | ==============.OT.for.image.colo |
d380 | 72 20 61 64 61 70 74 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | r.adaptation.=================== |
d3a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 70 72 65 73 65 6e 74 | ==========..This.example.present |
d3c0 | 73 20 61 20 77 61 79 20 6f 66 20 74 72 61 6e 73 66 65 72 72 69 6e 67 20 63 6f 6c 6f 72 73 20 62 | s.a.way.of.transferring.colors.b |
d3e0 | 65 74 77 65 65 6e 20 74 77 6f 20 69 6d 61 67 65 0a 77 69 74 68 20 4f 70 74 69 6d 61 6c 20 54 72 | etween.two.image.with.Optimal.Tr |
d400 | 61 6e 73 70 6f 72 74 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 6e 20 5b 36 5d 0a 0a 5b 36 | ansport.as.introduced.in.[6]..[6 |
d420 | 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 | ].Ferradans,.S.,.Papadakis,.N.,. |
d440 | 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 | Peyre,.G.,.&.Aujol,.J..F..(2014) |
d460 | 2e 0a 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 | ..Regularized.discrete.optimal.t |
d480 | 72 61 6e 73 70 6f 72 74 2e 0a 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e | ransport..SIAM.Journal.on.Imagin |
d4a0 | 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 2d 31 38 38 32 2e 0a 22 22 22 | g.Sciences,.7(3),.1853-1882..""" |
d4c0 | 0a 0a 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e | ..#.Authors:.Remi.Flamary.<remi. |
d4e0 | 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 20 20 20 20 20 20 20 20 20 20 53 74 61 | flamary@unice.fr>.#..........Sta |
d500 | 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 | nislas.Chambon.<stan.chambon@gma |
d520 | 69 6c 2e 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 | il.com>.#.#.License:.MIT.License |
d540 | 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 66 72 6f 6d 20 73 63 69 70 79 20 | ..import.numpy.as.np.from.scipy. |
d560 | 69 6d 70 6f 72 74 20 6e 64 69 6d 61 67 65 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | import.ndimage.import.matplotlib |
d580 | 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 72 20 3d 20 6e 70 2e | .pylab.as.pl.import.ot...r.=.np. |
d5a0 | 72 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 34 32 29 0a 0a 0a 64 65 66 20 69 6d 32 | random.RandomState(42)...def.im2 |
d5c0 | 6d 61 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 | mat(I):....."""Converts.and.imag |
d5e0 | 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 | e.to.matrix.(one.pixel.per.line) |
d600 | 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 | """.....return.I.reshape((I.shap |
d620 | 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 29 0a | e[0].*.I.shape[1],.I.shape[2])). |
d640 | 0a 0a 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 0a 20 20 20 20 22 22 22 43 | ..def.mat2im(X,.shape):....."""C |
d660 | 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 | onverts.back.a.matrix.to.an.imag |
d680 | 65 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 | e""".....return.X.reshape(shape) |
d6a0 | 0a 0a 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e | ...def.minmax(I):.....return.np. |
d6c0 | 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | clip(I,.0,.1)...################ |
d6e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
d700 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 | ##############################.# |
d720 | 20 47 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a | .Generate.data.#.-------------.. |
d740 | 23 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a 49 31 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d | #.Loading.images.I1.=.ndimage.im |
d760 | 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 | read('../data/ocean_day.jpg').as |
d780 | 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 0a 49 32 20 3d 20 6e 64 69 6d | type(np.float64)./.256.I2.=.ndim |
d7a0 | 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 | age.imread('../data/ocean_sunset |
d7c0 | 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 0a | .jpg').astype(np.float64)./.256. |
d7e0 | 0a 58 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 29 0a 58 32 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 | .X1.=.im2mat(I1).X2.=.im2mat(I2) |
d800 | 0a 0a 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 0a 6e 62 20 3d 20 31 30 30 30 0a 69 | ..#.training.samples.nb.=.1000.i |
d820 | 64 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a | dx1.=.r.randint(X1.shape[0],.siz |
d840 | 65 3d 28 6e 62 2c 29 29 0a 69 64 78 32 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 | e=(nb,)).idx2.=.r.randint(X2.sha |
d860 | 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 0a 58 73 20 3d 20 58 31 5b 69 64 78 31 | pe[0],.size=(nb,))..Xs.=.X1[idx1 |
d880 | 2c 20 3a 5d 0a 58 74 20 3d 20 58 32 5b 69 64 78 32 2c 20 3a 5d 0a 0a 0a 23 23 23 23 23 23 23 23 | ,.:].Xt.=.X2[idx2,.:]...######## |
d8a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
d8c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
d8e0 | 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 0a 23 20 2d | ######.#.Plot.original.image.#.- |
d900 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c | ------------------..pl.figure(1, |
d920 | 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 | .figsize=(6.4,.3))..pl.subplot(1 |
d940 | 2c 20 32 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 61 78 69 73 28 27 6f | ,.2,.1).pl.imshow(I1).pl.axis('o |
d960 | 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 75 62 | ff').pl.title('Image.1')..pl.sub |
d980 | 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 61 | plot(1,.2,.2).pl.imshow(I2).pl.a |
d9a0 | 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a | xis('off').pl.title('Image.2').. |
d9c0 | 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .############################### |
d9e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
da00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 53 63 61 74 74 65 72 20 70 6c 6f 74 20 6f | ###############.#.Scatter.plot.o |
da20 | 66 20 63 6f 6c 6f 72 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | f.colors.#.--------------------- |
da40 | 2d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 | -..pl.figure(2,.figsize=(6.4,.3) |
da60 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 | )..pl.subplot(1,.2,.1).pl.scatte |
da80 | 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 32 5d 2c 20 63 3d 58 73 29 0a 70 6c 2e 61 | r(Xs[:,.0],.Xs[:,.2],.c=Xs).pl.a |
daa0 | 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 | xis([0,.1,.0,.1]).pl.xlabel('Red |
dac0 | 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 | ').pl.ylabel('Blue').pl.title('I |
dae0 | 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c | mage.1')..pl.subplot(1,.2,.2).pl |
db00 | 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 32 5d 2c 20 63 3d 58 | .scatter(Xt[:,.0],.Xt[:,.2],.c=X |
db20 | 74 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 0a 70 6c 2e 78 6c 61 62 | t).pl.axis([0,.1,.0,.1]).pl.xlab |
db40 | 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 | el('Red').pl.ylabel('Blue').pl.t |
db60 | 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 | itle('Image.2').pl.tight_layout( |
db80 | 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | )...############################ |
dba0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
dbc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 49 6e 73 74 61 6e 74 69 61 74 65 | ##################.#.Instantiate |
dbe0 | 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f 72 69 74 | .the.different.transport.algorit |
dc00 | 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | hms.and.fit.them.#.------------- |
dc20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
dc40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 23 20 45 4d 44 54 72 61 6e 73 70 6f 72 74 0a 6f | --------------..#.EMDTransport.o |
dc60 | 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 61 2e 45 4d 44 54 72 61 6e 73 70 6f 72 74 28 29 0a 6f 74 5f | t_emd.=.ot.da.EMDTransport().ot_ |
dc80 | 65 6d 64 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 53 69 6e 6b 68 6f 72 | emd.fit(Xs=Xs,.Xt=Xt)..#.Sinkhor |
dca0 | 6e 54 72 61 6e 73 70 6f 72 74 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 2e 64 61 2e 53 | nTransport.ot_sinkhorn.=.ot.da.S |
dcc0 | 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 0a 6f 74 5f | inkhornTransport(reg_e=1e-1).ot_ |
dce0 | 73 69 6e 6b 68 6f 72 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 70 72 | sinkhorn.fit(Xs=Xs,.Xt=Xt)..#.pr |
dd00 | 65 64 69 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 20 28 75 73 69 6e 67 20 6f | ediction.between.images.(using.o |
dd20 | 75 74 20 6f 66 20 73 61 6d 70 6c 65 20 70 72 65 64 69 63 74 69 6f 6e 20 61 73 20 69 6e 20 5b 36 | ut.of.sample.prediction.as.in.[6 |
dd40 | 5d 29 0a 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 | ]).transp_Xs_emd.=.ot_emd.transf |
dd60 | 6f 72 6d 28 58 73 3d 58 31 29 0a 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d | orm(Xs=X1).transp_Xt_emd.=.ot_em |
dd80 | 64 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 0a 0a 74 72 61 6e | d.inverse_transform(Xt=X2)..tran |
dda0 | 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 | sp_Xs_sinkhorn.=.ot_emd.transfor |
ddc0 | 6d 28 58 73 3d 58 31 29 0a 74 72 61 6e 73 70 5f 58 74 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 | m(Xs=X1).transp_Xt_sinkhorn.=.ot |
dde0 | 5f 65 6d 64 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d 28 58 74 3d 58 32 29 0a 0a 49 | _emd.inverse_transform(Xt=X2)..I |
de00 | 31 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 | 1t.=.minmax(mat2im(transp_Xs_emd |
de20 | 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 49 32 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d | ,.I1.shape)).I2t.=.minmax(mat2im |
de40 | 28 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 2c 20 49 32 2e 73 68 61 70 65 29 29 0a 0a 49 31 74 65 | (transp_Xt_emd,.I2.shape))..I1te |
de60 | 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 | .=.minmax(mat2im(transp_Xs_sinkh |
de80 | 6f 72 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 49 32 74 65 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 | orn,.I1.shape)).I2te.=.minmax(ma |
dea0 | 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 74 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 32 2e 73 68 61 70 | t2im(transp_Xt_sinkhorn,.I2.shap |
dec0 | 65 29 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | e))...########################## |
dee0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
df00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 50 6c 6f 74 20 6e 65 77 20 | ####################.#.Plot.new. |
df20 | 69 6d 61 67 65 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 6c 2e 66 69 67 | images.#.---------------..pl.fig |
df40 | 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 38 2c 20 34 29 29 0a 0a 70 6c 2e 73 75 62 70 6c | ure(3,.figsize=(8,.4))..pl.subpl |
df60 | 6f 74 28 32 2c 20 33 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 61 78 69 | ot(2,.3,.1).pl.imshow(I1).pl.axi |
df80 | 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c | s('off').pl.title('Image.1')..pl |
dfa0 | 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 | .subplot(2,.3,.2).pl.imshow(I1t) |
dfc0 | 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 | .pl.axis('off').pl.title('Image. |
dfe0 | 31 20 41 64 61 70 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 33 29 0a 70 | 1.Adapt')..pl.subplot(2,.3,.3).p |
e000 | 6c 2e 69 6d 73 68 6f 77 28 49 31 74 65 29 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c | l.imshow(I1te).pl.axis('off').pl |
e020 | 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 20 28 72 65 67 29 27 29 0a 0a 70 | .title('Image.1.Adapt.(reg)')..p |
e040 | 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 | l.subplot(2,.3,.4).pl.imshow(I2) |
e060 | 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 | .pl.axis('off').pl.title('Image. |
e080 | 32 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 35 29 0a 70 6c 2e 69 6d 73 68 | 2')..pl.subplot(2,.3,.5).pl.imsh |
e0a0 | 6f 77 28 49 32 74 29 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 | ow(I2t).pl.axis('off').pl.title( |
e0c0 | 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 | 'Image.2.Adapt')..pl.subplot(2,. |
e0e0 | 33 2c 20 36 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 65 29 0a 70 6c 2e 61 78 69 73 28 27 6f | 3,.6).pl.imshow(I2te).pl.axis('o |
e100 | 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 20 28 72 65 | ff').pl.title('Image.2.Adapt.(re |
e120 | 67 29 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 | g)').pl.tight_layout()..pl.show( |
e140 | 29 0a 50 4b 01 02 14 03 14 00 00 00 00 00 17 78 50 4c 99 54 80 89 bc 09 00 00 bc 09 00 00 0e 00 | ).PK...........xPL.T............ |
e160 | 00 00 00 00 00 00 00 00 00 00 b4 81 00 00 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 2e 70 79 50 4b | ................plot_gromov.pyPK |
e180 | 01 02 14 03 14 00 00 00 00 00 17 78 50 4c a4 4f 47 3f 0c 0c 00 00 0c 0c 00 00 0b 00 00 00 00 00 | ...........xPL.OG?.............. |
e1a0 | 00 00 00 00 00 00 b4 81 e8 09 00 00 70 6c 6f 74 5f 57 44 41 2e 70 79 50 4b 01 02 14 03 14 00 00 | ............plot_WDA.pyPK....... |
e1c0 | 00 00 00 17 78 50 4c e5 d4 47 7d 9d 1c 00 00 9d 1c 00 00 19 00 00 00 00 00 00 00 00 00 00 00 b4 | ....xPL..G}..................... |
e1e0 | 81 1d 16 00 00 70 6c 6f 74 5f 67 72 6f 6d 6f 76 5f 62 61 72 79 63 65 6e 74 65 72 2e 70 79 50 4b | .....plot_gromov_barycenter.pyPK |
e200 | 01 02 14 03 14 00 00 00 00 00 17 78 50 4c be a0 06 25 7c 0b 00 00 7c 0b 00 00 13 00 00 00 00 00 | ...........xPL...%|...|......... |
e220 | 00 00 00 00 00 00 b4 81 f1 32 00 00 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 70 79 50 | .........2..plot_optim_OTreg.pyP |
e240 | 4b 01 02 14 03 14 00 00 00 00 00 17 78 50 4c 66 5a 12 7c 0a 15 00 00 0a 15 00 00 0f 00 00 00 00 | K...........xPLfZ.|............. |
e260 | 00 00 00 00 00 00 00 b4 81 9e 3e 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 70 79 50 4b 01 02 | ..........>..plot_otda_d2.pyPK.. |
e280 | 14 03 14 00 00 00 00 00 17 78 50 4c 0a ea dc a4 21 12 00 00 21 12 00 00 1c 00 00 00 00 00 00 00 | .........xPL....!...!........... |
e2a0 | 00 00 00 00 b4 81 d5 53 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 73 65 6d 69 5f 73 75 70 65 72 76 69 | .......S..plot_otda_semi_supervi |
e2c0 | 73 65 64 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 17 78 50 4c c6 f7 0c 9f a1 06 00 00 a1 06 | sed.pyPK...........xPL.......... |
e2e0 | 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 b4 81 30 66 00 00 70 6c 6f 74 5f 4f 54 5f 31 44 2e 70 | ................0f..plot_OT_1D.p |
e300 | 79 50 4b 01 02 14 03 14 00 00 00 00 00 17 78 50 4c 2b 3f e5 77 26 0d 00 00 26 0d 00 00 15 00 00 | yPK...........xPL+?.w&...&...... |
e320 | 00 00 00 00 00 00 00 00 00 b4 81 fc 6c 00 00 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 31 | ............l..plot_barycenter_1 |
e340 | 44 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 17 78 50 4c 60 f3 2a fb 00 11 00 00 00 11 00 00 | D.pyPK...........xPL`.*......... |
e360 | 14 00 00 00 00 00 00 00 00 00 00 00 b4 81 55 7a 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 73 | ..............Uz..plot_otda_clas |
e380 | 73 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 17 78 50 4c 1a d1 23 82 4f 10 00 00 4f 10 | ses.pyPK...........xPL..#.O...O. |
e3a0 | 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 87 8b 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 | ..".................plot_otda_ma |
e3c0 | 70 70 69 6e 67 5f 63 6f 6c 6f 72 73 5f 69 6d 61 67 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 | pping_colors_images.pyPK........ |
e3e0 | 00 00 17 78 50 4c 10 25 96 fd 88 13 00 00 88 13 00 00 13 00 00 00 00 00 00 00 00 00 00 00 b4 81 | ...xPL.%........................ |
e400 | 16 9c 00 00 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 70 79 50 4b 01 02 14 03 14 00 00 | ....plot_OT_L1_vs_L2.pyPK....... |
e420 | 00 00 00 17 78 50 4c 8c 4d bd 60 44 09 00 00 44 09 00 00 15 00 00 00 00 00 00 00 00 00 00 00 b4 | ....xPL.M.`D...D................ |
e440 | 81 cf af 00 00 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 70 79 50 4b 01 02 14 03 | .....plot_OT_2D_samples.pyPK.... |
e460 | 14 00 00 00 00 00 17 78 50 4c 6f e7 38 bd f1 0f 00 00 f1 0f 00 00 14 00 00 00 00 00 00 00 00 00 | .......xPLo.8................... |
e480 | 00 00 b4 81 46 b9 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 2e 70 79 50 4b 01 02 | ....F...plot_otda_mapping.pyPK.. |
e4a0 | 14 03 14 00 00 00 00 00 17 78 50 4c c9 85 61 a8 64 09 00 00 64 09 00 00 13 00 00 00 00 00 00 00 | .........xPL..a.d...d........... |
e4c0 | 00 00 00 00 b4 81 69 c9 00 00 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 70 79 50 4b 01 | ......i...plot_compute_emd.pyPK. |
e4e0 | 02 14 03 14 00 00 00 00 00 17 78 50 4c 99 da 74 4f 0d 0e 00 00 0d 0e 00 00 19 00 00 00 00 00 00 | ..........xPL..tO............... |
e500 | 00 00 00 00 00 b4 81 fe d2 00 00 70 6c 6f 74 5f 6f 74 64 61 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 | ...........plot_otda_color_image |
e520 | 73 2e 70 79 50 4b 05 06 00 00 00 00 0f 00 0f 00 e2 03 00 00 42 e1 00 00 00 00 | s.pyPK..............B..... |