ofs | hex dump | ascii |
---|
0000 | 50 4b 03 04 14 00 00 00 00 00 57 89 1e 4b ba bc 41 39 c9 08 00 00 c9 08 00 00 19 00 00 00 61 75 | PK........W..K..A9............au |
0020 | 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 57 44 41 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 | to_examples/plot_WDA.py#.-*-.cod |
0040 | 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 3d | ing:.utf-8.-*-.""".============= |
0060 | 3d 3d 3d 3d 3d 3d 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 | ====================.Wasserstein |
0080 | 20 44 69 73 63 72 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 | .Discriminant.Analysis.========= |
00a0 | 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 22 22 22 0a 0a 23 | ========================.."""..# |
00c0 | 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 61 6d | .Author:.Remi.Flamary.<remi.flam |
00e0 | 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 20 4c | ary@unice.fr>.#.#.License:.MIT.L |
0100 | 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 6f 72 | icense..import.numpy.as.np.impor |
0120 | 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 20 6f | t.matplotlib.pylab.as.pl..from.o |
0140 | 74 2e 64 72 20 69 6d 70 6f 72 74 20 77 64 61 2c 20 66 64 61 0a 0a 0a 23 25 25 20 70 61 72 61 6d | t.dr.import.wda,.fda...#%%.param |
0160 | 65 74 65 72 73 0a 0a 6e 20 3d 20 31 30 30 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 20 69 6e | eters..n.=.1000..#.nb.samples.in |
0180 | 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 0a 6e 7a 20 3d | .source.and.target.datasets.nz.= |
01a0 | 20 30 2e 32 0a 0a 23 20 67 65 6e 65 72 61 74 65 20 63 69 72 63 6c 65 20 64 61 74 61 73 65 74 0a | .0.2..#.generate.circle.dataset. |
01c0 | 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 28 6e 29 20 2a 20 32 20 2a 20 6e 70 2e 70 | t.=.np.random.rand(n).*.2.*.np.p |
01e0 | 69 0a 79 73 20 3d 20 6e 70 2e 66 6c 6f 6f 72 28 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 2a 20 | i.ys.=.np.floor((np.arange(n).*. |
0200 | 31 2e 30 20 2f 20 6e 20 2a 20 33 29 29 20 2b 20 31 0a 78 73 20 3d 20 6e 70 2e 63 6f 6e 63 61 74 | 1.0./.n.*.3)).+.1.xs.=.np.concat |
0220 | 65 6e 61 74 65 28 0a 20 20 20 20 28 6e 70 2e 63 6f 73 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d | enate(.....(np.cos(t).reshape((- |
0240 | 31 2c 20 31 29 29 2c 20 6e 70 2e 73 69 6e 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 20 31 | 1,.1)),.np.sin(t).reshape((-1,.1 |
0260 | 29 29 29 2c 20 31 29 0a 78 73 20 3d 20 78 73 20 2a 20 79 73 2e 72 65 73 68 61 70 65 28 2d 31 2c | ))),.1).xs.=.xs.*.ys.reshape(-1, |
0280 | 20 31 29 20 2b 20 6e 7a 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 32 29 | .1).+.nz.*.np.random.randn(n,.2) |
02a0 | 0a 0a 74 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 28 6e 29 20 2a 20 32 20 2a 20 6e 70 | ..t.=.np.random.rand(n).*.2.*.np |
02c0 | 2e 70 69 0a 79 74 20 3d 20 6e 70 2e 66 6c 6f 6f 72 28 28 6e 70 2e 61 72 61 6e 67 65 28 6e 29 20 | .pi.yt.=.np.floor((np.arange(n). |
02e0 | 2a 20 31 2e 30 20 2f 20 6e 20 2a 20 33 29 29 20 2b 20 31 0a 78 74 20 3d 20 6e 70 2e 63 6f 6e 63 | *.1.0./.n.*.3)).+.1.xt.=.np.conc |
0300 | 61 74 65 6e 61 74 65 28 0a 20 20 20 20 28 6e 70 2e 63 6f 73 28 74 29 2e 72 65 73 68 61 70 65 28 | atenate(.....(np.cos(t).reshape( |
0320 | 28 2d 31 2c 20 31 29 29 2c 20 6e 70 2e 73 69 6e 28 74 29 2e 72 65 73 68 61 70 65 28 28 2d 31 2c | (-1,.1)),.np.sin(t).reshape((-1, |
0340 | 20 31 29 29 29 2c 20 31 29 0a 78 74 20 3d 20 78 74 20 2a 20 79 74 2e 72 65 73 68 61 70 65 28 2d | .1))),.1).xt.=.xt.*.yt.reshape(- |
0360 | 31 2c 20 31 29 20 2b 20 6e 7a 20 2a 20 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 20 | 1,.1).+.nz.*.np.random.randn(n,. |
0380 | 32 29 0a 0a 6e 62 6e 6f 69 73 65 20 3d 20 38 0a 0a 78 73 20 3d 20 6e 70 2e 68 73 74 61 63 6b 28 | 2)..nbnoise.=.8..xs.=.np.hstack( |
03a0 | 28 78 73 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 69 73 65 29 | (xs,.np.random.randn(n,.nbnoise) |
03c0 | 29 29 0a 78 74 20 3d 20 6e 70 2e 68 73 74 61 63 6b 28 28 78 74 2c 20 6e 70 2e 72 61 6e 64 6f 6d | )).xt.=.np.hstack((xt,.np.random |
03e0 | 2e 72 61 6e 64 6e 28 6e 2c 20 6e 62 6e 6f 69 73 65 29 29 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 | .randn(n,.nbnoise)))..#%%.plot.s |
0400 | 61 6d 70 6c 65 73 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 | amples.pl.figure(1,.figsize=(6.4 |
0420 | 2c 20 33 2e 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 | ,.3.5))..pl.subplot(1,.2,.1).pl. |
0440 | 73 63 61 74 74 65 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 | scatter(xt[:,.0],.xt[:,.1],.c=ys |
0460 | 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 70 | ,.marker='+',.label='Source.samp |
0480 | 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 28 | les').pl.legend(loc=0).pl.title( |
04a0 | 27 44 69 73 63 72 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 | 'Discriminant.dimensions')..pl.s |
04c0 | 75 62 70 6c 6f 74 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 | ubplot(1,.2,.2).pl.scatter(xt[:, |
04e0 | 20 32 5d 2c 20 78 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 | .2],.xt[:,.3],.c=ys,.marker='+', |
0500 | 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 6c 65 67 65 | .label='Source.samples').pl.lege |
0520 | 6e 64 28 6c 6f 63 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 | nd(loc=0).pl.title('Other.dimens |
0540 | 69 6f 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 25 25 20 43 6f | ions').pl.tight_layout()..#%%.Co |
0560 | 6d 70 75 74 65 20 46 44 41 0a 70 20 3d 20 32 0a 0a 50 66 64 61 2c 20 70 72 6f 6a 66 64 61 20 3d | mpute.FDA.p.=.2..Pfda,.projfda.= |
0580 | 20 66 64 61 28 78 73 2c 20 79 73 2c 20 70 29 0a 0a 23 25 25 20 43 6f 6d 70 75 74 65 20 57 44 41 | .fda(xs,.ys,.p)..#%%.Compute.WDA |
05a0 | 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. |
05c0 | 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 |
05e0 | 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).. |
0600 | 23 25 25 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 | #%%.plot.samples..xsp.=.projfda( |
0620 | 78 73 29 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 | xs).xtp.=.projfda(xt)..xspw.=.pr |
0640 | 6f 6a 77 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 | ojwda(xs).xtpw.=.projwda(xt)..pl |
0660 | 2e 66 69 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 | .figure(2)..pl.subplot(2,.2,.1). |
0680 | 70 6c 2e 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 | pl.scatter(xsp[:,.0],.xsp[:,.1], |
06a0 | 20 63 3d 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 | .c=ys,.marker='+',.label='Projec |
06c0 | 74 65 64 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 | ted.samples').pl.legend(loc=0).p |
06e0 | 6c 2e 74 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 | l.title('Projected.training.samp |
0700 | 6c 65 73 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 | les.FDA')..pl.subplot(2,.2,.2).p |
0720 | 6c 2e 73 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 | l.scatter(xtp[:,.0],.xtp[:,.1],. |
0740 | 63 3d 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 | c=ys,.marker='+',.label='Project |
0760 | 65 64 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 | ed.samples').pl.legend(loc=0).pl |
0780 | 2e 74 69 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 | .title('Projected.test.samples.F |
07a0 | 44 41 27 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 | DA')..pl.subplot(2,.2,.3).pl.sca |
07c0 | 74 74 65 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 | tter(xspw[:,.0],.xspw[:,.1],.c=y |
07e0 | 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. |
0800 | 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 |
0820 | 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 20 | tle('Projected.training.samples. |
0840 | 57 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 73 63 | WDA')..pl.subplot(2,.2,.4).pl.sc |
0860 | 61 74 74 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 | atter(xtpw[:,.0],.xtpw[:,.1],.c= |
0880 | 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 |
08a0 | 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 |
08c0 | 69 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 57 44 41 | itle('Projected.test.samples.WDA |
08e0 | 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 29 0a | ').pl.tight_layout()..pl.show(). |
0900 | 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a e7 a1 46 a7 95 0c 00 00 95 0c 00 00 22 00 00 00 61 75 | PK...........J..F........."...au |
0920 | 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 2e 70 79 | to_examples/plot_OTDA_mapping.py |
0940 | 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 3d 3d | #.-*-.coding:.utf-8.-*-.""".==== |
0960 | 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 | ================================ |
0980 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f | ===========.OT.mapping.estimatio |
09a0 | 6e 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 38 5d 0a 3d 3d 3d 3d | n.for.domain.adaptation.[8].==== |
09c0 | 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 | ================================ |
09e0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 | ===========..[8].M..Perrot,.N..C |
0a00 | 6f 75 72 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 20 22 | ourty,.R..Flamary,.A..Habrard,." |
0a20 | 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20 64 69 73 63 72 | Mapping.estimation.for.....discr |
0a40 | 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 75 72 61 6c 20 49 | ete.optimal.transport",.Neural.I |
0a60 | 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 4e | nformation.Processing.Systems.(N |
0a80 | 49 50 53 29 2c 20 32 30 31 36 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 | IPS),.2016.."""..import.numpy.as |
0aa0 | 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 70 | .np.import.matplotlib.pylab.as.p |
0ac0 | 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 0a 23 25 25 20 64 61 74 61 73 65 74 20 67 65 6e 65 72 | l.import.ot....#%%.dataset.gener |
0ae0 | 61 74 69 6f 6e 0a 0a 6e 70 2e 72 61 6e 64 6f 6d 2e 73 65 65 64 28 30 29 20 23 20 6d 61 6b 65 73 | ation..np.random.seed(0).#.makes |
0b00 | 20 65 78 61 6d 70 6c 65 20 72 65 70 72 6f 64 75 63 69 62 6c 65 0a 0a 6e 3d 31 30 30 20 23 20 6e | .example.reproducible..n=100.#.n |
0b20 | 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 72 67 65 74 20 64 | b.samples.in.source.and.target.d |
0b40 | 61 74 61 73 65 74 73 0a 74 68 65 74 61 3d 32 2a 6e 70 2e 70 69 2f 32 30 0a 6e 7a 3d 30 2e 31 0a | atasets.theta=2*np.pi/20.nz=0.1. |
0b60 | 78 73 2c 79 73 3d 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 | xs,ys=ot.datasets.get_data_class |
0b80 | 69 66 28 27 67 61 75 73 73 72 6f 74 27 2c 6e 2c 6e 7a 3d 6e 7a 29 0a 78 74 2c 79 74 3d 6f 74 2e | if('gaussrot',n,nz=nz).xt,yt=ot. |
0ba0 | 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 27 67 61 75 73 73 | datasets.get_data_classif('gauss |
0bc0 | 72 6f 74 27 2c 6e 2c 74 68 65 74 61 3d 74 68 65 74 61 2c 6e 7a 3d 6e 7a 29 0a 0a 23 20 6f 6e 65 | rot',n,theta=theta,nz=nz)..#.one |
0be0 | 20 6f 66 20 74 68 65 20 74 61 72 67 65 74 20 6d 6f 64 65 20 63 68 61 6e 67 65 73 20 69 74 73 20 | .of.the.target.mode.changes.its. |
0c00 | 76 61 72 69 61 6e 63 65 20 28 6e 6f 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 29 0a 78 74 5b | variance.(no.linear.mapping).xt[ |
0c20 | 79 74 3d 3d 32 5d 2a 3d 33 0a 78 74 3d 78 74 2b 34 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d | yt==2]*=3.xt=xt+4...#%%.plot.sam |
0c40 | 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 28 38 2c 35 29 29 0a 70 6c 2e 63 6c 66 28 | ples..pl.figure(1,(8,5)).pl.clf( |
0c60 | 29 0a 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d | )..pl.scatter(xs[:,0],xs[:,1],c= |
0c80 | 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 | ys,marker='+',label='Source.samp |
0ca0 | 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d | les').pl.scatter(xt[:,0],xt[:,1] |
0cc0 | 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 | ,c=yt,marker='o',label='Target.s |
0ce0 | 61 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 | amples')..pl.legend(loc=0).pl.ti |
0d00 | 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 75 74 | tle('Source.and.target.distribut |
0d20 | 69 6f 6e 73 27 29 0a 0a 0a 0a 23 25 25 20 4f 54 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 20 | ions')....#%%.OT.linear.mapping. |
0d40 | 65 73 74 69 6d 61 74 69 6f 6e 0a 0a 65 74 61 3d 31 65 2d 38 20 20 20 23 20 71 75 61 64 72 61 74 | estimation..eta=1e-8...#.quadrat |
0d60 | 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e | ic.regularization.for.regression |
0d80 | 0a 6d 75 3d 31 65 30 20 20 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c | .mu=1e0.....#.weight.of.the.OT.l |
0da0 | 69 6e 65 61 72 20 74 65 72 6d 0a 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 74 65 | inear.term.bias=True..#.estimate |
0dc0 | 20 61 20 62 69 61 73 0a 0a 6f 74 5f 6d 61 70 70 69 6e 67 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d | .a.bias..ot_mapping=ot.da.OTDA_m |
0de0 | 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 2e 66 69 74 28 78 | apping_linear().ot_mapping.fit(x |
0e00 | 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d | s,xt,mu=mu,eta=eta,bias=bias,num |
0e20 | 49 74 65 72 6d 61 78 20 3d 20 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 78 73 74 3d | Itermax.=.20,verbose=True)..xst= |
0e40 | 6f 74 5f 6d 61 70 70 69 6e 67 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 74 68 65 | ot_mapping.predict(xs).#.use.the |
0e60 | 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 0a 78 73 74 30 3d 6f 74 5f 6d 61 70 70 69 | .estimated.mapping.xst0=ot_mappi |
0e80 | 6e 67 2e 69 6e 74 65 72 70 28 29 20 20 20 23 20 75 73 65 20 62 61 72 79 63 65 6e 74 72 69 63 20 | ng.interp()...#.use.barycentric. |
0ea0 | 6d 61 70 70 69 6e 67 0a 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 37 29 29 0a 70 6c | mapping...pl.figure(2,(10,7)).pl |
0ec0 | 2e 63 6c 66 28 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 | .clf().pl.subplot(2,2,1).pl.scat |
0ee0 | 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d | ter(xt[:,0],xt[:,1],c=yt,marker= |
0f00 | 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 | 'o',label='Target.samples',alpha |
0f20 | 3d 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 30 5b 3a | =.3).pl.scatter(xst0[:,0],xst0[: |
0f40 | 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 62 61 72 79 63 | ,1],c=ys,marker='+',label='baryc |
0f60 | 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 62 61 72 79 63 | entric.mapping').pl.title("baryc |
0f80 | 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 22 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 | entric.mapping")..pl.subplot(2,2 |
0fa0 | 2c 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 | ,2).pl.scatter(xt[:,0],xt[:,1],c |
0fc0 | 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d | =yt,marker='o',label='Target.sam |
0fe0 | 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 5b 3a | ples',alpha=.3).pl.scatter(xst[: |
1000 | 2c 30 5d 2c 78 73 74 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 | ,0],xst[:,1],c=ys,marker='+',lab |
1020 | 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 | el='Learned.mapping').pl.title(" |
1040 | 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 22 29 0a 0a 0a 0a 23 25 25 20 4b 65 72 6e 65 6c 20 | Learned.mapping")....#%%.Kernel. |
1060 | 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 0a 0a 65 74 61 3d 31 65 2d 35 20 20 20 23 | mapping.estimation..eta=1e-5...# |
1080 | 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 | .quadratic.regularization.for.re |
10a0 | 67 72 65 73 73 69 6f 6e 0a 6d 75 3d 31 65 2d 31 20 20 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 | gression.mu=1e-1.....#.weight.of |
10c0 | 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 6d 0a 62 69 61 73 3d 54 72 75 65 20 20 23 | .the.OT.linear.term.bias=True..# |
10e0 | 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 0a 73 69 67 6d 61 3d 31 20 20 20 20 23 20 73 69 | .estimate.a.bias.sigma=1....#.si |
1100 | 67 6d 61 20 62 61 6e 64 77 69 64 74 68 20 66 6f 74 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 | gma.bandwidth.fot.gaussian.kerne |
1120 | 6c 0a 0a 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 3d 6f 74 2e 64 61 2e 4f 54 44 41 | l...ot_mapping_kernel=ot.da.OTDA |
1140 | 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 | _mapping_kernel().ot_mapping_ker |
1160 | 6e 65 6c 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 73 69 67 6d | nel.fit(xs,xt,mu=mu,eta=eta,sigm |
1180 | 61 3d 73 69 67 6d 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 | a=sigma,bias=bias,numItermax.=.1 |
11a0 | 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 78 73 74 5f 6b 65 72 6e 65 6c 3d 6f 74 5f 6d | 0,verbose=True)..xst_kernel=ot_m |
11c0 | 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 | apping_kernel.predict(xs).#.use. |
11e0 | 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 0a 78 73 74 30 5f 6b 65 72 6e 65 | the.estimated.mapping.xst0_kerne |
1200 | 6c 3d 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 69 6e 74 65 72 70 28 29 20 20 20 23 | l=ot_mapping_kernel.interp()...# |
1220 | 20 75 73 65 20 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 0a 0a 0a 23 25 25 20 50 | .use.barycentric.mapping...#%%.P |
1240 | 6c 6f 74 74 69 6e 67 20 74 68 65 20 6d 61 70 70 65 64 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 | lotting.the.mapped.samples..pl.f |
1260 | 69 67 75 72 65 28 32 2c 28 31 30 2c 37 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 75 62 70 | igure(2,(10,7)).pl.clf().pl.subp |
1280 | 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 | lot(2,2,1).pl.scatter(xt[:,0],xt |
12a0 | 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 | [:,1],c=yt,marker='o',label='Tar |
12c0 | 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 | get.samples',alpha=.2).pl.scatte |
12e0 | 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 | r(xst0[:,0],xst0[:,1],c=ys,marke |
1300 | 72 3d 27 2b 27 2c 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 | r='+',label='Mapped.source.sampl |
1320 | 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 |
1340 | 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 |
1360 | 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 | plot(2,2,2).pl.scatter(xt[:,0],x |
1380 | 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 | t[:,1],c=yt,marker='o',label='Ta |
13a0 | 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 | rget.samples',alpha=.2).pl.scatt |
13c0 | 65 72 28 78 73 74 5b 3a 2c 30 5d 2c 78 73 74 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 | er(xst[:,0],xst[:,1],c=ys,marker |
13e0 | 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c | ='+',label='Learned.mapping').pl |
1400 | 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 69 6e 65 61 72 29 22 | .title("Estim..mapping.(linear)" |
1420 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 | )..pl.subplot(2,2,3).pl.scatter( |
1440 | 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c | xt[:,0],xt[:,1],c=yt,marker='o', |
1460 | 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 | label='Target.samples',alpha=.2) |
1480 | 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 | .pl.scatter(xst0_kernel[:,0],xst |
14a0 | 30 5f 6b 65 72 6e 65 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 | 0_kernel[:,1],c=ys,marker='+',la |
14c0 | 62 65 6c 3d 27 62 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 | bel='barycentric.mapping').pl.ti |
14e0 | 74 6c 65 28 22 42 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 | tle("Bary..mapping.(kernel)")..p |
1500 | 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 34 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a | l.subplot(2,2,4).pl.scatter(xt[: |
1520 | 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 | ,0],xt[:,1],c=yt,marker='o',labe |
1540 | 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e | l='Target.samples',alpha=.2).pl. |
1560 | 73 63 61 74 74 65 72 28 78 73 74 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 5f 6b 65 72 6e | scatter(xst_kernel[:,0],xst_kern |
1580 | 65 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c | el[:,1],c=ys,marker='+',label='L |
15a0 | 65 61 72 6e 65 64 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 45 73 74 69 6d | earned.mapping').pl.title("Estim |
15c0 | 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 22 29 0a 50 4b 03 04 14 00 00 00 00 00 57 | ..mapping.(kernel)").PK........W |
15e0 | 89 1e 4b aa d0 ce 62 7e 09 00 00 7e 09 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 | ..K...b~...~...!...auto_examples |
1600 | 2f 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 | /plot_optim_OTreg.py#.-*-.coding |
1620 | 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 3d | :.utf-8.-*-.""".================ |
1640 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 65 67 75 6c 61 72 69 7a 65 64 20 4f | ==================.Regularized.O |
1660 | 54 20 77 69 74 68 20 67 65 6e 65 72 69 63 20 73 6f 6c 76 65 72 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | T.with.generic.solver.========== |
1680 | 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 0a 22 22 22 0a 0a | ========================...""".. |
16a0 | 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 70 6c 6f | import.numpy.as.np.import.matplo |
16c0 | 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 0a 0a 23 23 23 | tlib.pylab.as.pl.import.ot...### |
16e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1700 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1720 | 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 47 65 6e 65 72 61 74 65 20 64 61 74 61 20 0a 23 23 23 | ###########.#.Generate.data..### |
1740 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1760 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1780 | 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 20 3d | ###########..#%%.parameters..n.= |
17a0 | 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 73 69 74 69 6f 6e 73 | .100..#.nb.bins..#.bin.positions |
17c0 | 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 70 2e 66 6c 6f 61 74 | .x.=.np.arange(n,.dtype=np.float |
17e0 | 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 69 6f 6e 73 0a 61 20 | 64)..#.Gaussian.distributions.a. |
1800 | 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 73 28 6e 2c 20 6d 3d | =.ot.datasets.get_1D_gauss(n,.m= |
1820 | 32 30 2c 20 73 3d 35 29 20 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 20 3d 20 | 20,.s=5)..#.m=.mean,.s=.std.b.=. |
1840 | 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 | ot.datasets.get_1D_gauss(n,.m=60 |
1860 | 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 2e 64 69 | ,.s=10)..#.loss.matrix.M.=.ot.di |
1880 | 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 70 65 28 | st(x.reshape((n,.1)),.x.reshape( |
18a0 | 28 6e 2c 20 31 29 29 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a 0a 23 23 23 23 23 23 23 23 23 | (n,.1))).M./=.M.max()..######### |
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 23 23 23 23 23 23 23 | ################################ |
18e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1900 | 23 23 23 23 23 0a 23 20 53 6f 6c 76 65 20 45 4d 44 20 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | #####.#.Solve.EMD..############# |
1920 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1940 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1960 | 23 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 20 62 2c 20 4d 29 | #..#%%.EMD..G0.=.ot.emd(a,.b,.M) |
1980 | 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 20 35 29 29 0a 6f | ..pl.figure(3,.figsize=(5,.5)).o |
19a0 | 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 2c 20 27 4f 54 20 | t.plot.plot1D_mat(a,.b,.G0,.'OT. |
19c0 | 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 23 23 23 23 23 23 | matrix.G0')..################### |
19e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1a00 | 23 23 23 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 53 6f | ###########################.#.So |
1a20 | 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 72 65 67 75 | lve.EMD.with.Frobenius.norm.regu |
1a40 | 6c 61 72 69 7a 61 74 69 6f 6e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | larization.##################### |
1a60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1a80 | 23 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 0a 23 25 25 20 45 | #########################..#%%.E |
1aa0 | 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 20 72 65 67 75 6c | xample.with.Frobenius.norm.regul |
1ac0 | 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 72 65 74 75 72 6e | arization...def.f(G):.....return |
1ae0 | 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 64 66 28 47 29 3a | .0.5.*.np.sum(G**2)...def.df(G): |
1b00 | 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 0a 0a 47 6c 32 20 | .....return.G...reg.=.1e-1..Gl2. |
1b20 | 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 2c 20 66 2c 20 64 | =.ot.optim.cg(a,.b,.M,.reg,.f,.d |
1b40 | 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 33 29 0a 6f | f,.verbose=True)..pl.figure(3).o |
1b60 | 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 32 2c 20 27 4f 54 | t.plot.plot1D_mat(a,.b,.Gl2,.'OT |
1b80 | 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 23 23 23 23 23 23 | .matrix.Frob..reg')..########### |
1ba0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1bc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1be0 | 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 70 69 63 20 72 65 | ###.#.Solve.EMD.with.entropic.re |
1c00 | 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | gularization.################### |
1c20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1c40 | 23 23 23 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 0a 23 25 25 | ###########################..#%% |
1c60 | 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 |
1c80 | 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. |
1ca0 | 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):. |
1cc0 | 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. |
1ce0 | 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 |
1d00 | 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. |
1d20 | 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 |
1d40 | 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 |
1d60 | 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')..############### |
1d80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1da0 | 23 23 23 23 23 23 23 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 | ###############################. |
1dc0 | 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. |
1de0 | 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 23 23 23 23 23 | +.entropic.regularization.###### |
1e00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1e20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
1e40 | 23 23 23 23 23 23 23 23 0a 0a 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 | ########..#%%.Example.with.Frobe |
1e60 | 6e 69 75 73 20 6e 6f 72 6d 20 2b 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 | nius.norm.+.entropic.regularizat |
1e80 | 69 6f 6e 20 77 69 74 68 20 67 63 67 0a 0a 64 65 66 20 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 | ion.with.gcg..def.f(G):.....retu |
1ea0 | 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 64 66 28 47 | rn.0.5.*.np.sum(G**2)...def.df(G |
1ec0 | 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 47 0a 0a 0a 72 65 67 31 20 3d 20 31 65 2d 33 0a 72 65 | ):.....return.G...reg1.=.1e-3.re |
1ee0 | 67 32 20 3d 20 31 65 2d 31 0a 0a 47 65 6c 32 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 67 63 67 28 61 | g2.=.1e-1..Gel2.=.ot.optim.gcg(a |
1f00 | 2c 20 62 2c 20 4d 2c 20 72 65 67 31 2c 20 72 65 67 32 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f | ,.b,.M,.reg1,.reg2,.f,.df,.verbo |
1f20 | 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 2c 20 66 69 67 73 69 7a 65 3d 28 | se=True)..pl.figure(5,.figsize=( |
1f40 | 35 2c 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 | 5,.5)).ot.plot.plot1D_mat(a,.b,. |
1f60 | 47 65 6c 32 2c 20 27 4f 54 20 65 6e 74 72 6f 70 69 63 20 2b 20 6d 61 74 72 69 78 20 46 72 6f 62 | Gel2,.'OT.entropic.+.matrix.Frob |
1f80 | 2e 20 72 65 67 27 29 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a | ..reg').pl.show().PK...........J |
1fa0 | f2 c1 a7 29 f1 09 00 00 f1 09 00 00 22 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c | ...)........"...auto_examples/pl |
1fc0 | 6f 74 5f 4f 54 44 41 5f 63 6c 61 73 73 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 | ot_OTDA_classes.py#.-*-.coding:. |
1fe0 | 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 3d 3d 3d | utf-8.-*-.""".================== |
2000 | 3d 3d 3d 3d 3d 3d 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 0a | ======.OT.for.domain.adaptation. |
2020 | 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 22 22 22 0a 0a 69 | ========================.."""..i |
2040 | 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 |
2060 | 6f 72 74 20 6f 74 0a 0a 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 35 30 | ort.ot.....#%%.parameters..n=150 |
2080 | 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 72 67 | .#.nb.samples.in.source.and.targ |
20a0 | 65 74 20 64 61 74 61 73 65 74 73 0a 0a 78 73 2c 79 73 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 | et.datasets..xs,ys=ot.datasets.g |
20c0 | 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 6e 29 0a 78 74 2c 79 | et_data_classif('3gauss',n).xt,y |
20e0 | 74 3d 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 27 | t=ot.datasets.get_data_classif(' |
2100 | 33 67 61 75 73 73 32 27 2c 6e 29 0a 0a 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 | 3gauss2',n).....#%%.plot.samples |
2120 | 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 | ..pl.figure(1)..pl.subplot(2,2,1 |
2140 | 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 | ).pl.scatter(xs[:,0],xs[:,1],c=y |
2160 | 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c | s,marker='+',label='Source.sampl |
2180 | 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 28 27 | es').pl.legend(loc=0).pl.title(' |
21a0 | 53 6f 75 72 63 65 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 70 | Source..distributions')..pl.subp |
21c0 | 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 | lot(2,2,2).pl.scatter(xt[:,0],xt |
21e0 | 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 | [:,1],c=yt,marker='o',label='Tar |
2200 | 67 65 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 | get.samples').pl.legend(loc=0).p |
2220 | 6c 2e 74 69 74 6c 65 28 27 74 61 72 67 65 74 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 | l.title('target..distributions') |
2240 | 0a 0a 0a 23 25 25 20 4f 54 20 65 73 74 69 6d 61 74 69 6f 6e 0a 0a 23 20 4c 50 20 70 72 6f 62 6c | ...#%%.OT.estimation..#.LP.probl |
2260 | 65 6d 0a 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 20 69 6e 69 | em.da_emd=ot.da.OTDA().....#.ini |
2280 | 74 20 63 6c 61 73 73 0a 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 20 20 20 20 | t.class.da_emd.fit(xs,xt)....... |
22a0 | 23 20 66 69 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 78 73 74 30 3d 64 61 5f 65 6d 64 2e | #.fit.distributions.xst0=da_emd. |
22c0 | 69 6e 74 65 72 70 28 29 20 20 20 20 23 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 6f 66 20 73 | interp()....#.interpolation.of.s |
22e0 | 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 0a 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 20 72 65 67 75 6c | ource.samples...#.sinkhorn.regul |
2300 | 61 72 69 7a 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 61 5f 65 6e 74 72 6f 70 3d 6f | arization.lambd=1e-1.da_entrop=o |
2320 | 74 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 5f 65 6e 74 72 6f 70 2e 66 | t.da.OTDA_sinkhorn().da_entrop.f |
2340 | 69 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 0a 78 73 74 73 3d 64 61 5f 65 6e 74 72 | it(xs,xt,reg=lambd).xsts=da_entr |
2360 | 6f 70 2e 69 6e 74 65 72 70 28 29 0a 0a 23 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 | op.interp()..#.non-convex.Group. |
2380 | 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 72 65 67 3d 31 65 2d 31 0a 65 74 | lasso.regularization.reg=1e-1.et |
23a0 | 61 3d 31 65 30 0a 64 61 5f 6c 70 6c 31 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6c 70 6c 31 28 29 0a | a=1e0.da_lpl1=ot.da.OTDA_lpl1(). |
23c0 | 64 61 5f 6c 70 6c 31 2e 66 69 74 28 78 73 2c 79 73 2c 78 74 2c 72 65 67 3d 72 65 67 2c 65 74 61 | da_lpl1.fit(xs,ys,xt,reg=reg,eta |
23e0 | 3d 65 74 61 29 0a 78 73 74 67 3d 64 61 5f 6c 70 6c 31 2e 69 6e 74 65 72 70 28 29 0a 0a 0a 23 20 | =eta).xstg=da_lpl1.interp()...#. |
2400 | 54 72 75 65 20 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 0a | True.Group.lasso.regularization. |
2420 | 72 65 67 3d 31 65 2d 31 0a 65 74 61 3d 32 65 30 0a 64 61 5f 6c 31 6c 32 3d 6f 74 2e 64 61 2e 4f | reg=1e-1.eta=2e0.da_l1l2=ot.da.O |
2440 | 54 44 41 5f 6c 31 6c 32 28 29 0a 64 61 5f 6c 31 6c 32 2e 66 69 74 28 78 73 2c 79 73 2c 78 74 2c | TDA_l1l2().da_l1l2.fit(xs,ys,xt, |
2460 | 72 65 67 3d 72 65 67 2c 65 74 61 3d 65 74 61 2c 6e 75 6d 49 74 65 72 6d 61 78 3d 32 30 2c 76 65 | reg=reg,eta=eta,numItermax=20,ve |
2480 | 72 62 6f 73 65 3d 54 72 75 65 29 0a 78 73 74 67 6c 3d 64 61 5f 6c 31 6c 32 2e 69 6e 74 65 72 70 | rbose=True).xstgl=da_l1l2.interp |
24a0 | 28 29 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 73 6f 75 72 63 | ()...#%%.plot.interpolated.sourc |
24c0 | 65 20 73 61 6d 70 6c 65 73 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 28 31 35 2c 38 29 29 0a 0a 70 | e.samples.pl.figure(4,(15,8))..p |
24e0 | 61 72 61 6d 5f 69 6d 67 3d 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 27 3a 27 6e 65 61 72 65 | aram_img={'interpolation':'neare |
2500 | 73 74 27 2c 27 63 6d 61 70 27 3a 27 6a 65 74 27 7d 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | st','cmap':'jet'}..pl.subplot(2, |
2520 | 34 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 65 6d 64 2e 47 2c 2a 2a 70 61 72 61 6d 5f | 4,1).pl.imshow(da_emd.G,**param_ |
2540 | 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 27 29 0a 0a 0a 70 6c 2e | img).pl.title('OT.matrix')...pl. |
2560 | 73 75 62 70 6c 6f 74 28 32 2c 34 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 65 6e 74 72 | subplot(2,4,2).pl.imshow(da_entr |
2580 | 6f 70 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d | op.G,**param_img).pl.title('OT.m |
25a0 | 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 | atrix.sinkhorn')..pl.subplot(2,4 |
25c0 | 2c 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 6c 70 6c 31 2e 47 2c 2a 2a 70 61 72 61 6d 5f | ,3).pl.imshow(da_lpl1.G,**param_ |
25e0 | 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 6e 6f 6e 2d 63 6f 6e | img).pl.title('OT.matrix.non-con |
2600 | 76 65 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | vex.Group.Lasso')..pl.subplot(2, |
2620 | 34 2c 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 6c 31 6c 32 2e 47 2c 2a 2a 70 61 72 61 6d | 4,4).pl.imshow(da_l1l2.G,**param |
2640 | 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 72 6f 75 70 20 | _img).pl.title('OT.matrix.Group. |
2660 | 4c 61 73 73 6f 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 35 29 0a 70 6c 2e 73 | Lasso')...pl.subplot(2,4,5).pl.s |
2680 | 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b | catter(xt[:,0],xt[:,1],c=yt,mark |
26a0 | 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c | er='o',label='Target.samples',al |
26c0 | 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 | pha=0.3).pl.scatter(xst0[:,0],xs |
26e0 | 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 | t0[:,1],c=ys,marker='+',label='T |
2700 | 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 | ransp.samples',s=30).pl.title('I |
2720 | 6e 74 65 72 70 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 | nterp.samples').pl.legend(loc=0) |
2740 | 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 36 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 | ..pl.subplot(2,4,6).pl.scatter(x |
2760 | 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c | t[:,0],xt[:,1],c=yt,marker='o',l |
2780 | 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 | abel='Target.samples',alpha=0.3) |
27a0 | 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 74 73 5b 3a 2c 31 5d 2c | .pl.scatter(xsts[:,0],xsts[:,1], |
27c0 | 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 | c=ys,marker='+',label='Transp.sa |
27e0 | 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 | mples',s=30).pl.title('Interp.sa |
2800 | 6d 70 6c 65 73 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 | mples.Sinkhorn')..pl.subplot(2,4 |
2820 | 2c 37 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 | ,7).pl.scatter(xt[:,0],xt[:,1],c |
2840 | 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d | =yt,marker='o',label='Target.sam |
2860 | 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 67 | ples',alpha=0.3).pl.scatter(xstg |
2880 | 5b 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c | [:,0],xstg[:,1],c=ys,marker='+', |
28a0 | 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e | label='Transp.samples',s=30).pl. |
28c0 | 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 6e 6f 6e 2d 63 6f 6e 76 65 78 | title('Interp.samples.non-convex |
28e0 | 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 38 | .Group.Lasso')..pl.subplot(2,4,8 |
2900 | 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 | ).pl.scatter(xt[:,0],xt[:,1],c=y |
2920 | 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c | t,marker='o',label='Target.sampl |
2940 | 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 67 6c 5b | es',alpha=0.3).pl.scatter(xstgl[ |
2960 | 3a 2c 30 5d 2c 78 73 74 67 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c | :,0],xstgl[:,1],c=ys,marker='+', |
2980 | 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e | label='Transp.samples',s=30).pl. |
29a0 | 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 72 6f 75 70 20 4c 61 73 73 | title('Interp.samples.Group.Lass |
29c0 | 6f 27 29 50 4b 03 04 14 00 00 00 00 00 57 89 1e 4b d0 88 31 48 54 15 00 00 54 15 00 00 1d 00 00 | o')PK........W..K..1HT...T...... |
29e0 | 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 70 79 23 20 | .auto_examples/plot_otda_d2.py#. |
2a00 | 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 3d 3d 3d 3d | -*-.coding:.utf-8.-*-.""".====== |
2a20 | 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. |
2a40 | 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d | empirical.distributions.======== |
2a60 | 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 61 | ======================..This.exa |
2a80 | 6d 70 6c 65 20 69 6e 74 72 6f 64 75 63 65 73 20 61 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 | mple.introduces.a.domain.adaptat |
2aa0 | 69 6f 6e 20 69 6e 20 61 20 32 44 20 73 65 74 74 69 6e 67 2e 20 49 74 20 65 78 70 6c 69 63 69 74 | ion.in.a.2D.setting..It.explicit |
2ac0 | 73 0a 74 68 65 20 70 72 6f 62 6c 65 6d 20 6f 66 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 | s.the.problem.of.domain.adaptati |
2ae0 | 6f 6e 20 61 6e 64 20 69 6e 74 72 6f 64 75 63 65 73 20 73 6f 6d 65 20 6f 70 74 69 6d 61 6c 20 74 | on.and.introduces.some.optimal.t |
2b00 | 72 61 6e 73 70 6f 72 74 0a 61 70 70 72 6f 61 63 68 65 73 20 74 6f 20 73 6f 6c 76 65 20 69 74 2e | ransport.approaches.to.solve.it. |
2b20 | 0a 0a 51 75 61 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 | ..Quantities.such.as.optimal.cou |
2b40 | 70 6c 69 6e 67 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 | plings,.greater.coupling.coeffic |
2b60 | 69 65 6e 74 73 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 | ients.and.transported.samples.ar |
2b80 | 65 20 72 65 70 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 | e.represented.in.order.to.give.a |
2ba0 | 20 76 69 73 75 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 | .visual.understanding.of.what.th |
2bc0 | 65 20 74 72 61 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 | e.transport.methods.are.doing.." |
2be0 | 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 72 65 6d | ""..#.Authors:.Remi.Flamary.<rem |
2c00 | 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 20 20 53 | i.flamary@unice.fr>.#..........S |
2c20 | 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 6e 40 67 | tanislas.Chambon.<stan.chambon@g |
2c40 | 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 63 65 6e | mail.com>.#.#.License:.MIT.Licen |
2c60 | 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 73 20 70 | se..import.matplotlib.pylab.as.p |
2c80 | 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 23 | l.import.ot...################## |
2ca0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2cc0 | 23 23 23 23 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 67 | ############################.#.g |
2ce0 | 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | enerate.data.################### |
2d00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2d20 | 23 23 23 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 0a 6e 5f 73 | ###########################..n_s |
2d40 | 61 6d 70 6c 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 | amples_source.=.150.n_samples_ta |
2d60 | 72 67 65 74 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 | rget.=.150..Xs,.ys.=.ot.datasets |
2d80 | 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 6e 5f 73 61 | .get_data_classif('3gauss',.n_sa |
2da0 | 6d 70 6c 65 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 | mples_source).Xt,.yt.=.ot.datase |
2dc0 | 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 27 2c 20 6e | ts.get_data_classif('3gauss2',.n |
2de0 | 5f 73 61 6d 70 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 | _samples_target)..#.Cost.matrix. |
2e00 | 4d 20 3d 20 6f 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 | M.=.ot.dist(Xs,.Xt,.metric='sqeu |
2e20 | 63 6c 69 64 65 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 | clidean')...#################### |
2e40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2e60 | 23 23 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 | ##########################.#.Ins |
2e80 | 74 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 | tantiate.the.different.transport |
2ea0 | 20 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 23 23 23 23 23 23 | .algorithms.and.fit.them.####### |
2ec0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2ee0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2f00 | 23 23 23 23 23 23 23 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 | #######..#.EMD.Transport.ot_emd. |
2f20 | 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 65 6d 64 2e 66 69 | =.ot.da.EMDTransport().ot_emd.fi |
2f40 | 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 |
2f60 | 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 69 6e 6b 68 6f | sport.ot_sinkhorn.=.ot.da.Sinkho |
2f80 | 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 73 69 6e 6b 68 | rnTransport(reg_e=1e-1).ot_sinkh |
2fa0 | 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 53 69 6e 6b 68 6f 72 | orn.fit(Xs=Xs,.Xt=Xt)..#.Sinkhor |
2fc0 | 6e 20 54 72 61 6e 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 | n.Transport.with.Group.lasso.reg |
2fe0 | 75 6c 61 72 69 7a 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 | ularization.ot_lpl1.=.ot.da.Sink |
3000 | 68 6f 72 6e 4c 70 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 | hornLpl1Transport(reg_e=1e-1,.re |
3020 | 67 5f 63 6c 3d 31 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 | g_cl=1e0).ot_lpl1.fit(Xs=Xs,.ys= |
3040 | 79 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 74 72 61 6e 73 70 6f 72 74 20 73 6f 75 72 63 65 20 73 | ys,.Xt=Xt)..#.transport.source.s |
3060 | 61 6d 70 6c 65 73 20 6f 6e 74 6f 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 0a 74 72 61 6e 73 | amples.onto.target.samples.trans |
3080 | 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 6d 28 58 73 3d 58 | p_Xs_emd.=.ot_emd.transform(Xs=X |
30a0 | 73 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 73 69 6e 6b 68 | s).transp_Xs_sinkhorn.=.ot_sinkh |
30c0 | 6f 72 6e 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 | orn.transform(Xs=Xs).transp_Xs_l |
30e0 | 70 6c 31 20 3d 20 6f 74 5f 6c 70 6c 31 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a | pl1.=.ot_lpl1.transform(Xs=Xs).. |
3100 | 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 | .############################### |
3120 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3140 | 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 70 6c 6f 74 73 20 | ###############.#.Fig.1.:.plots. |
3160 | 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 2b 20 6d 61 74 72 | source.and.target.samples.+.matr |
3180 | 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 23 23 23 23 23 23 23 | ix.of.pairwise.distance.######## |
31a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
31c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
31e0 | 23 23 23 23 23 23 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 | ######..pl.figure(1,.figsize=(10 |
3200 | 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 2e 73 63 | ,.10)).pl.subplot(2,.2,.1).pl.sc |
3220 | 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 73 2c 20 | atter(Xs[:,.0],.Xs[:,.1],.c=ys,. |
3240 | 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 70 6c 65 | marker='+',.label='Source.sample |
3260 | 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([]). |
3280 | 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 75 72 63 | pl.legend(loc=0).pl.title('Sourc |
32a0 | 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 2c 20 32 | e..samples')..pl.subplot(2,.2,.2 |
32c0 | 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 2c | ).pl.scatter(Xt[:,.0],.Xt[:,.1], |
32e0 | 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 74 | .c=yt,.marker='o',.label='Target |
3300 | 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 74 69 63 | .samples').pl.xticks([]).pl.ytic |
3320 | 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 74 6c 65 | ks([]).pl.legend(loc=0).pl.title |
3340 | 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 74 28 32 | ('Target.samples')..pl.subplot(2 |
3360 | 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 61 74 69 | ,.2,.3).pl.imshow(M,.interpolati |
3380 | 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 79 | on='nearest').pl.xticks([]).pl.y |
33a0 | 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 20 70 61 | ticks([]).pl.title('Matrix.of.pa |
33c0 | 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 61 79 6f | irwise.distances').pl.tight_layo |
33e0 | 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 23 23 | ut()...######################### |
3400 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3420 | 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 20 3a 20 | #####################.#.Fig.2.:. |
3440 | 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 68 65 20 | plots.optimal.couplings.for.the. |
3460 | 64 69 66 66 65 72 65 6e 74 20 6d 65 74 68 6f 64 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | different.methods.############## |
3480 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
34a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
34c0 | 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 30 2c 20 36 29 29 0a | ..pl.figure(2,.figsize=(10,.6)). |
34e0 | 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f | .pl.subplot(2,.3,.1).pl.imshow(o |
3500 | 74 5f 65 6d 64 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 | t_emd.coupling_,.interpolation=' |
3520 | 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 6b | nearest').pl.xticks([]).pl.ytick |
3540 | 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 67 | s([]).pl.title('Optimal.coupling |
3560 | 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 20 | \nEMDTransport')..pl.subplot(2,. |
3580 | 33 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 6e 2e 63 6f 75 70 | 3,.2).pl.imshow(ot_sinkhorn.coup |
35a0 | 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 65 73 74 27 29 0a | ling_,.interpolation='nearest'). |
35c0 | 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 |
35e0 | 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 6e | itle('Optimal.coupling\nSinkhorn |
3600 | 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 33 2c 20 33 29 | Transport')..pl.subplot(2,.3,.3) |
3620 | 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 6e 67 5f 2c 20 69 6e | .pl.imshow(ot_lpl1.coupling_,.in |
3640 | 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 6b 73 | terpolation='nearest').pl.xticks |
3660 | 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 70 74 | ([]).pl.yticks([]).pl.title('Opt |
3680 | 69 6d 61 6c 20 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 | imal.coupling\nSinkhornLpl1Trans |
36a0 | 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 34 29 0a 6f 74 2e 70 | port')..pl.subplot(2,.3,.4).ot.p |
36c0 | 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f | lot.plot2D_samples_mat(Xs,.Xt,.o |
36e0 | 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a | t_emd.coupling_,.c=[.5,..5,.1]). |
3700 | 70 6c 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 | pl.scatter(Xs[:,.0],.Xs[:,.1],.c |
3720 | 3d 79 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 | =ys,.marker='+',.label='Source.s |
3740 | 61 6d 70 6c 65 73 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 | amples').pl.scatter(Xt[:,.0],.Xt |
3760 | 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 20 6c 61 62 65 6c 3d | [:,.1],.c=yt,.marker='o',.label= |
3780 | 27 54 61 72 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 | 'Target.samples').pl.xticks([]). |
37a0 | 70 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 69 6e 20 63 6f 75 | pl.yticks([]).pl.title('Main.cou |
37c0 | 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 | pling.coefficients\nEMDTransport |
37e0 | 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 35 29 0a 6f 74 2e 70 6c 6f 74 2e | ')..pl.subplot(2,.3,.5).ot.plot. |
3800 | 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 73 69 | plot2D_samples_mat(Xs,.Xt,.ot_si |
3820 | 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 | nkhorn.coupling_,.c=[.5,..5,.1]) |
3840 | 0a 70 6c 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 | .pl.scatter(Xs[:,.0],.Xs[:,.1],. |
3860 | 63 3d 79 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 | c=ys,.marker='+',.label='Source. |
3880 | 73 61 6d 70 6c 65 73 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 | samples').pl.scatter(Xt[:,.0],.X |
38a0 | 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 20 6c 61 62 65 6c | t[:,.1],.c=yt,.marker='o',.label |
38c0 | 3d 27 54 61 72 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 | ='Target.samples').pl.xticks([]) |
38e0 | 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 4d 61 69 6e 20 63 6f | .pl.yticks([]).pl.title('Main.co |
3900 | 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 | upling.coefficients\nSinkhornTra |
3920 | 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 36 29 0a 6f 74 | nsport')..pl.subplot(2,.3,.6).ot |
3940 | 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 58 73 2c 20 58 74 2c | .plot.plot2D_samples_mat(Xs,.Xt, |
3960 | 20 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 | .ot_lpl1.coupling_,.c=[.5,..5,.1 |
3980 | 5d 29 0a 70 6c 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 | ]).pl.scatter(Xs[:,.0],.Xs[:,.1] |
39a0 | 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 3d 27 53 6f 75 72 63 | ,.c=ys,.marker='+',.label='Sourc |
39c0 | 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c | e.samples').pl.scatter(Xt[:,.0], |
39e0 | 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 20 6c 61 62 | .Xt[:,.1],.c=yt,.marker='o',.lab |
3a00 | 65 6c 3d 27 54 61 72 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 | el='Target.samples').pl.xticks([ |
3a20 | 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 4d 61 69 6e 20 | ]).pl.yticks([]).pl.title('Main. |
3a40 | 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 5c 6e 53 69 6e 6b 68 6f 72 6e 4c | coupling.coefficients\nSinkhornL |
3a60 | 70 6c 31 54 72 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 | pl1Transport').pl.tight_layout() |
3a80 | 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 | ...############################# |
3aa0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3ac0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 33 20 3a 20 70 6c 6f 74 | #################.#.Fig.3.:.plot |
3ae0 | 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 0a 23 23 23 23 23 23 23 23 23 23 23 | .transported.samples.########### |
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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3b40 | 23 23 23 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 | ###..#.display.transported.sampl |
3b60 | 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 34 29 29 | es.pl.figure(4,.figsize=(10,.4)) |
3b80 | 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 65 72 28 | .pl.subplot(1,.3,.1).pl.scatter( |
3ba0 | 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 65 72 | Xt[:,.0],.Xt[:,.1],.c=yt,.marker |
3bc0 | 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 20 73 | ='o',............label='Target.s |
3be0 | 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 28 74 | amples',.alpha=0.5).pl.scatter(t |
3c00 | 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 5f 65 6d | ransp_Xs_emd[:,.0],.transp_Xs_em |
3c20 | 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 6b 65 72 | d[:,.1],.c=ys,............marker |
3c40 | 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= |
3c60 | 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 |
3c80 | 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 6f 63 3d | s\nEmdTransport').pl.legend(loc= |
3ca0 | 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 29 0a 0a | 0).pl.xticks([]).pl.yticks([]).. |
3cc0 | 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 72 28 58 | pl.subplot(1,.3,.2).pl.scatter(X |
3ce0 | 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= |
3d00 | 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 |
3d20 | 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 |
3d40 | 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 70 5f 58 | ansp_Xs_sinkhorn[:,.0],.transp_X |
3d60 | 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 20 20 20 | s_sinkhorn[:,.1],.c=ys,......... |
3d80 | 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 73 61 6d | ...marker='+',.label='Transp.sam |
3da0 | 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 6f 72 74 | ples',.s=30).pl.title('Transport |
3dc0 | 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 27 29 0a | ed.samples\nSinkhornTransport'). |
3de0 | 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 70 6c 2e | pl.xticks([]).pl.yticks([])..pl. |
3e00 | 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 74 5b 3a | subplot(1,.3,.3).pl.scatter(Xt[: |
3e20 | 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 27 | ,.0],.Xt[:,.1],.c=yt,.marker='o' |
3e40 | 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 6c | ,............label='Target.sampl |
3e60 | 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 73 | es',.alpha=0.5).pl.scatter(trans |
3e80 | 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 6c 31 5b | p_Xs_lpl1[:,.0],.transp_Xs_lpl1[ |
3ea0 | 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 3d 27 | :,.1],.c=ys,............marker=' |
3ec0 | 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 33 30 | +',.label='Transp.samples',.s=30 |
3ee0 | 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 73 5c | ).pl.title('Transported.samples\ |
3f00 | 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 74 69 63 | nSinkhornLpl1Transport').pl.xtic |
3f20 | 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 74 5f 6c | ks([]).pl.yticks([])..pl.tight_l |
3f40 | 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 57 89 1e 4b | ayout().pl.show().PK........W..K |
3f60 | 59 38 a6 ff 13 07 00 00 13 07 00 00 1b 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c | Y8..............auto_examples/pl |
3f80 | 6f 74 5f 4f 54 5f 31 44 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d | ot_OT_1D.py#.-*-.coding:.utf-8.- |
3fa0 | 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 0a 31 44 20 6f | *-.""".====================.1D.o |
3fc0 | 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ptimal.transport.=============== |
3fe0 | 3d 3d 3d 3d 3d 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 | =====.."""..#.Author:.Remi.Flama |
4000 | 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 0a 23 20 4c | ry.<remi.flamary@unice.fr>.#.#.L |
4020 | 69 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 | icense:.MIT.License..import.nump |
4040 | 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 2e 70 79 6c 61 62 20 | y.as.np.import.matplotlib.pylab. |
4060 | 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 | as.pl.import.ot.from.ot.datasets |
4080 | 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 75 73 73 0a 0a 23 | .import.get_1D_gauss.as.gauss..# |
40a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
40c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
40e0 | 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 61 74 61 0a 23 23 | #############.#.Generate.data.## |
4100 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4120 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4140 | 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 20 | ############..#%%.parameters..n. |
4160 | 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 73 69 74 69 6f 6e | =.100..#.nb.bins..#.bin.position |
4180 | 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 70 2e 66 6c 6f 61 | s.x.=.np.arange(n,.dtype=np.floa |
41a0 | 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 69 6f 6e 73 0a 61 | t64)..#.Gaussian.distributions.a |
41c0 | 20 3d 20 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 | .=.gauss(n,.m=20,.s=5)..#.m=.mea |
41e0 | 6e 2c 20 73 3d 20 73 74 64 0a 62 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 31 | n,.s=.std.b.=.gauss(n,.m=60,.s=1 |
4200 | 30 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e | 0)..#.loss.matrix.M.=.ot.dist(x. |
4220 | 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 |
4240 | 29 29 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | ))).M./=.M.max()...############# |
4260 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4280 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
42a0 | 23 0a 23 20 50 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 | #.#.Plot.distributions.and.loss. |
42c0 | 6d 61 74 72 69 78 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 | matrix.######################### |
42e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4300 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23 25 25 20 70 6c 6f 74 20 | #####################..#%%.plot. |
4320 | 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,. |
4340 | 66 69 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 | figsize=(6.4,.3)).pl.plot(x,.a,. |
4360 | 27 62 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 | 'b',.label='Source.distribution' |
4380 | 29 0a 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 | ).pl.plot(x,.b,.'r',.label='Targ |
43a0 | 65 74 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 | et.distribution').pl.legend()..# |
43c0 | 25 25 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 | %%.plot.distributions.and.loss.m |
43e0 | 61 74 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 | atrix..pl.figure(2,.figsize=(5,. |
4400 | 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 4d 2c 20 | 5)).ot.plot.plot1D_mat(a,.b,.M,. |
4420 | 27 43 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 | 'Cost.matrix.M')..############## |
4440 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4460 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4480 | 0a 23 20 53 6f 6c 76 65 20 45 4d 44 20 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .#.Solve.EMD..################## |
44a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
44c0 | 23 23 23 23 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 0a 23 25 | ############################..#% |
44e0 | 25 20 45 4d 44 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 | %.EMD..G0.=.ot.emd(a,.b,.M)..pl. |
4500 | 66 69 67 75 72 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 | figure(3,.figsize=(5,.5)).ot.plo |
4520 | 74 2e 70 6c 6f 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 | t.plot1D_mat(a,.b,.G0,.'OT.matri |
4540 | 78 20 47 30 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 23 23 | x.G0')..######################## |
4560 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
4580 | 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 53 6f 6c 76 65 20 53 | ######################.#.Solve.S |
45a0 | 69 6e 6b 68 6f 72 6e 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 | inkhorn.######################## |
45c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
45e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23 25 25 20 53 69 6e 6b | ######################..#%%.Sink |
4600 | 68 6f 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 | horn..lambd.=.1e-3.Gs.=.ot.sinkh |
4620 | 6f 72 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 | orn(a,.b,.M,.lambd,.verbose=True |
4640 | 29 0a 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 | )..pl.figure(4,.figsize=(5,.5)). |
4660 | 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 73 2c 20 27 4f 54 | ot.plot.plot1D_mat(a,.b,.Gs,.'OT |
4680 | 20 6d 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 | .matrix.Sinkhorn')..pl.show().PK |
46a0 | 03 04 14 00 00 00 00 00 32 82 e3 4a 58 1b a1 c7 97 10 00 00 97 10 00 00 1d 00 00 00 61 75 74 6f | ........2..JX...............auto |
46c0 | 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 63 6f 6e 76 2e 70 79 23 20 2d 2a 2d 20 63 | _examples/plot_OT_conv.py#.-*-.c |
46e0 | 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 3d | oding:.utf-8.-*-.""".=========== |
4700 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 57 61 73 73 65 72 73 74 65 | ===================.1D.Wasserste |
4720 | 69 6e 20 62 61 72 79 63 65 6e 74 65 72 20 64 65 6d 6f 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | in.barycenter.demo.============= |
4740 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 0a 40 61 75 74 68 6f 72 3a 20 72 66 6c | =================...@author:.rfl |
4760 | 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d | amary."""..import.numpy.as.np.im |
4780 | 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 6f | port.matplotlib.pylab.as.pl.impo |
47a0 | 72 74 20 6f 74 0a 66 72 6f 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 | rt.ot.from.mpl_toolkits.mplot3d. |
47c0 | 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 23 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 33 64 20 | import.Axes3D.#necessary.for.3d. |
47e0 | 70 6c 6f 74 20 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 65 64 0a 69 6d 70 6f 72 74 20 73 63 69 | plot.even.if.not.used.import.sci |
4800 | 70 79 20 61 73 20 73 70 0a 69 6d 70 6f 72 74 20 73 63 69 70 79 2e 73 69 67 6e 61 6c 20 61 73 20 | py.as.sp.import.scipy.signal.as. |
4820 | 73 70 73 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 30 20 23 20 6e 62 20 62 69 | sps.#%%.parameters..n=10.#.nb.bi |
4840 | 6e 73 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 | ns..#.bin.positions.x=np.arange( |
4860 | 6e 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 0a 78 78 2c 79 79 3d 6e 70 2e 6d 65 | n,dtype=np.float64)..xx,yy=np.me |
4880 | 73 68 67 72 69 64 28 78 2c 78 29 0a 0a 0a 78 70 6f 73 3d 6e 70 2e 68 73 74 61 63 6b 28 28 78 78 | shgrid(x,x)...xpos=np.hstack((xx |
48a0 | 2e 72 65 73 68 61 70 65 28 2d 31 2c 31 29 2c 79 79 2e 72 65 73 68 61 70 65 28 2d 31 2c 31 29 29 | .reshape(-1,1),yy.reshape(-1,1)) |
48c0 | 29 0a 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 70 6f 73 29 0a 0a 0a 49 30 3d 28 28 78 78 2d 35 29 2a | )..M=ot.dist(xpos)...I0=((xx-5)* |
48e0 | 2a 32 2b 28 79 79 2d 35 29 2a 2a 32 3c 33 2a 2a 32 29 2a 31 2e 30 0a 49 31 3d 28 28 78 78 2d 37 | *2+(yy-5)**2<3**2)*1.0.I1=((xx-7 |
4900 | 29 2a 2a 32 2b 28 79 79 2d 37 29 2a 2a 32 3c 33 2a 2a 32 29 2a 31 2e 30 0a 0a 49 30 2f 3d 49 30 | )**2+(yy-7)**2<3**2)*1.0..I0/=I0 |
4920 | 2e 73 75 6d 28 29 0a 49 31 2f 3d 49 31 2e 73 75 6d 28 29 0a 0a 69 30 3d 49 30 2e 72 61 76 65 6c | .sum().I1/=I1.sum()..i0=I0.ravel |
4940 | 28 29 0a 69 31 3d 49 31 2e 72 61 76 65 6c 28 29 0a 0a 4d 3d 4d 5b 69 30 3e 30 2c 3a 5d 5b 3a 2c | ().i1=I1.ravel()..M=M[i0>0,:][:, |
4960 | 69 31 3e 30 5d 2e 63 6f 70 79 28 29 0a 69 30 3d 69 30 5b 69 30 3e 30 5d 0a 69 31 3d 69 31 5b 69 | i1>0].copy().i0=i0[i0>0].i1=i1[i |
4980 | 31 3e 30 5d 0a 49 74 6f 74 3d 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 28 49 30 5b 3a 2c 3a | 1>0].Itot=np.concatenate((I0[:,: |
49a0 | 2c 6e 70 2e 6e 65 77 61 78 69 73 5d 2c 49 31 5b 3a 2c 3a 2c 6e 70 2e 6e 65 77 61 78 69 73 5d 29 | ,np.newaxis],I1[:,:,np.newaxis]) |
49c0 | 2c 32 29 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 | ,2)...#%%.plot.the.distributions |
49e0 | 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 2c 32 2c 31 29 | ..pl.figure(1).pl.subplot(2,2,1) |
4a00 | 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 30 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 | .pl.imshow(I0).pl.subplot(2,2,2) |
4a20 | 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 0a 0a 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 | .pl.imshow(I1)...#%%.barycenter. |
4a40 | 63 6f 6d 70 75 74 61 74 69 6f 6e 0a 0a 61 6c 70 68 61 3d 30 2e 35 20 23 20 30 3c 3d 61 6c 70 68 | computation..alpha=0.5.#.0<=alph |
4a60 | 61 3c 3d 31 0a 77 65 69 67 68 74 73 3d 6e 70 2e 61 72 72 61 79 28 5b 31 2d 61 6c 70 68 61 2c 61 | a<=1.weights=np.array([1-alpha,a |
4a80 | 6c 70 68 61 5d 29 0a 0a 0a 64 65 66 20 63 6f 6e 76 32 28 49 2c 6b 29 3a 0a 20 20 20 20 72 65 74 | lpha])...def.conv2(I,k):.....ret |
4aa0 | 75 72 6e 20 73 70 2e 6e 64 69 6d 61 67 65 2e 63 6f 6e 76 6f 6c 76 65 31 64 28 73 70 2e 6e 64 69 | urn.sp.ndimage.convolve1d(sp.ndi |
4ac0 | 6d 61 67 65 2e 63 6f 6e 76 6f 6c 76 65 31 64 28 49 2c 6b 2c 61 78 69 73 3d 31 29 2c 6b 2c 61 78 | mage.convolve1d(I,k,axis=1),k,ax |
4ae0 | 69 73 3d 30 29 0a 0a 64 65 66 20 63 6f 6e 76 32 6e 28 49 2c 6b 29 3a 0a 20 20 20 20 72 65 73 3d | is=0)..def.conv2n(I,k):.....res= |
4b00 | 6e 70 2e 7a 65 72 6f 73 5f 6c 69 6b 65 28 49 29 0a 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 | np.zeros_like(I).....for.i.in.ra |
4b20 | 6e 67 65 28 49 2e 73 68 61 70 65 5b 32 5d 29 3a 0a 20 20 20 20 20 20 20 20 72 65 73 5b 3a 2c 3a | nge(I.shape[2]):.........res[:,: |
4b40 | 2c 69 5d 3d 63 6f 6e 76 32 28 49 5b 3a 2c 3a 2c 69 5d 2c 6b 29 0a 20 20 20 20 72 65 74 75 72 6e | ,i]=conv2(I[:,:,i],k).....return |
4b60 | 20 72 65 73 0a 0a 0a 64 65 66 20 67 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 67 2c 74 68 72 3d | .res...def.get_1Dkernel(reg,thr= |
4b80 | 31 65 2d 31 36 2c 77 6d 61 78 3d 31 30 32 34 29 3a 0a 20 20 20 20 77 3d 6d 61 78 28 6d 69 6e 28 | 1e-16,wmax=1024):.....w=max(min( |
4ba0 | 77 6d 61 78 2c 32 2a 69 6e 74 28 28 2d 6e 70 2e 6c 6f 67 28 74 68 72 29 2a 72 65 67 29 2a 2a 28 | wmax,2*int((-np.log(thr)*reg)**( |
4bc0 | 2e 35 29 29 29 2c 33 29 0a 20 20 20 20 78 3d 6e 70 2e 61 72 61 6e 67 65 28 77 2c 64 74 79 70 65 | .5))),3).....x=np.arange(w,dtype |
4be0 | 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 65 78 70 28 2d | =np.float64).....return.np.exp(- |
4c00 | 28 28 78 2d 77 2f 32 29 2a 2a 32 29 2f 72 65 67 29 0a 20 20 20 20 0a 74 68 72 3d 31 65 2d 31 36 | ((x-w/2)**2)/reg)......thr=1e-16 |
4c20 | 0a 72 65 67 3d 31 65 30 0a 0a 6b 3d 67 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 67 29 0a 70 6c | .reg=1e0..k=get_1Dkernel(reg).pl |
4c40 | 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 70 6c 6f 74 28 6b 29 0a 0a 49 30 35 3d 63 6f 6e 76 32 | .figure(2).pl.plot(k)..I05=conv2 |
4c60 | 28 49 30 2c 6b 29 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 | (I0,k)..pl.figure(1).pl.subplot( |
4c80 | 32 2c 32 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 30 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 | 2,2,1).pl.imshow(I0).pl.subplot( |
4ca0 | 32 2c 32 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 30 35 29 0a 0a 23 25 25 0a 0a 47 3d 6f 74 | 2,2,2).pl.imshow(I05)..#%%..G=ot |
4cc0 | 2e 65 6d 64 28 69 30 2c 69 31 2c 4d 29 0a 72 30 3d 6e 70 2e 73 75 6d 28 4d 2a 47 29 0a 0a 72 65 | .emd(i0,i1,M).r0=np.sum(M*G)..re |
4ce0 | 67 3d 31 65 2d 31 0a 47 73 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 6b 6e | g=1e-1.Gs=ot.bregman.sinkhorn_kn |
4d00 | 6f 70 70 28 69 30 2c 69 31 2c 4d 2c 72 65 67 3d 72 65 67 29 0a 72 73 3d 6e 70 2e 73 75 6d 28 4d | opp(i0,i1,M,reg=reg).rs=np.sum(M |
4d20 | 2a 47 73 29 0a 0a 23 25 25 0a 0a 64 65 66 20 6d 79 6c 6f 67 28 75 29 3a 0a 20 20 20 20 74 6d 70 | *Gs)..#%%..def.mylog(u):.....tmp |
4d40 | 3d 6e 70 2e 6c 6f 67 28 75 29 0a 20 20 20 20 74 6d 70 5b 6e 70 2e 69 73 6e 61 6e 28 74 6d 70 29 | =np.log(u).....tmp[np.isnan(tmp) |
4d60 | 5d 3d 30 0a 20 20 20 20 72 65 74 75 72 6e 20 74 6d 70 0a 0a 64 65 66 20 73 69 6e 6b 68 6f 72 6e | ]=0.....return.tmp..def.sinkhorn |
4d80 | 5f 63 6f 6e 76 28 61 2c 62 2c 20 72 65 67 2c 20 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 30 | _conv(a,b,.reg,.numItermax.=.100 |
4da0 | 30 2c 20 73 74 6f 70 54 68 72 3d 31 65 2d 39 2c 20 76 65 72 62 6f 73 65 3d 46 61 6c 73 65 2c 20 | 0,.stopThr=1e-9,.verbose=False,. |
4dc0 | 6c 6f 67 3d 46 61 6c 73 65 2c 2a 2a 6b 77 61 72 67 73 29 3a 0a 0a 0a 20 20 20 20 61 3d 6e 70 2e | log=False,**kwargs):.......a=np. |
4de0 | 61 73 61 72 72 61 79 28 61 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 20 20 20 20 | asarray(a,dtype=np.float64)..... |
4e00 | 62 3d 6e 70 2e 61 73 61 72 72 61 79 28 62 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 | b=np.asarray(b,dtype=np.float64) |
4e20 | 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 0a 20 20 20 20 69 66 20 6c 65 6e 28 62 2e 73 68 61 70 | ...................if.len(b.shap |
4e40 | 65 29 3e 32 3a 0a 20 20 20 20 20 20 20 20 6e 62 62 3d 62 2e 73 68 61 70 65 5b 32 5d 0a 20 20 20 | e)>2:.........nbb=b.shape[2].... |
4e60 | 20 20 20 20 20 61 3d 61 5b 3a 2c 3a 2c 6e 70 2e 6e 65 77 61 78 69 73 5d 0a 20 20 20 20 65 6c 73 | .....a=a[:,:,np.newaxis].....els |
4e80 | 65 3a 0a 20 20 20 20 20 20 20 20 6e 62 62 3d 30 0a 20 20 20 20 0a 0a 20 20 20 20 69 66 20 6c 6f | e:.........nbb=0...........if.lo |
4ea0 | 67 3a 0a 20 20 20 20 20 20 20 20 6c 6f 67 3d 7b 27 65 72 72 27 3a 5b 5d 7d 0a 0a 20 20 20 20 23 | g:.........log={'err':[]}......# |
4ec0 | 20 77 65 20 61 73 73 75 6d 65 20 74 68 61 74 20 6e 6f 20 64 69 73 74 61 6e 63 65 73 20 61 72 65 | .we.assume.that.no.distances.are |
4ee0 | 20 6e 75 6c 6c 20 65 78 63 65 70 74 20 74 68 6f 73 65 20 6f 66 20 74 68 65 20 64 69 61 67 6f 6e | .null.except.those.of.the.diagon |
4f00 | 61 6c 20 6f 66 20 64 69 73 74 61 6e 63 65 73 0a 20 20 20 20 69 66 20 6e 62 62 3a 0a 20 20 20 20 | al.of.distances.....if.nbb:..... |
4f20 | 20 20 20 20 75 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 | ....u.=.np.ones((a.shape[0],a.sh |
4f40 | 61 70 65 5b 31 5d 2c 6e 62 62 29 29 2f 28 6e 70 2e 70 72 6f 64 28 61 2e 73 68 61 70 65 5b 3a 32 | ape[1],nbb))/(np.prod(a.shape[:2 |
4f60 | 5d 29 29 0a 20 20 20 20 20 20 20 20 76 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 | ])).........v.=.np.ones((a.shape |
4f80 | 5b 30 5d 2c 61 2e 73 68 61 70 65 5b 31 5d 2c 6e 62 62 29 29 2f 28 6e 70 2e 70 72 6f 64 28 62 2e | [0],a.shape[1],nbb))/(np.prod(b. |
4fa0 | 73 68 61 70 65 5b 3a 32 5d 29 29 0a 20 20 20 20 20 20 20 20 61 30 3d 31 2e 30 2f 28 6e 70 2e 70 | shape[:2])).........a0=1.0/(np.p |
4fc0 | 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 5d 29 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 | rod(b.shape[:2])).....else:..... |
4fe0 | 20 20 20 20 75 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 | ....u.=.np.ones((a.shape[0],a.sh |
5000 | 61 70 65 5b 31 5d 29 29 2f 28 6e 70 2e 70 72 6f 64 28 61 2e 73 68 61 70 65 5b 3a 32 5d 29 29 0a | ape[1]))/(np.prod(a.shape[:2])). |
5020 | 20 20 20 20 20 20 20 20 76 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c | ........v.=.np.ones((a.shape[0], |
5040 | 61 2e 73 68 61 70 65 5b 31 5d 29 29 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 | a.shape[1]))/(np.prod(b.shape[:2 |
5060 | 5d 29 29 0a 20 20 20 20 20 20 20 20 61 30 3d 31 2e 30 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 | ])).........a0=1.0/(np.prod(b.sh |
5080 | 61 70 65 5b 3a 32 5d 29 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 | ape[:2]))....................... |
50a0 | 6b 3d 67 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 67 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 | k=get_1Dkernel(reg)..........if. |
50c0 | 6e 62 62 3a 0a 20 20 20 20 20 20 20 20 4b 3d 6c 61 6d 62 64 61 20 49 3a 20 63 6f 6e 76 32 6e 28 | nbb:.........K=lambda.I:.conv2n( |
50e0 | 49 2c 6b 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 4b 3d 6c 61 6d 62 64 61 20 | I,k).....else:.........K=lambda. |
5100 | 49 3a 20 63 6f 6e 76 32 28 49 2c 6b 29 0a 0a 20 20 20 20 63 70 74 20 3d 20 30 0a 20 20 20 20 65 | I:.conv2(I,k)......cpt.=.0.....e |
5120 | 72 72 3d 31 0a 20 20 20 20 77 68 69 6c 65 20 28 65 72 72 3e 73 74 6f 70 54 68 72 20 61 6e 64 20 | rr=1.....while.(err>stopThr.and. |
5140 | 63 70 74 3c 6e 75 6d 49 74 65 72 6d 61 78 29 3a 0a 20 20 20 20 20 20 20 20 75 70 72 65 76 20 3d | cpt<numItermax):.........uprev.= |
5160 | 20 75 0a 20 20 20 20 20 20 20 20 76 70 72 65 76 20 3d 20 76 0a 20 20 20 20 20 20 20 20 0a 20 20 | .u.........vprev.=.v............ |
5180 | 20 20 20 20 20 20 76 20 3d 20 6e 70 2e 64 69 76 69 64 65 28 62 2c 20 4b 28 75 29 29 0a 20 20 20 | ......v.=.np.divide(b,.K(u)).... |
51a0 | 20 20 20 20 20 75 20 3d 20 6e 70 2e 64 69 76 69 64 65 28 61 2c 20 4b 28 76 29 29 0a 0a 20 20 20 | .....u.=.np.divide(a,.K(v))..... |
51c0 | 20 20 20 20 20 69 66 20 28 6e 70 2e 61 6e 79 28 6e 70 2e 69 73 6e 61 6e 28 75 29 29 20 6f 72 20 | .....if.(np.any(np.isnan(u)).or. |
51e0 | 6e 70 2e 61 6e 79 28 6e 70 2e 69 73 6e 61 6e 28 76 29 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 | np.any(np.isnan(v))............. |
5200 | 20 6f 72 20 6e 70 2e 61 6e 79 28 6e 70 2e 69 73 69 6e 66 28 75 29 29 20 6f 72 20 6e 70 2e 61 6e | .or.np.any(np.isinf(u)).or.np.an |
5220 | 79 28 6e 70 2e 69 73 69 6e 66 28 76 29 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 | y(np.isinf(v))):.............#.w |
5240 | 65 20 68 61 76 65 20 72 65 61 63 68 65 64 20 74 68 65 20 6d 61 63 68 69 6e 65 20 70 72 65 63 69 | e.have.reached.the.machine.preci |
5260 | 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 63 6f 6d 65 20 62 61 63 6b 20 74 6f 20 | sion.............#.come.back.to. |
5280 | 70 72 65 76 69 6f 75 73 20 73 6f 6c 75 74 69 6f 6e 20 61 6e 64 20 71 75 69 74 20 6c 6f 6f 70 0a | previous.solution.and.quit.loop. |
52a0 | 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 27 57 61 72 6e 69 6e 67 3a 20 6e 75 6d 65 | ............print('Warning:.nume |
52c0 | 72 69 63 61 6c 20 65 72 72 6f 72 73 20 61 74 20 69 74 65 72 61 74 69 6f 6e 27 2c 20 63 70 74 29 | rical.errors.at.iteration',.cpt) |
52e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 20 3d 20 75 70 72 65 76 0a 20 20 20 20 20 20 20 20 20 | .............u.=.uprev.......... |
5300 | 20 20 20 76 20 3d 20 76 70 72 65 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 | ...v.=.vprev.............break.. |
5320 | 20 20 20 20 20 20 20 69 66 20 63 70 74 25 31 30 3d 3d 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 | .......if.cpt%10==0:............ |
5340 | 20 23 20 77 65 20 63 61 6e 20 73 70 65 65 64 20 75 70 20 74 68 65 20 70 72 6f 63 65 73 73 20 62 | .#.we.can.speed.up.the.process.b |
5360 | 79 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 74 68 65 20 65 72 72 6f 72 20 6f 6e 6c 79 20 61 6c | y.checking.for.the.error.only.al |
5380 | 6c 20 74 68 65 20 31 30 74 68 20 69 74 65 72 61 74 69 6f 6e 73 0a 0a 20 20 20 20 20 20 20 20 20 | l.the.10th.iterations........... |
53a0 | 20 20 20 65 72 72 20 3d 20 6e 70 2e 73 75 6d 28 28 75 2d 75 70 72 65 76 29 2a 2a 32 29 2f 6e 70 | ...err.=.np.sum((u-uprev)**2)/np |
53c0 | 2e 73 75 6d 28 28 75 29 2a 2a 32 29 2b 6e 70 2e 73 75 6d 28 28 76 2d 76 70 72 65 76 29 2a 2a 32 | .sum((u)**2)+np.sum((v-vprev)**2 |
53e0 | 29 2f 6e 70 2e 73 75 6d 28 28 76 29 2a 2a 32 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 | )/np.sum((v)**2)..............if |
5400 | 20 6c 6f 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 5b 27 65 72 72 27 5d | .log:.................log['err'] |
5420 | 2e 61 70 70 65 6e 64 28 65 72 72 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 76 65 72 | .append(err)..............if.ver |
5440 | 62 6f 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 70 74 25 32 30 30 | bose:.................if.cpt%200 |
5460 | 20 3d 3d 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 | .==0:.....................print( |
5480 | 27 7b 3a 35 73 7d 7c 7b 3a 31 32 73 7d 27 2e 66 6f 72 6d 61 74 28 27 49 74 2e 27 2c 27 45 72 72 | '{:5s}|{:12s}'.format('It.','Err |
54a0 | 27 29 2b 27 5c 6e 27 2b 27 2d 27 2a 31 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ')+'\n'+'-'*19)................. |
54c0 | 70 72 69 6e 74 28 27 7b 3a 35 64 7d 7c 7b 3a 38 65 7d 7c 27 2e 66 6f 72 6d 61 74 28 63 70 74 2c | print('{:5d}|{:8e}|'.format(cpt, |
54e0 | 65 72 72 29 29 0a 20 20 20 20 20 20 20 20 63 70 74 20 3d 20 63 70 74 20 2b 31 0a 20 20 20 20 69 | err)).........cpt.=.cpt.+1.....i |
5500 | 66 20 6c 6f 67 3a 0a 20 20 20 20 20 20 20 20 6c 6f 67 5b 27 75 27 5d 3d 75 0a 20 20 20 20 20 20 | f.log:.........log['u']=u....... |
5520 | 20 20 6c 6f 67 5b 27 76 27 5d 3d 76 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 69 66 20 6e 62 62 | ..log['v']=v..............if.nbb |
5540 | 3a 20 23 72 65 74 75 72 6e 20 6f 6e 6c 79 20 6c 6f 73 73 20 0a 20 20 20 20 20 20 20 20 72 65 73 | :.#return.only.loss..........res |
5560 | 3d 6e 70 2e 7a 65 72 6f 73 28 28 6e 62 62 29 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 | =np.zeros((nbb)).........for.i.i |
5580 | 6e 20 72 61 6e 67 65 28 6e 62 62 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 5b 69 5d | n.range(nbb):.............res[i] |
55a0 | 3d 6e 70 2e 73 75 6d 28 75 5b 3a 2c 69 5d 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 31 29 29 2a 4b | =np.sum(u[:,i].reshape((-1,1))*K |
55c0 | 2a 76 5b 3a 2c 69 5d 2e 72 65 73 68 61 70 65 28 28 31 2c 2d 31 29 29 2a 4d 29 0a 20 20 20 20 20 | *v[:,i].reshape((1,-1))*M)...... |
55e0 | 20 20 20 69 66 20 6c 6f 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 | ...if.log:.............return.re |
5600 | 73 2c 6c 6f 67 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 | s,log.........else:............. |
5620 | 72 65 74 75 72 6e 20 72 65 73 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 | return.res...................... |
5640 | 65 6c 73 65 3a 20 23 20 72 65 74 75 72 6e 20 4f 54 20 6d 61 74 72 69 78 0a 20 20 20 20 20 20 20 | else:.#.return.OT.matrix........ |
5660 | 20 72 65 73 3d 72 65 67 2a 61 30 2a 6e 70 2e 73 75 6d 28 61 2a 6d 79 6c 6f 67 28 75 2b 28 75 3d | .res=reg*a0*np.sum(a*mylog(u+(u= |
5680 | 3d 30 29 29 2b 62 2a 6d 79 6c 6f 67 28 76 2b 28 76 3d 3d 30 29 29 29 0a 20 20 20 20 20 20 20 20 | =0))+b*mylog(v+(v==0)))......... |
56a0 | 69 66 20 6c 6f 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 | if.log:......................... |
56c0 | 20 72 65 74 75 72 6e 20 72 65 73 2c 6c 6f 67 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 | .return.res,log.........else:... |
56e0 | 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 0a 0a 72 65 67 3d 31 65 30 0a 72 2c | ..........return.res..reg=1e0.r, |
5700 | 6c 6f 67 3d 73 69 6e 6b 68 6f 72 6e 5f 63 6f 6e 76 28 49 30 2c 49 31 2c 72 65 67 2c 76 65 72 62 | log=sinkhorn_conv(I0,I1,reg,verb |
5720 | 6f 73 65 3d 54 72 75 65 2c 6c 6f 67 3d 54 72 75 65 29 0a 61 3d 49 30 0a 62 3d 49 31 0a 75 3d 6c | ose=True,log=True).a=I0.b=I1.u=l |
5740 | 6f 67 5b 27 75 27 5d 0a 76 3d 6c 6f 67 5b 27 76 27 5d 0a 23 25 25 20 62 61 72 79 63 65 6e 74 65 | og['u'].v=log['v'].#%%.barycente |
5760 | 72 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 0a 50 4b 03 04 14 00 00 00 00 00 57 89 1e 4b fc 6c | r.interpolation.PK........W..K.l |
5780 | a8 1a 46 0b 00 00 46 0b 00 00 23 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 | ..F...F...#...auto_examples/plot |
57a0 | 5f 62 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 | _barycenter_1D.py#.-*-.coding:.u |
57c0 | 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.-*-.""".=================== |
57e0 | 3d 3d 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 | ===========.1D.Wasserstein.baryc |
5800 | 65 6e 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 | enter.demo.===================== |
5820 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 | =========.."""..#.Author:.Remi.F |
5840 | 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 23 | lamary.<remi.flamary@unice.fr>.# |
5860 | 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 6d 70 6f 72 74 20 | .#.License:.MIT.License..import. |
5880 | 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 2e 70 79 | numpy.as.np.import.matplotlib.py |
58a0 | 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 23 20 6e 65 63 65 73 73 61 72 79 20 | lab.as.pl.import.ot.#.necessary. |
58c0 | 66 6f 72 20 33 64 20 70 6c 6f 74 20 65 76 65 6e 20 69 66 20 6e 6f 74 20 75 73 65 64 0a 66 72 6f | for.3d.plot.even.if.not.used.fro |
58e0 | 6d 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 | m.mpl_toolkits.mplot3d.import.Ax |
5900 | 65 73 33 44 20 20 23 20 6e 6f 71 61 0a 66 72 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c | es3D..#.noqa.from.matplotlib.col |
5920 | 6c 65 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 0a 0a | lections.import.PolyCollection.. |
5940 | 0a 23 25 25 20 70 61 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 | .#%%.parameters..n.=.100..#.nb.b |
5960 | 69 6e 73 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 72 61 6e | ins..#.bin.positions.x.=.np.aran |
5980 | 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 23 20 47 61 75 73 73 | ge(n,.dtype=np.float64)..#.Gauss |
59a0 | 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 61 31 20 3d 20 6f 74 2e 64 61 74 61 73 65 | ian.distributions.a1.=.ot.datase |
59c0 | 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 | ts.get_1D_gauss(n,.m=20,.s=5)..# |
59e0 | 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 61 32 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 | .m=.mean,.s=.std.a2.=.ot.dataset |
5a00 | 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 38 29 0a 0a 23 20 | s.get_1D_gauss(n,.m=60,.s=8)..#. |
5a20 | 63 72 65 61 74 69 6e 67 20 6d 61 74 72 69 78 20 41 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6c 6c | creating.matrix.A.containing.all |
5a40 | 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 41 20 3d 20 6e 70 2e 76 73 74 61 63 6b 28 28 61 31 | .distributions.A.=.np.vstack((a1 |
5a60 | 2c 20 61 32 29 29 2e 54 0a 6e 5f 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 3d 20 41 2e 73 68 61 | ,.a2)).T.n_distributions.=.A.sha |
5a80 | 70 65 5b 31 5d 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 | pe[1]..#.loss.matrix.+.normaliza |
5aa0 | 74 69 6f 6e 0a 4d 20 3d 20 6f 74 2e 75 74 69 6c 73 2e 64 69 73 74 30 28 6e 29 0a 4d 20 2f 3d 20 | tion.M.=.ot.utils.dist0(n).M./=. |
5ac0 | 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 | M.max()..#%%.plot.the.distributi |
5ae0 | 6f 6e 73 0a 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 | ons..pl.figure(1,.figsize=(6.4,. |
5b00 | 33 29 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 62 75 74 69 6f | 3)).for.i.in.range(n_distributio |
5b20 | 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 29 0a 70 6c 2e | ns):.....pl.plot(x,.A[:,.i]).pl. |
5b40 | 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 70 6c 2e 74 69 67 68 74 5f | title('Distributions').pl.tight_ |
5b60 | 6c 61 79 6f 75 74 28 29 0a 0a 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 | layout()..#%%.barycenter.computa |
5b80 | 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 3c 3d 31 | tion..alpha.=.0.2..#.0<=alpha<=1 |
5ba0 | 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 61 2c 20 | .weights.=.np.array([1.-.alpha,. |
5bc0 | 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 2e 64 6f | alpha])..#.l2bary.bary_l2.=.A.do |
5be0 | 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 20 3d 20 | t(weights)..#.wasserstein.reg.=. |
5c00 | 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 61 72 79 | 1e-3.bary_wass.=.ot.bregman.bary |
5c20 | 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 6c 2e 66 | center(A,.M,.reg,.weights)..pl.f |
5c40 | 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 32 2c 20 | igure(2).pl.clf().pl.subplot(2,. |
5c60 | 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 62 75 74 | 1,.1).for.i.in.range(n_distribut |
5c80 | 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 29 0a 70 | ions):.....pl.plot(x,.A[:,.i]).p |
5ca0 | 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 73 75 62 | l.title('Distributions')..pl.sub |
5cc0 | 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 5f 6c 32 | plot(2,.1,.2).pl.plot(x,.bary_l2 |
5ce0 | 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 20 62 61 | ,.'r',.label='l2').pl.plot(x,.ba |
5d00 | 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 65 69 6e | ry_wass,.'g',.label='Wasserstein |
5d20 | 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 63 65 6e | ').pl.legend().pl.title('Barycen |
5d40 | 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 25 25 20 62 61 | ters').pl.tight_layout()..#%%.ba |
5d60 | 72 79 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 | rycenter.interpolation..n_alpha. |
5d80 | 3d 20 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 | =.11.alpha_list.=.np.linspace(0, |
5da0 | 20 31 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 | .1,.n_alpha)...B_l2.=.np.zeros(( |
5dc0 | 6e 2c 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 | n,.n_alpha))..B_wass.=.np.copy(B |
5de0 | 5f 6c 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 | _l2)..for.i.in.range(0,.n_alpha) |
5e00 | 3a 0a 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 | :.....alpha.=.alpha_list[i]..... |
5e20 | 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 61 2c 20 61 | weights.=.np.array([1.-.alpha,.a |
5e40 | 6c 70 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 | lpha]).....B_l2[:,.i].=.A.dot(we |
5e60 | 69 67 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 | ights).....B_wass[:,.i].=.ot.bre |
5e80 | 67 6d 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 | gman.barycenter(A,.M,.reg,.weigh |
5ea0 | 74 73 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 | ts)..#%%.plot.interpolation..pl. |
5ec0 | 66 69 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 | figure(3)..cmap.=.pl.cm.get_cmap |
5ee0 | 28 27 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 | ('viridis').verts.=.[].zs.=.alph |
5f00 | 61 5f 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 | a_list.for.i,.z.in.enumerate(zs) |
5f20 | 3a 0a 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 | :.....ys.=.B_l2[:,.i].....verts. |
5f40 | 61 70 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 | append(list(zip(x,.ys)))..ax.=.p |
5f60 | 6c 2e 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 | l.gcf().gca(projection='3d')..po |
5f80 | 6c 79 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 | ly.=.PolyCollection(verts,.facec |
5fa0 | 6f 6c 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 | olors=[cmap(a).for.a.in.alpha_li |
5fc0 | 73 74 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 | st]).poly.set_alpha(0.7).ax.add_ |
5fe0 | 63 6f 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 | collection3d(poly,.zs=zs,.zdir=' |
6000 | 79 27 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 | y').ax.set_xlabel('x').ax.set_xl |
6020 | 69 6d 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 | im3d(0,.n).ax.set_ylabel('$\\alp |
6040 | 68 61 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 | ha$').ax.set_ylim3d(0,.1).ax.set |
6060 | 5f 7a 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 | _zlabel('').ax.set_zlim3d(0,.B_l |
6080 | 32 2e 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 | 2.max().*.1.01).pl.title('Baryce |
60a0 | 6e 74 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 | nter.interpolation.with.l2').pl. |
60c0 | 74 69 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 | tight_layout()..pl.figure(4).cma |
60e0 | 70 20 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 | p.=.pl.cm.get_cmap('viridis').ve |
6100 | 72 74 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 | rts.=.[].zs.=.alpha_list.for.i,. |
6120 | 7a 20 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 | z.in.enumerate(zs):.....ys.=.B_w |
6140 | 61 73 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 | ass[:,.i].....verts.append(list( |
6160 | 7a 69 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 | zip(x,.ys)))..ax.=.pl.gcf().gca( |
6180 | 70 72 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 | projection='3d')..poly.=.PolyCol |
61a0 | 6c 65 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 | lection(verts,.facecolors=[cmap( |
61c0 | 61 29 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 | a).for.a.in.alpha_list]).poly.se |
61e0 | 74 5f 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 | t_alpha(0.7).ax.add_collection3d |
6200 | 28 70 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 | (poly,.zs=zs,.zdir='y').ax.set_x |
6220 | 6c 61 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 | label('x').ax.set_xlim3d(0,.n).a |
6240 | 78 2e 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 | x.set_ylabel('$\\alpha$').ax.set |
6260 | 5f 79 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 | _ylim3d(0,.1).ax.set_zlabel(''). |
6280 | 61 78 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 | ax.set_zlim3d(0,.B_l2.max().*.1. |
62a0 | 30 31 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 | 01).pl.title('Barycenter.interpo |
62c0 | 6c 61 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 | lation.with.Wasserstein').pl.tig |
62e0 | 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 04 14 00 00 00 00 | ht_layout()..pl.show().PK....... |
6300 | 00 57 89 1e 4b b7 26 0b b3 8b 11 00 00 8b 11 00 00 22 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c | .W..K.&.........."...auto_exampl |
6320 | 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 73 73 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 | es/plot_otda_classes.py#.-*-.cod |
6340 | 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 3d | ing:.utf-8.-*-.""".============= |
6360 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 | ===========.OT.for.domain.adapta |
6380 | 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 3d 3d 3d 3d 0a 0a 54 | tion.========================..T |
63a0 | 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 6d 61 69 6e 20 | his.example.introduces.a.domain. |
63c0 | 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 20 61 6e 64 20 74 | adaptation.in.a.2D.setting.and.t |
63e0 | 68 65 20 34 20 4f 54 44 41 0a 61 70 70 72 6f 61 63 68 65 73 20 63 75 72 72 65 6e 74 6c 79 20 73 | he.4.OTDA.approaches.currently.s |
6400 | 75 70 70 6f 72 74 65 64 20 69 6e 20 50 4f 54 2e 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 73 | upported.in.POT..."""..#.Authors |
6420 | 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 6e 69 | :.Remi.Flamary.<remi.flamary@uni |
6440 | 63 65 2e 66 72 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 | ce.fr>.#..........Stanislas.Cham |
6460 | 62 6f 6e 20 3c 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 | bon.<stan.chambon@gmail.com>.#.# |
6480 | 20 4c 69 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 6d 61 | .License:.MIT.License..import.ma |
64a0 | 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 74 0a 0a | tplotlib.pylab.as.pl.import.ot.. |
64c0 | 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 | .############################### |
64e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6500 | 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 65 20 64 61 74 61 0a | ###############.#.generate.data. |
6520 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6540 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6560 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 | ##############..n_source_samples |
6580 | 20 3d 20 31 35 30 0a 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 20 3d 20 31 35 30 0a 0a 58 | .=.150.n_target_samples.=.150..X |
65a0 | 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 | s,.ys.=.ot.datasets.get_data_cla |
65c0 | 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 29 | ssif('3gauss',.n_source_samples) |
65e0 | 0a 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 | .Xt,.yt.=.ot.datasets.get_data_c |
6600 | 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c | lassif('3gauss2',.n_target_sampl |
6620 | 65 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 23 23 23 23 23 | es)...########################## |
6640 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6660 | 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 61 | ####################.#.Instantia |
6680 | 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 72 | te.the.different.transport.algor |
66a0 | 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 68 65 6d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | ithms.and.fit.them.############# |
66c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
66e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6700 | 23 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 |
6720 | 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 |
6740 | 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. |
6760 | 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 |
6780 | 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 |
67a0 | 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 |
67c0 | 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 |
67e0 | 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 |
6800 | 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 |
6820 | 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 |
6840 | 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. |
6860 | 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. |
6880 | 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 |
68a0 | 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 |
68c0 | 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,...................... |
68e0 | 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 |
6900 | 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). |
6920 | 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 |
6940 | 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.=. |
6960 | 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 |
6980 | 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 |
69a0 | 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 |
69c0 | 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 |
69e0 | 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)... |
6a00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6a20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6a40 | 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 |
6a60 | 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 23 23 23 23 23 23 | ource.and.target.samples.####### |
6a80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6aa0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6ac0 | 23 23 23 23 23 23 23 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 | #######..pl.figure(1,.figsize=(1 |
6ae0 | 30 2c 20 35 29 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 | 0,.5)).pl.subplot(1,.2,.1).pl.sc |
6b00 | 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 73 2c 20 | atter(Xs[:,.0],.Xs[:,.1],.c=ys,. |
6b20 | 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 70 6c 65 | marker='+',.label='Source.sample |
6b40 | 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([]). |
6b60 | 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 75 72 63 | pl.legend(loc=0).pl.title('Sourc |
6b80 | 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 31 2c 20 32 2c 20 32 | e..samples')..pl.subplot(1,.2,.2 |
6ba0 | 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 2c | ).pl.scatter(Xt[:,.0],.Xt[:,.1], |
6bc0 | 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 74 | .c=yt,.marker='o',.label='Target |
6be0 | 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 74 69 63 | .samples').pl.xticks([]).pl.ytic |
6c00 | 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 74 6c 65 | ks([]).pl.legend(loc=0).pl.title |
6c20 | 28 27 54 61 72 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 | ('Target.samples').pl.tight_layo |
6c40 | 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 23 23 | ut()...######################### |
6c60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6c80 | 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 20 3a 20 | #####################.#.Fig.2.:. |
6ca0 | 70 6c 6f 74 20 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 | plot.optimal.couplings.and.trans |
6cc0 | 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ported.samples.################# |
6ce0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6d00 | 23 23 23 23 23 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 0a 70 | #############################..p |
6d20 | 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 3a 20 27 6e 65 | aram_img.=.{'interpolation':.'ne |
6d40 | 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 0a 0a 70 6c 2e | arest',.'cmap':.'spectral'}..pl. |
6d60 | 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 70 6c 2e 73 75 | figure(2,.figsize=(15,.8)).pl.su |
6d80 | 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 5f 65 6d 64 2e | bplot(2,.4,.1).pl.imshow(ot_emd. |
6da0 | 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 78 74 69 63 6b | coupling_,.**param_img).pl.xtick |
6dc0 | 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 70 | s([]).pl.yticks([]).pl.title('Op |
6de0 | 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 0a | timal.coupling\nEMDTransport').. |
6e00 | 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 6f 77 28 6f 74 | pl.subplot(2,.4,.2).pl.imshow(ot |
6e20 | 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 6d 5f 69 6d 67 | _sinkhorn.coupling_,.**param_img |
6e40 | 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 |
6e60 | 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 6e 6b 68 6f | .title('Optimal.coupling\nSinkho |
6e80 | 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 2c 20 34 2c 20 | rnTransport')..pl.subplot(2,.4,. |
6ea0 | 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 6e 67 5f 2c 20 | 3).pl.imshow(ot_lpl1.coupling_,. |
6ec0 | 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 70 6c 2e 79 74 | **param_img).pl.xticks([]).pl.yt |
6ee0 | 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 |
6f00 | 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 29 0a 0a 70 6c | ing\nSinkhornLpl1Transport')..pl |
6f20 | 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 28 6f 74 5f 6c | .subplot(2,.4,.4).pl.imshow(ot_l |
6f40 | 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 0a 70 6c 2e 78 | 1l2.coupling_,.**param_img).pl.x |
6f60 | 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 65 | ticks([]).pl.yticks([]).pl.title |
6f80 | 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 6e 4c 31 6c 32 | ('Optimal.coupling\nSinkhornL1l2 |
6fa0 | 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 34 2c 20 35 29 | Transport')..pl.subplot(2,.4,.5) |
6fc0 | 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],. |
6fe0 | 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 |
7000 | 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 33 29 0a | el='Target.samples',.alpha=0.3). |
7020 | 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 20 30 5d 2c 20 | pl.scatter(transp_Xs_emd[:,.0],. |
7040 | 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 20 20 20 20 20 | transp_Xs_emd[:,.1],.c=ys,...... |
7060 | 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. |
7080 | 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 5d 29 0a 70 6c | samples',.s=30).pl.xticks([]).pl |
70a0 | 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 70 6f 72 74 65 | .yticks([]).pl.title('Transporte |
70c0 | 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 6c 2e 6c 65 67 | d.samples\nEmdTransport').pl.leg |
70e0 | 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 75 62 70 6c 6f | end(loc="lower.left")..pl.subplo |
7100 | 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 20 30 5d 2c 20 | t(2,.4,.6).pl.scatter(Xt[:,.0],. |
7120 | 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 20 20 | Xt[:,.1],.c=yt,.marker='o',..... |
7140 | 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 20 61 | .......label='Target.samples',.a |
7160 | 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 5f 73 | lpha=0.3).pl.scatter(transp_Xs_s |
7180 | 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 6e 6b 68 6f 72 | inkhorn[:,.0],.transp_Xs_sinkhor |
71a0 | 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 61 72 6b 65 72 | n[:,.1],.c=ys,............marker |
71c0 | 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= |
71e0 | 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 28 5b 5d 29 0a | 30).pl.xticks([]).pl.yticks([]). |
7200 | 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 73 5c 6e 53 | pl.title('Transported.samples\nS |
7220 | 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 |
7240 | 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 2c 20 58 74 5b | ,.4,.7).pl.scatter(Xt[:,.0],.Xt[ |
7260 | 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 20 20 20 20 20 | :,.1],.c=yt,.marker='o',........ |
7280 | 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 20 61 6c 70 68 | ....label='Target.samples',.alph |
72a0 | 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 5f 6c 70 6c 31 | a=0.3).pl.scatter(transp_Xs_lpl1 |
72c0 | 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 5d 2c 20 63 3d | [:,.0],.transp_Xs_lpl1[:,.1],.c= |
72e0 | 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 6c 61 62 65 6c | ys,............marker='+',.label |
7300 | 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 2e 78 74 69 63 | ='Transp.samples',.s=30).pl.xtic |
7320 | 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 54 | ks([]).pl.yticks([]).pl.title('T |
7340 | 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 6e 4c 70 6c 31 | ransported.samples\nSinkhornLpl1 |
7360 | 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 34 2c 20 38 29 | Transport')..pl.subplot(2,.4,.8) |
7380 | 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],. |
73a0 | 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 |
73c0 | 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 33 29 0a | el='Target.samples',.alpha=0.3). |
73e0 | 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 2c 20 30 5d 2c | pl.scatter(transp_Xs_l1l2[:,.0], |
7400 | 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 2c 0a 20 20 20 | .transp_Xs_l1l2[:,.1],.c=ys,.... |
7420 | 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 61 6e 73 | ........marker='+',.label='Trans |
7440 | 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 5d 29 0a | p.samples',.s=30).pl.xticks([]). |
7460 | 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 70 6f 72 | pl.yticks([]).pl.title('Transpor |
7480 | 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 61 6e 73 70 6f | ted.samples\nSinkhornL1l2Transpo |
74a0 | 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 73 68 6f 77 28 | rt').pl.tight_layout()..pl.show( |
74c0 | 29 0a 50 4b 03 04 14 00 00 00 00 00 57 89 1e 4b 2c a6 a3 c4 4a 11 00 00 4a 11 00 00 30 00 00 00 | ).PK........W..K,...J...J...0... |
74e0 | 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 5f | auto_examples/plot_otda_mapping_ |
7500 | 63 6f 6c 6f 72 73 5f 69 6d 61 67 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 | colors_images.py#.-*-.coding:.ut |
7520 | 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 3d | f-8.-*-.""".==================== |
7540 | 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 | ================================ |
7560 | 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 | ================================ |
7580 | 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 69 74 68 20 69 | .OT.for.domain.adaptation.with.i |
75a0 | 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 69 74 68 20 6d | mage.color.adaptation.[6].with.m |
75c0 | 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | apping.estimation.[8].========== |
75e0 | 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 | ================================ |
7600 | 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 | ================================ |
7620 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 | ==========..[6].Ferradans,.S.,.P |
7640 | 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c | apadakis,.N.,.Peyre,.G.,.&.Aujol |
7660 | 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 0a 20 20 20 20 | ,.J..F..(2014)..Regularized..... |
7680 | 64 69 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 | discrete.optimal.transport..SIAM |
76a0 | 20 4a 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 20 37 28 | .Journal.on.Imaging.Sciences,.7( |
76c0 | 33 29 2c 0a 20 20 20 20 31 38 35 33 2d 31 38 38 32 2e 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 | 3),.....1853-1882..[8].M..Perrot |
76e0 | 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 | ,.N..Courty,.R..Flamary,.A..Habr |
7700 | 61 72 64 2c 20 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 | ard,."Mapping.estimation.for.... |
7720 | 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 | .discrete.optimal.transport",.Ne |
7740 | 75 72 61 6c 20 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 | ural.Information.Processing.Syst |
7760 | 65 6d 73 20 28 4e 49 50 53 29 2c 0a 20 20 20 20 32 30 31 36 2e 0a 0a 22 22 22 0a 0a 23 20 41 75 | ems.(NIPS),.....2016..."""..#.Au |
7780 | 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 6d 61 72 | thors:.Remi.Flamary.<remi.flamar |
77a0 | 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 6c 61 73 | y@unice.fr>.#..........Stanislas |
77c0 | 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 63 6f 6d | .Chambon.<stan.chambon@gmail.com |
77e0 | 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 6d 70 6f | >.#.#.License:.MIT.License..impo |
7800 | 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 69 6d 70 6f 72 74 | rt.numpy.as.np.from.scipy.import |
7820 | 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 2e 70 79 6c 61 62 | .ndimage.import.matplotlib.pylab |
7840 | 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 72 20 3d 20 6e 70 2e 72 61 6e 64 6f 6d 2e | .as.pl.import.ot..r.=.np.random. |
7860 | 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 6d 61 74 28 49 29 3a | RandomState(42)...def.im2mat(I): |
7880 | 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 20 6d 61 | ....."""Converts.and.image.to.ma |
78a0 | 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 0a 20 20 20 | trix.(one.pixel.per.line)""".... |
78c0 | 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 5d 20 2a 20 | .return.I.reshape((I.shape[0].*. |
78e0 | 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 0a 0a 64 65 66 20 6d | I.shape[1],.I.shape[2]))...def.m |
7900 | 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 6f 6e 76 65 72 74 73 | at2im(X,.shape):....."""Converts |
7920 | 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 65 22 22 22 0a 20 20 | .back.a.matrix.to.an.image"""... |
7940 | 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 0a 0a 0a 64 65 66 20 | ..return.X.reshape(shape)...def. |
7960 | 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 63 6c 69 70 28 49 2c | minmax(I):.....return.np.clip(I, |
7980 | 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 23 23 23 23 23 23 23 | .0,.1)...####################### |
79a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
79c0 | 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 |
79e0 | 74 65 20 64 61 74 61 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 | te.data.######################## |
7a00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7a20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23 20 4c 6f 61 64 69 6e | ######################..#.Loadin |
7a40 | 67 20 69 6d 61 67 65 73 0a 49 31 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e | g.images.I1.=.ndimage.imread('.. |
7a60 | 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e | /data/ocean_day.jpg').astype(np. |
7a80 | 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 0a 49 32 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 | float64)./.256.I2.=.ndimage.imre |
7aa0 | 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 2e 61 | ad('../data/ocean_sunset.jpg').a |
7ac0 | 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 0a 0a 0a 58 31 20 3d 20 69 | stype(np.float64)./.256...X1.=.i |
7ae0 | 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 0a 0a 23 20 74 72 61 | m2mat(I1).X2.=.im2mat(I2)..#.tra |
7b00 | 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 64 78 31 20 3d 20 72 | ining.samples.nb.=.1000.idx1.=.r |
7b20 | 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 65 3d 28 6e 62 2c 29 | .randint(X1.shape[0],.size=(nb,) |
7b40 | 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 70 65 5b 30 5d 2c 20 | ).idx2.=.r.randint(X2.shape[0],. |
7b60 | 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 2c 20 3a 5d 0a 58 74 | size=(nb,))..Xs.=.X1[idx1,.:].Xt |
7b80 | 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 23 23 23 23 23 23 23 | .=.X2[idx2,.:]...############### |
7ba0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7bc0 | 23 23 23 23 23 23 23 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 | ###############################. |
7be0 | 23 20 44 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 66 6f 72 20 70 69 78 65 6c 20 64 69 | #.Domain.adaptation.for.pixel.di |
7c00 | 73 74 72 69 62 75 74 69 6f 6e 20 74 72 61 6e 73 66 65 72 0a 23 23 23 23 23 23 23 23 23 23 23 23 | stribution.transfer.############ |
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 23 | ################################ |
7c60 | 23 23 0a 0a 23 20 45 4d 44 54 72 61 6e 73 70 6f 72 74 0a 6f 74 5f 65 6d 64 20 3d 20 6f 74 2e 64 | ##..#.EMDTransport.ot_emd.=.ot.d |
7c80 | 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 |
7ca0 | 73 2c 20 58 74 3d 58 74 29 0a 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 | s,.Xt=Xt).transp_Xs_emd.=.ot_emd |
7cc0 | 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 0a 49 6d 61 67 65 5f 65 6d 64 20 3d 20 6d 69 | .transform(Xs=X1).Image_emd.=.mi |
7ce0 | 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 2c 20 49 31 2e 73 68 | nmax(mat2im(transp_Xs_emd,.I1.sh |
7d00 | 61 70 65 29 29 0a 0a 23 20 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 0a 6f 74 5f 73 69 | ape))..#.SinkhornTransport.ot_si |
7d20 | 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 73 70 6f 72 74 | nkhorn.=.ot.da.SinkhornTransport |
7d40 | 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 74 28 58 73 3d | (reg_e=1e-1).ot_sinkhorn.fit(Xs= |
7d60 | 58 73 2c 20 58 74 3d 58 74 29 0a 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 | Xs,.Xt=Xt).transp_Xs_sinkhorn.=. |
7d80 | 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 0a 49 6d 61 67 65 5f 73 69 | ot_emd.transform(Xs=X1).Image_si |
7da0 | 6e 6b 68 6f 72 6e 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 | nkhorn.=.minmax(mat2im(transp_Xs |
7dc0 | 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 0a 6f 74 5f 6d 61 70 70 69 6e | _sinkhorn,.I1.shape))..ot_mappin |
7de0 | 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 61 6e 73 70 6f 72 | g_linear.=.ot.da.MappingTranspor |
7e00 | 74 28 0a 20 20 20 20 6d 75 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 | t(.....mu=1e0,.eta=1e-8,.bias=Tr |
7e20 | 75 65 2c 20 6d 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 6f | ue,.max_iter=20,.verbose=True).o |
7e40 | 74 5f 6d 61 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 | t_mapping_linear.fit(Xs=Xs,.Xt=X |
7e60 | 74 29 0a 0a 58 31 74 6c 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 61 | t)..X1tl.=.ot_mapping_linear.tra |
7e80 | 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 0a 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 | nsform(Xs=X1).Image_mapping_line |
7ea0 | 61 72 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6c 2c 20 49 31 2e 73 68 61 70 | ar.=.minmax(mat2im(X1tl,.I1.shap |
7ec0 | 65 29 29 0a 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 61 | e))..ot_mapping_gaussian.=.ot.da |
7ee0 | 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 3d 31 65 30 2c 20 65 | .MappingTransport(.....mu=1e0,.e |
7f00 | 74 61 3d 31 65 2d 32 2c 20 73 69 67 6d 61 3d 31 2c 20 62 69 61 73 3d 46 61 6c 73 65 2c 20 6d 61 | ta=1e-2,.sigma=1,.bias=False,.ma |
7f20 | 78 5f 69 74 65 72 3d 31 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 6f 74 5f 6d 61 70 70 | x_iter=10,.verbose=True).ot_mapp |
7f40 | 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a | ing_gaussian.fit(Xs=Xs,.Xt=Xt).. |
7f60 | 58 31 74 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 6e 73 | X1tn.=.ot_mapping_gaussian.trans |
7f80 | 66 6f 72 6d 28 58 73 3d 58 31 29 20 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 | form(Xs=X1)..#.use.the.estimated |
7fa0 | 20 6d 61 70 70 69 6e 67 0a 49 6d 61 67 65 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 | .mapping.Image_mapping_gaussian. |
7fc0 | 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 | =.minmax(mat2im(X1tn,.I1.shape)) |
7fe0 | 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 | ...############################# |
8000 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8020 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 70 6c 6f 74 20 6f 72 69 67 69 6e 61 | #################.#.plot.origina |
8040 | 6c 20 69 6d 61 67 65 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | l.images.####################### |
8060 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8080 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 70 6c 2e 66 69 67 75 | #######################..pl.figu |
80a0 | 72 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 | re(1,.figsize=(6.4,.3)).pl.subpl |
80c0 | 6f 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 | ot(1,.2,.1).pl.imshow(I1).pl.axi |
80e0 | 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 |
8100 | 2e 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 | .subplot(1,.2,.2).pl.imshow(I2). |
8120 | 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 32 | pl.axis('off').pl.title('Image.2 |
8140 | 27 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 | ').pl.tight_layout()...######### |
8160 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8180 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
81a0 | 23 23 23 23 23 0a 23 20 70 6c 6f 74 20 70 69 78 65 6c 20 76 61 6c 75 65 73 20 64 69 73 74 72 69 | #####.#.plot.pixel.values.distri |
81c0 | 62 75 74 69 6f 6e 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 | bution.######################### |
81e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8200 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 70 6c 2e 66 69 67 75 72 65 | #####################..pl.figure |
8220 | 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f | (2,.figsize=(6.4,.5))..pl.subplo |
8240 | 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 | t(1,.2,.1).pl.scatter(Xs[:,.0],. |
8260 | 58 73 5b 3a 2c 20 32 5d 2c 20 63 3d 58 73 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 | Xs[:,.2],.c=Xs).pl.axis([0,.1,.0 |
8280 | 2c 20 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c | ,.1]).pl.xlabel('Red').pl.ylabel |
82a0 | 28 27 42 6c 75 65 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 | ('Blue').pl.title('Image.1')..pl |
82c0 | 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b | .subplot(1,.2,.2).pl.scatter(Xt[ |
82e0 | 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 32 5d 2c 20 63 3d 58 74 29 0a 70 6c 2e 61 78 69 73 28 5b | :,.0],.Xt[:,.2],.c=Xt).pl.axis([ |
8300 | 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 27 29 0a 70 6c | 0,.1,.0,.1]).pl.xlabel('Red').pl |
8320 | 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 6d 61 67 65 20 | .ylabel('Blue').pl.title('Image. |
8340 | 32 27 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 | 2').pl.tight_layout()...######## |
8360 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8380 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
83a0 | 23 23 23 23 23 23 0a 23 20 70 6c 6f 74 20 74 72 61 6e 73 66 6f 72 6d 65 64 20 69 6d 61 67 65 73 | ######.#.plot.transformed.images |
83c0 | 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 | .############################### |
83e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
8400 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 | ###############..pl.figure(2,.fi |
8420 | 67 73 69 7a 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 | gsize=(10,.5))..pl.subplot(2,.3, |
8440 | 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 66 66 27 29 | .1).pl.imshow(I1).pl.axis('off') |
8460 | 0a 70 6c 2e 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 | .pl.title('Im..1')..pl.subplot(2 |
8480 | 2c 20 33 2c 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 | ,.3,.4).pl.imshow(I2).pl.axis('o |
84a0 | 66 66 27 29 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 | ff').pl.title('Im..2')..pl.subpl |
84c0 | 6f 74 28 32 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 | ot(2,.3,.2).pl.imshow(Image_emd) |
84e0 | 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 45 6d 64 54 72 61 | .pl.axis('off').pl.title('EmdTra |
8500 | 6e 73 70 6f 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 | nsport')..pl.subplot(2,.3,.5).pl |
8520 | 2e 69 6d 73 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 | .imshow(Image_sinkhorn).pl.axis( |
8540 | 27 6f 66 66 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 | 'off').pl.title('SinkhornTranspo |
8560 | 72 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 6c 2e 69 6d 73 | rt')..pl.subplot(2,.3,.3).pl.ims |
8580 | 68 6f 77 28 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 | how(Image_mapping_linear).pl.axi |
85a0 | 73 28 27 6f 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 | s('off').pl.title('MappingTransp |
85c0 | 6f 72 74 20 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 | ort.(linear)')..pl.subplot(2,.3, |
85e0 | 20 36 29 0a 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 | .6).pl.imshow(Image_mapping_gaus |
8600 | 73 69 61 6e 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 | sian).pl.axis('off').pl.title('M |
8620 | 61 70 70 69 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 | appingTransport.(gaussian)').pl. |
8640 | 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 04 14 00 | tight_layout()..pl.show().PK.... |
8660 | 00 00 00 00 6a 7b 82 49 25 c9 d6 13 1c 06 00 00 1c 06 00 00 28 00 00 00 61 75 74 6f 5f 65 78 61 | ....j{.I%...........(...auto_exa |
8680 | 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 6c 61 72 67 65 2e 70 79 | mples/demo_OT_2D_sampleslarge.py |
86a0 | 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 44 65 6d 6f | #.-*-.coding:.utf-8.-*-.""".Demo |
86c0 | 20 66 6f 72 20 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 | .for.2D.Optimal.transport.betwee |
86e0 | 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 40 61 75 74 68 | n.empirical.distributions..@auth |
8700 | 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 | or:.rflamary."""..import.numpy.a |
8720 | 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. |
8740 | 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 | pl.import.ot..#%%.parameters.and |
8760 | 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 6e 3d 35 30 30 30 20 23 20 6e 62 20 73 61 | .data.generation..n=5000.#.nb.sa |
8780 | 6d 70 6c 65 73 0a 0a 6d 75 5f 73 3d 6e 70 2e 61 72 72 61 79 28 5b 30 2c 30 5d 29 0a 63 6f 76 5f | mples..mu_s=np.array([0,0]).cov_ |
87a0 | 73 3d 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 30 5d 2c 5b 30 2c 31 5d 5d 29 0a 0a 6d 75 5f 74 3d | s=np.array([[1,0],[0,1]])..mu_t= |
87c0 | 6e 70 2e 61 72 72 61 79 28 5b 34 2c 34 5d 29 0a 63 6f 76 5f 74 3d 6e 70 2e 61 72 72 61 79 28 5b | np.array([4,4]).cov_t=np.array([ |
87e0 | 5b 31 2c 2d 2e 38 5d 2c 5b 2d 2e 38 2c 31 5d 5d 29 0a 0a 78 73 3d 6f 74 2e 64 61 74 61 73 65 74 | [1,-.8],[-.8,1]])..xs=ot.dataset |
8800 | 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 6d 75 5f 73 2c 63 6f | s.get_2D_samples_gauss(n,mu_s,co |
8820 | 76 5f 73 29 0a 78 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c | v_s).xt=ot.datasets.get_2D_sampl |
8840 | 65 73 5f 67 61 75 73 73 28 6e 2c 6d 75 5f 74 2c 63 6f 76 5f 74 29 0a 0a 61 2c 62 20 3d 20 6f 74 | es_gauss(n,mu_t,cov_t)..a,b.=.ot |
8860 | 2e 75 6e 69 66 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 | .unif(n),ot.unif(n).#.uniform.di |
8880 | 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 |
88a0 | 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 | trix.M=ot.dist(xs,xt).M/=M.max() |
88c0 | 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 23 70 6c 2e 66 69 67 75 72 65 28 31 | ..#%%.plot.samples..#pl.figure(1 |
88e0 | 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c | ).#pl.plot(xs[:,0],xs[:,1],'+b', |
8900 | 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 70 6c 6f 74 | label='Source.samples').#pl.plot |
8920 | 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 | (xt[:,0],xt[:,1],'xr',label='Tar |
8940 | 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a | get.samples').#pl.legend(loc=0). |
8960 | 23 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 | #pl.title('Source.and.traget.dis |
8980 | 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 23 0a 23 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 23 70 6c | tributions').#.#pl.figure(2).#pl |
89a0 | 2e 69 6d 73 68 6f 77 28 4d 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 | .imshow(M,interpolation='nearest |
89c0 | 27 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 0a 23 0a | ').#pl.title('Cost.matrix.M').#. |
89e0 | 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 23 70 6c 2e | .#%%.EMD..G0=ot.emd(a,b,M)..#pl. |
8a00 | 66 69 67 75 72 65 28 33 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c | figure(3).#pl.imshow(G0,interpol |
8a20 | 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d | ation='nearest').#pl.title('OT.m |
8a40 | 61 74 72 69 78 20 47 30 27 29 0a 23 0a 23 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 23 6f 74 2e 70 | atrix.G0').#.#pl.figure(4).#ot.p |
8a60 | 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 78 74 2c 47 30 2c | lot.plot2D_samples_mat(xs,xt,G0, |
8a80 | 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 | c=[.5,.5,1]).#pl.plot(xs[:,0],xs |
8aa0 | 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 | [:,1],'+b',label='Source.samples |
8ac0 | 27 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 | ').#pl.plot(xt[:,0],xt[:,1],'xr' |
8ae0 | 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 6c 65 67 | ,label='Target.samples').#pl.leg |
8b00 | 65 6e 64 28 6c 6f 63 3d 30 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 | end(loc=0).#pl.title('OT.matrix. |
8b20 | 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 0a 0a 23 25 25 20 73 69 6e 6b 68 6f 72 6e 0a 0a 23 | with.samples')...#%%.sinkhorn..# |
8b40 | 20 72 65 67 20 74 65 72 6d 0a 6c 61 6d 62 64 3d 35 65 2d 33 0a 0a 47 73 3d 6f 74 2e 73 69 6e 6b | .reg.term.lambd=5e-3..Gs=ot.sink |
8b60 | 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 0a 0a 23 70 6c 2e 66 69 67 75 72 65 28 35 29 | horn(a,b,M,lambd)..#pl.figure(5) |
8b80 | 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 47 73 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 | .#pl.imshow(Gs,interpolation='ne |
8ba0 | 61 72 65 73 74 27 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e | arest').#pl.title('OT.matrix.sin |
8bc0 | 6b 68 6f 72 6e 27 29 0a 23 0a 23 70 6c 2e 66 69 67 75 72 65 28 36 29 0a 23 6f 74 2e 70 6c 6f 74 | khorn').#.#pl.figure(6).#ot.plot |
8be0 | 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 73 2c 63 6f 6c | .plot2D_samples_mat(xs,xt,Gs,col |
8c00 | 6f 72 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 | or=[.5,.5,1]).#pl.plot(xs[:,0],x |
8c20 | 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 | s[:,1],'+b',label='Source.sample |
8c40 | 73 27 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 | s').#pl.plot(xt[:,0],xt[:,1],'xr |
8c60 | 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 6c 65 | ',label='Target.samples').#pl.le |
8c80 | 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 23 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 | gend(loc=0).#pl.title('OT.matrix |
8ca0 | 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 23 0a 0a 50 4b 03 04 | .Sinkhorn.with.samples').#..PK.. |
8cc0 | 14 00 00 00 00 00 57 89 1e 4b bc ce 2e 7c c3 0b 00 00 c3 0b 00 00 21 00 00 00 61 75 74 6f 5f 65 | ......W..K...|........!...auto_e |
8ce0 | 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 70 79 23 20 2d 2a 2d | xamples/plot_OT_L1_vs_L2.py#.-*- |
8d00 | 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.-*-.""".========= |
8d20 | 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 | ================================ |
8d40 | 3d 0a 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 66 6f 72 20 64 69 66 66 65 | =.2D.Optimal.transport.for.diffe |
8d60 | 72 65 6e 74 20 6d 65 74 72 69 63 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | rent.metrics.=================== |
8d80 | 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 53 74 6f 6c 65 20 74 | =======================..Stole.t |
8da0 | 68 65 20 66 69 67 75 72 65 20 69 64 65 61 20 66 72 6f 6d 20 46 69 67 2e 20 31 20 61 6e 64 20 32 | he.figure.idea.from.Fig..1.and.2 |
8dc0 | 20 69 6e 0a 68 74 74 70 73 3a 2f 2f 61 72 78 69 76 2e 6f 72 67 2f 70 64 66 2f 31 37 30 36 2e 30 | .in.https://arxiv.org/pdf/1706.0 |
8de0 | 37 36 35 30 2e 70 64 66 0a 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 | 7650.pdf..."""..#.Author:.Remi.F |
8e00 | 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 23 | lamary.<remi.flamary@unice.fr>.# |
8e20 | 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 6d 70 6f 72 74 20 | .#.License:.MIT.License..import. |
8e40 | 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 2e 70 79 | numpy.as.np.import.matplotlib.py |
8e60 | 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 | lab.as.pl.import.ot..#%%.paramet |
8e80 | 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 66 6f 72 20 64 61 74 | ers.and.data.generation..for.dat |
8ea0 | 61 20 69 6e 20 72 61 6e 67 65 28 32 29 3a 0a 0a 20 20 20 20 69 66 20 64 61 74 61 3a 0a 20 20 20 | a.in.range(2):......if.data:.... |
8ec0 | 20 20 20 20 20 6e 20 3d 20 32 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0a 20 20 20 20 20 20 | .....n.=.20..#.nb.samples....... |
8ee0 | 20 20 78 73 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 20 32 29 29 0a 20 20 20 20 20 20 20 20 | ..xs.=.np.zeros((n,.2))......... |
8f00 | 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 20 31 0a 20 20 20 20 | xs[:,.0].=.np.arange(n).+.1..... |
8f20 | 20 20 20 20 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 | ....xs[:,.1].=.(np.arange(n).+.1 |
8f40 | 29 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 | ).*.-0.001..#.to.make.it.strictl |
8f60 | 79 20 63 6f 6e 76 65 78 2e 2e 2e 0a 0a 20 20 20 20 20 20 20 20 78 74 20 3d 20 6e 70 2e 7a 65 72 | y.convex.............xt.=.np.zer |
8f80 | 6f 73 28 28 6e 2c 20 32 29 29 0a 20 20 20 20 20 20 20 20 78 74 5b 3a 2c 20 31 5d 20 3d 20 6e 70 | os((n,.2)).........xt[:,.1].=.np |
8fa0 | 2e 61 72 61 6e 67 65 28 6e 29 20 2b 20 31 0a 20 20 20 20 65 6c 73 65 3a 0a 0a 20 20 20 20 20 20 | .arange(n).+.1.....else:........ |
8fc0 | 20 20 6e 20 3d 20 35 30 20 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0a 20 20 20 20 20 20 20 20 78 | ..n.=.50..#.nb.samples.........x |
8fe0 | 74 6f 74 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e 20 2b 20 31 2c 20 32 29 29 0a 20 20 20 20 20 | tot.=.np.zeros((n.+.1,.2))...... |
9000 | 20 20 20 78 74 6f 74 5b 3a 2c 20 30 5d 20 3d 20 6e 70 2e 63 6f 73 28 0a 20 20 20 20 20 20 20 20 | ...xtot[:,.0].=.np.cos(......... |
9020 | 20 20 20 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 20 2b 20 31 29 20 2b 20 31 2e 30 29 20 2a 20 30 | ....(np.arange(n.+.1).+.1.0).*.0 |
9040 | 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 29 0a 20 20 20 20 20 20 | .9./.(n.+.2).*.2.*.np.pi)....... |
9060 | 20 20 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 20 20 20 20 20 | ..xtot[:,.1].=.np.sin(.......... |
9080 | 20 20 20 28 6e 70 2e 61 72 61 6e 67 65 28 6e 20 2b 20 31 29 20 2b 20 31 2e 30 29 20 2a 20 30 2e | ...(np.arange(n.+.1).+.1.0).*.0. |
90a0 | 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 29 0a 0a 20 20 20 20 20 20 | 9./.(n.+.2).*.2.*.np.pi)........ |
90c0 | 20 20 78 73 20 3d 20 78 74 6f 74 5b 3a 6e 2c 20 3a 5d 0a 20 20 20 20 20 20 20 20 78 74 20 3d 20 | ..xs.=.xtot[:n,.:].........xt.=. |
90e0 | 78 74 6f 74 5b 31 3a 2c 20 3a 5d 0a 0a 20 20 20 20 61 2c 20 62 20 3d 20 6f 74 2e 75 6e 69 66 28 | xtot[1:,.:]......a,.b.=.ot.unif( |
9100 | 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 73 74 72 69 | n),.ot.unif(n)..#.uniform.distri |
9120 | 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 0a 20 20 20 20 23 20 6c 6f 73 73 20 6d 61 | bution.on.samples......#.loss.ma |
9140 | 74 72 69 78 0a 20 20 20 20 4d 31 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 | trix.....M1.=.ot.dist(xs,.xt,.me |
9160 | 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 0a 20 20 20 20 4d 31 20 2f 3d 20 4d 31 2e 6d | tric='euclidean').....M1./=.M1.m |
9180 | 61 78 28 29 0a 0a 20 20 20 20 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 20 20 20 20 4d 32 20 3d | ax()......#.loss.matrix.....M2.= |
91a0 | 20 6f 74 2e 64 69 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 | .ot.dist(xs,.xt,.metric='sqeucli |
91c0 | 64 65 61 6e 27 29 0a 20 20 20 20 4d 32 20 2f 3d 20 4d 32 2e 6d 61 78 28 29 0a 0a 20 20 20 20 23 | dean').....M2./=.M2.max()......# |
91e0 | 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 20 20 20 20 4d 70 20 3d 20 6e 70 2e 73 71 72 74 28 6f 74 | .loss.matrix.....Mp.=.np.sqrt(ot |
9200 | 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 65 61 6e 27 | .dist(xs,.xt,.metric='euclidean' |
9220 | 29 29 0a 20 20 20 20 4d 70 20 2f 3d 20 4d 70 2e 6d 61 78 28 29 0a 0a 20 20 20 20 23 25 25 20 70 | )).....Mp./=.Mp.max()......#%%.p |
9240 | 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 20 20 20 20 70 6c 2e 66 69 67 75 72 65 28 31 20 2b 20 33 | lot.samples......pl.figure(1.+.3 |
9260 | 20 2a 20 64 61 74 61 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 0a 20 20 20 20 70 6c 2e | .*.data,.figsize=(7,.3)).....pl. |
9280 | 63 6c 66 28 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 5b 3a | clf().....pl.plot(xs[:,.0],.xs[: |
92a0 | 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 |
92c0 | 73 27 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 | s').....pl.plot(xt[:,.0],.xt[:,. |
92e0 | 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' |
9300 | 29 0a 20 20 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 0a 20 20 20 20 70 6c 2e 74 69 | ).....pl.axis('equal').....pl.ti |
9320 | 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 72 69 62 75 74 | tle('Source.and.traget.distribut |
9340 | 69 6f 6e 73 27 29 0a 0a 20 20 20 20 70 6c 2e 66 69 67 75 72 65 28 32 20 2b 20 33 20 2a 20 64 61 | ions')......pl.figure(2.+.3.*.da |
9360 | 74 61 2c 20 66 69 67 73 69 7a 65 3d 28 37 2c 20 33 29 29 0a 0a 20 20 20 20 70 6c 2e 73 75 62 70 | ta,.figsize=(7,.3))......pl.subp |
9380 | 6c 6f 74 28 31 2c 20 33 2c 20 31 29 0a 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 4d 31 2c 20 69 | lot(1,.3,.1).....pl.imshow(M1,.i |
93a0 | 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 20 20 20 20 70 6c 2e 74 | nterpolation='nearest').....pl.t |
93c0 | 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a 0a 20 20 20 20 70 6c 2e 73 | itle('Euclidean.cost')......pl.s |
93e0 | 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 0a 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 4d 32 | ubplot(1,.3,.2).....pl.imshow(M2 |
9400 | 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 20 20 20 20 70 | ,.interpolation='nearest').....p |
9420 | 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 74 27 | l.title('Squared.Euclidean.cost' |
9440 | 29 0a 0a 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 0a 20 20 20 20 70 | )......pl.subplot(1,.3,.3).....p |
9460 | 6c 2e 69 6d 73 68 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 | l.imshow(Mp,.interpolation='near |
9480 | 65 73 74 27 29 0a 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 53 71 72 74 20 45 75 63 6c 69 64 65 | est').....pl.title('Sqrt.Euclide |
94a0 | 61 6e 20 63 6f 73 74 27 29 0a 20 20 20 20 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a | an.cost').....pl.tight_layout(). |
94c0 | 0a 20 20 20 20 23 25 25 20 45 4d 44 0a 20 20 20 20 47 31 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 | .....#%%.EMD.....G1.=.ot.emd(a,. |
94e0 | 62 2c 20 4d 31 29 0a 20 20 20 20 47 32 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 32 29 | b,.M1).....G2.=.ot.emd(a,.b,.M2) |
9500 | 0a 20 20 20 20 47 70 20 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 70 29 0a 0a 20 20 20 20 | .....Gp.=.ot.emd(a,.b,.Mp)...... |
9520 | 70 6c 2e 66 69 67 75 72 65 28 33 20 2b 20 33 20 2a 20 64 61 74 61 2c 20 66 69 67 73 69 7a 65 3d | pl.figure(3.+.3.*.data,.figsize= |
9540 | 28 37 2c 20 33 29 29 0a 0a 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 31 29 | (7,.3))......pl.subplot(1,.3,.1) |
9560 | 0a 20 20 20 20 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 | .....ot.plot.plot2D_samples_mat( |
9580 | 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 20 20 20 20 70 | xs,.xt,.G1,.c=[.5,..5,.1]).....p |
95a0 | 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', |
95c0 | 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 20 20 20 20 70 6c 2e | .label='Source.samples').....pl. |
95e0 | 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 |
9600 | 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 61 78 | abel='Target.samples').....pl.ax |
9620 | 69 73 28 27 65 71 75 61 6c 27 29 0a 20 20 20 20 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d | is('equal').....#.pl.legend(loc= |
9640 | 30 29 0a 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 45 75 63 6c 69 64 65 61 6e 27 29 0a | 0).....pl.title('OT.Euclidean'). |
9660 | 0a 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 32 29 0a 20 20 20 20 6f 74 2e | .....pl.subplot(1,.3,.2).....ot. |
9680 | 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 20 78 74 2c 20 | plot.plot2D_samples_mat(xs,.xt,. |
96a0 | 47 32 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 | G2,.c=[.5,..5,.1]).....pl.plot(x |
96c0 | 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 27 | s[:,.0],.xs[:,.1],.'+b',.label=' |
96e0 | 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b | Source.samples').....pl.plot(xt[ |
9700 | 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 61 | :,.0],.xt[:,.1],.'xr',.label='Ta |
9720 | 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 61 | rget.samples').....pl.axis('equa |
9740 | 6c 27 29 0a 20 20 20 20 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 20 20 20 20 70 | l').....#.pl.legend(loc=0).....p |
9760 | 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 27 29 0a | l.title('OT.squared.Euclidean'). |
9780 | 0a 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 33 2c 20 33 29 0a 20 20 20 20 6f 74 2e | .....pl.subplot(1,.3,.3).....ot. |
97a0 | 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 20 78 74 2c 20 | plot.plot2D_samples_mat(xs,.xt,. |
97c0 | 47 70 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 | Gp,.c=[.5,..5,.1]).....pl.plot(x |
97e0 | 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 27 | s[:,.0],.xs[:,.1],.'+b',.label=' |
9800 | 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b | Source.samples').....pl.plot(xt[ |
9820 | 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 61 | :,.0],.xt[:,.1],.'xr',.label='Ta |
9840 | 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 61 | rget.samples').....pl.axis('equa |
9860 | 6c 27 29 0a 20 20 20 20 23 20 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 20 20 20 20 70 | l').....#.pl.legend(loc=0).....p |
9880 | 6c 2e 74 69 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 20 20 20 | l.title('OT.sqrt.Euclidean').... |
98a0 | 20 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 | .pl.tight_layout()..pl.show().PK |
98c0 | 03 04 14 00 00 00 00 00 57 89 1e 4b 7b 03 bf 32 03 07 00 00 03 07 00 00 23 00 00 00 61 75 74 6f | ........W..K{..2........#...auto |
98e0 | 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 70 79 23 | _examples/plot_OT_2D_samples.py# |
9900 | 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 3d 3d 3d | .-*-.coding:.utf-8.-*-.""".===== |
9920 | 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 | ================================ |
9940 | 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 61 6e 73 | ===============.2D.Optimal.trans |
9960 | 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 62 75 74 | port.between.empirical.distribut |
9980 | 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 3d 3d 3d | ions.=========================== |
99a0 | 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 22 22 22 0a 0a | =========================..""".. |
99c0 | 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 61 | #.Author:.Remi.Flamary.<remi.fla |
99e0 | 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 20 | mary@unice.fr>.#.#.License:.MIT. |
9a00 | 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 6f | License..import.numpy.as.np.impo |
9a20 | 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 74 | rt.matplotlib.pylab.as.pl.import |
9a40 | 20 6f 74 0a 0a 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 | .ot..#%%.parameters.and.data.gen |
9a60 | 65 72 61 74 69 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 | eration..n.=.50..#.nb.samples..m |
9a80 | 75 5f 73 20 3d 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 | u_s.=.np.array([0,.0]).cov_s.=.n |
9aa0 | 70 2e 61 72 72 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 | p.array([[1,.0],.[0,.1]])..mu_t. |
9ac0 | 3d 20 6e 70 2e 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 | =.np.array([4,.4]).cov_t.=.np.ar |
9ae0 | 72 61 79 28 5b 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 | ray([[1,.-.8],.[-.8,.1]])..xs.=. |
9b00 | 6f 74 2e 64 61 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 | ot.datasets.get_2D_samples_gauss |
9b20 | 28 6e 2c 20 6d 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 | (n,.mu_s,.cov_s).xt.=.ot.dataset |
9b40 | 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 75 5f 74 2c 20 | s.get_2D_samples_gauss(n,.mu_t,. |
9b60 | 63 6f 76 5f 74 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 | cov_t)..a,.b.=.np.ones((n,))./.n |
9b80 | 2c 20 6e 70 2e 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 | ,.np.ones((n,))./.n..#.uniform.d |
9ba0 | 69 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 | istribution.on.samples..#.loss.m |
9bc0 | 61 74 72 69 78 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 | atrix.M.=.ot.dist(xs,.xt).M./=.M |
9be0 | 2e 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 | .max()..#%%.plot.samples..pl.fig |
9c00 | 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 2c 20 31 | ure(1).pl.plot(xs[:,.0],.xs[:,.1 |
9c20 | 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 73 27 29 | ],.'+b',.label='Source.samples') |
9c40 | 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 27 78 72 | .pl.plot(xt[:,.0],.xt[:,.1],.'xr |
9c60 | 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 2e 6c 65 | ',.label='Target.samples').pl.le |
9c80 | 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 61 6e 64 | gend(loc=0).pl.title('Source.and |
9ca0 | 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 69 67 75 | .target.distributions')..pl.figu |
9cc0 | 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 69 6f 6e | re(2).pl.imshow(M,.interpolation |
9ce0 | 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 74 72 69 | ='nearest').pl.title('Cost.matri |
9d00 | 78 20 4d 27 29 0a 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 20 | x.M')...#%%.EMD..G0.=.ot.emd(a,. |
9d20 | 62 2c 20 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 30 | b,.M)..pl.figure(3).pl.imshow(G0 |
9d40 | 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 70 6c 2e 74 69 | ,.interpolation='nearest').pl.ti |
9d60 | 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 | tle('OT.matrix.G0')..pl.figure(4 |
9d80 | 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, |
9da0 | 20 78 74 2c 20 47 30 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,.G0,.c=[.5,..5,.1]).pl.plot( |
9dc0 | 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= |
9de0 | 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[:,. |
9e00 | 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 |
9e20 | 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. |
9e40 | 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a | title('OT.matrix.with.samples'). |
9e60 | 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 61 6d 62 64 | ..#%%.sinkhorn..#.reg.term.lambd |
9e80 | 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 20 62 2c 20 | .=.1e-3..Gs.=.ot.sinkhorn(a,.b,. |
9ea0 | 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 6d 73 68 6f | M,.lambd)..pl.figure(5).pl.imsho |
9ec0 | 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 27 29 0a 70 | w(Gs,.interpolation='nearest').p |
9ee0 | 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 29 0a 0a 70 | l.title('OT.matrix.sinkhorn')..p |
9f00 | 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 61 6d 70 6c | l.figure(6).ot.plot.plot2D_sampl |
9f20 | 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 2c 20 2e 35 | es_mat(xs,.xt,.Gs,.color=[.5,..5 |
9f40 | 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] |
9f60 | 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'). |
9f80 | 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' |
9fa0 | 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 |
9fc0 | 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 53 | end(loc=0).pl.title('OT.matrix.S |
9fe0 | 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 68 6f 77 28 | inkhorn.with.samples')..pl.show( |
a000 | 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a ec af 42 31 2e 0a 00 00 2e 0a 00 00 1d 00 00 00 | ).PK...........J..B1............ |
a020 | 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 32 44 2e 70 79 23 20 2d | auto_examples/plot_OTDA_2D.py#.- |
a040 | 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 3d 3d 3d 3d 3d | *-.coding:.utf-8.-*-.""".======= |
a060 | 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 65 | =======================.OT.for.e |
a080 | 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d | mpirical.distributions.========= |
a0a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 0a 0a 69 6d 70 6f | =====================.."""..impo |
a0c0 | 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 |
a0e0 | 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 0a 23 25 25 20 70 61 | .pylab.as.pl.import.ot....#%%.pa |
a100 | 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 35 30 20 23 20 6e 62 20 62 69 6e 73 0a 0a 78 73 2c 79 73 | rameters..n=150.#.nb.bins..xs,ys |
a120 | 3d 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 27 33 | =ot.datasets.get_data_classif('3 |
a140 | 67 61 75 73 73 27 2c 6e 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f | gauss',n).xt,yt=ot.datasets.get_ |
a160 | 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 6e 29 0a 0a 61 2c 62 20 3d | data_classif('3gauss2',n)..a,b.= |
a180 | 20 6f 74 2e 75 6e 69 66 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 0a 23 20 6c 6f 73 73 20 6d 61 | .ot.unif(n),ot.unif(n).#.loss.ma |
a1a0 | 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 29 0a 23 4d 2f 3d 4d 2e 6d 61 78 28 | trix.M=ot.dist(xs,xt).#M/=M.max( |
a1c0 | 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 | )..#%%.plot.samples..pl.figure(1 |
a1e0 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 | )..pl.subplot(2,2,1).pl.scatter( |
a200 | 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c | xs[:,0],xs[:,1],c=ys,marker='+', |
a220 | 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 6c 65 67 65 6e | label='Source.samples').pl.legen |
a240 | 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 64 69 73 74 72 | d(loc=0).pl.title('Source..distr |
a260 | 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c | ibutions')..pl.subplot(2,2,2).pl |
a280 | 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 | .scatter(xt[:,0],xt[:,1],c=yt,ma |
a2a0 | 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 | rker='o',label='Target.samples') |
a2c0 | 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 74 61 72 67 | .pl.legend(loc=0).pl.title('targ |
a2e0 | 65 74 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 | et..distributions')..pl.figure(2 |
a300 | 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 | ).pl.imshow(M,interpolation='nea |
a320 | 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 | rest').pl.title('Cost.matrix.M') |
a340 | 0a 0a 0a 23 25 25 20 4f 54 20 65 73 74 69 6d 61 74 69 6f 6e 0a 0a 23 20 45 4d 44 0a 47 30 3d 6f | ...#%%.OT.estimation..#.EMD.G0=o |
a360 | 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 0a 6c 61 6d 62 64 3d 31 | t.emd(a,b,M)..#.sinkhorn.lambd=1 |
a380 | 65 2d 31 0a 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 0a | e-1.Gs=ot.sinkhorn(a,b,M,lambd). |
a3a0 | 0a 0a 23 20 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 0a 72 | ..#.Group.lasso.regularization.r |
a3c0 | 65 67 3d 31 65 2d 31 0a 65 74 61 3d 31 65 30 0a 47 67 3d 6f 74 2e 64 61 2e 73 69 6e 6b 68 6f 72 | eg=1e-1.eta=1e0.Gg=ot.da.sinkhor |
a3e0 | 6e 5f 6c 70 6c 31 5f 6d 6d 28 61 2c 79 73 2e 61 73 74 79 70 65 28 6e 70 2e 69 6e 74 29 2c 62 2c | n_lpl1_mm(a,ys.astype(np.int),b, |
a400 | 4d 2c 72 65 67 2c 65 74 61 29 0a 0a 0a 23 25 25 20 76 69 73 75 20 6d 61 74 72 69 63 65 73 0a 0a | M,reg,eta)...#%%.visu.matrices.. |
a420 | 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a | pl.figure(3)..pl.subplot(2,3,1). |
a440 | 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 | pl.imshow(G0,interpolation='near |
a460 | 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 27 29 0a 0a 70 6c | est').pl.title('OT.matrix.')..pl |
a480 | 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 73 2c 69 6e 74 | .subplot(2,3,2).pl.imshow(Gs,int |
a4a0 | 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 27 | erpolation='nearest').pl.title(' |
a4c0 | 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 | OT.matrix.Sinkhorn')..pl.subplot |
a4e0 | 28 32 2c 33 2c 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 67 2c 69 6e 74 65 72 70 6f 6c 61 74 69 | (2,3,3).pl.imshow(Gg,interpolati |
a500 | 6f 6e 3d 27 6e 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 | on='nearest').pl.title('OT.matri |
a520 | 78 20 47 72 6f 75 70 20 6c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c | x.Group.lasso')..pl.subplot(2,3, |
a540 | 34 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 | 4).ot.plot.plot2D_samples_mat(xs |
a560 | 2c 78 74 2c 47 30 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 | ,xt,G0,c=[.5,.5,1]).pl.scatter(x |
a580 | 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c | s[:,0],xs[:,1],c=ys,marker='+',l |
a5a0 | 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 65 | abel='Source.samples').pl.scatte |
a5c0 | 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f | r(xt[:,0],xt[:,1],c=yt,marker='o |
a5e0 | 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 0a 0a 70 6c 2e 73 | ',label='Target.samples')...pl.s |
a600 | 75 62 70 6c 6f 74 28 32 2c 33 2c 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d | ubplot(2,3,5).ot.plot.plot2D_sam |
a620 | 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 73 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 70 | ples_mat(xs,xt,Gs,c=[.5,.5,1]).p |
a640 | 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d | l.scatter(xs[:,0],xs[:,1],c=ys,m |
a660 | 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 | arker='+',label='Source.samples' |
a680 | 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 | ).pl.scatter(xt[:,0],xt[:,1],c=y |
a6a0 | 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c | t,marker='o',label='Target.sampl |
a6c0 | 65 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 0a 6f 74 2e 70 6c 6f 74 2e | es')..pl.subplot(2,3,6).ot.plot. |
a6e0 | 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 67 2c 63 3d 5b 2e | plot2D_samples_mat(xs,xt,Gg,c=[. |
a700 | 35 2c 2e 35 2c 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a | 5,.5,1]).pl.scatter(xs[:,0],xs[: |
a720 | 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 | ,1],c=ys,marker='+',label='Sourc |
a740 | 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 | e.samples').pl.scatter(xt[:,0],x |
a760 | 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 | t[:,1],c=yt,marker='o',label='Ta |
a780 | 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 0a 23 25 25 20 73 61 6d 70 6c 65 20 69 6e 74 65 72 | rget.samples')..#%%.sample.inter |
a7a0 | 70 6f 6c 61 74 69 6f 6e 0a 0a 78 73 74 30 3d 6e 2a 47 30 2e 64 6f 74 28 78 74 29 0a 78 73 74 73 | polation..xst0=n*G0.dot(xt).xsts |
a7c0 | 3d 6e 2a 47 73 2e 64 6f 74 28 78 74 29 0a 78 73 74 67 3d 6e 2a 47 67 2e 64 6f 74 28 78 74 29 0a | =n*Gs.dot(xt).xstg=n*Gg.dot(xt). |
a7e0 | 0a 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a | .pl.figure(4).pl.subplot(2,3,1). |
a800 | 0a 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 | ..pl.scatter(xt[:,0],xt[:,1],c=y |
a820 | 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c | t,marker='o',label='Target.sampl |
a840 | 65 73 27 2c 61 6c 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a | es',alpha=0.5).pl.scatter(xst0[: |
a860 | 2c 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 | ,0],xst0[:,1],c=ys,marker='+',la |
a880 | 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 | bel='Transp.samples',s=30).pl.ti |
a8a0 | 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 | tle('Interp.samples').pl.legend( |
a8c0 | 6c 6f 63 3d 30 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 0a 0a 0a 70 6c 2e 73 | loc=0)..pl.subplot(2,3,2)...pl.s |
a8e0 | 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b | catter(xt[:,0],xt[:,1],c=yt,mark |
a900 | 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c | er='o',label='Target.samples',al |
a920 | 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 | pha=0.5).pl.scatter(xsts[:,0],xs |
a940 | 74 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 | ts[:,1],c=ys,marker='+',label='T |
a960 | 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 | ransp.samples',s=30).pl.title('I |
a980 | 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 | nterp.samples.Sinkhorn')..pl.sub |
a9a0 | 70 6c 6f 74 28 32 2c 33 2c 33 29 0a 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c | plot(2,3,3)..pl.scatter(xt[:,0], |
a9c0 | 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 | xt[:,1],c=yt,marker='o',label='T |
a9e0 | 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 35 29 0a 70 6c 2e 73 63 61 | arget.samples',alpha=0.5).pl.sca |
aa00 | 74 74 65 72 28 78 73 74 67 5b 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 | tter(xstg[:,0],xstg[:,1],c=ys,ma |
aa20 | 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c | rker='+',label='Transp.samples', |
aa40 | 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 | s=30).pl.title('Interp.samples.G |
aa60 | 72 6f 75 70 6c 61 73 73 6f 27 29 50 4b 03 04 14 00 00 00 00 00 57 89 1e 4b d9 cf 46 53 c4 10 00 | rouplasso')PK........W..K..FS... |
aa80 | 00 c4 10 00 00 22 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 | ....."...auto_examples/plot_otda |
aaa0 | 5f 6d 61 70 70 69 6e 67 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d | _mapping.py#.-*-.coding:.utf-8.- |
aac0 | 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 | *-.""".========================= |
aae0 | 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 6d 61 70 70 69 6e | ======================.OT.mappin |
ab00 | 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 | g.estimation.for.domain.adaptati |
ab20 | 6f 6e 20 5b 38 5d 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 | on.[8].========================= |
ab40 | 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 61 | ======================..This.exa |
ab60 | 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 67 | mple.presents.how.to.use.Mapping |
ab80 | 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 6d | Transport.to.estimate.at.the.sam |
aba0 | 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 6f | e.time.both.the.coupling.transpo |
abc0 | 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 74 | rt.and.approximate.the.transport |
abe0 | 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 6b | .map.with.either.a.linear.or.a.k |
ac00 | 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 20 | ernelized.mapping.as.introduced. |
ac20 | 69 6e 20 5b 38 5d 0a 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 | in.[8]..[8].M..Perrot,.N..Courty |
ac40 | 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 22 4d | ,.R..Flamary,.A..Habrard,....."M |
ac60 | 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 20 6f | apping.estimation.for.discrete.o |
ac80 | 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 49 6e | ptimal.transport",.....Neural.In |
aca0 | 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 4e 49 | formation.Processing.Systems.(NI |
acc0 | 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 69 20 | PS),.2016.."""..#.Authors:.Remi. |
ace0 | 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>. |
ad00 | 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 |
ad20 | 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 |
ad40 | 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 73 20 | e:.MIT.License..import.numpy.as. |
ad60 | 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 70 6c | np.import.matplotlib.pylab.as.pl |
ad80 | 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 23 23 | .import.ot...################### |
ada0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
adc0 | 23 23 23 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 67 65 | ###########################.#.ge |
ade0 | 6e 65 72 61 74 65 20 64 61 74 61 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | nerate.data.#################### |
ae00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
ae20 | 23 23 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 0a 6e 5f 73 6f | ##########################..n_so |
ae40 | 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 61 6d 70 | urce_samples.=.100.n_target_samp |
ae60 | 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 20 32 30 | les.=.100.theta.=.2.*.np.pi./.20 |
ae80 | 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 6f 74 2e | .noise_level.=.0.1..Xs,.ys.=.ot. |
aea0 | 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 20 20 27 | datasets.get_data_classif(.....' |
aec0 | 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 6e 7a 3d | gaussrot',.n_source_samples,.nz= |
aee0 | 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 61 74 61 | noise_level).Xs_new,._.=.ot.data |
af00 | 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 61 75 73 | sets.get_data_classif(.....'gaus |
af20 | 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 6f 69 73 | srot',.n_source_samples,.nz=nois |
af40 | 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 2e 67 65 | e_level).Xt,.yt.=.ot.datasets.ge |
af60 | 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 27 2c 20 | t_data_classif(.....'gaussrot',. |
af80 | 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 2c 20 6e | n_target_samples,.theta=theta,.n |
afa0 | 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 74 61 72 | z=noise_level)..#.one.of.the.tar |
afc0 | 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 20 28 6e | get.mode.changes.its.variance.(n |
afe0 | 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 20 2a 3d | o.linear.mapping).Xt[yt.==.2].*= |
b000 | 20 33 0a 58 74 20 3d 20 58 74 20 2b 20 34 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | .3.Xt.=.Xt.+.4...############### |
b020 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b040 | 23 23 23 23 23 23 23 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 | ###############################. |
b060 | 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 74 20 74 72 61 6e | #.Instantiate.the.different.tran |
b080 | 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 68 65 6d 0a 23 23 | sport.algorithms.and.fit.them.## |
b0a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b0c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b0e0 | 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23 20 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 | ############..#.MappingTransport |
b100 | 20 77 69 74 68 20 6c 69 6e 65 61 72 20 6b 65 72 6e 65 6c 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c | .with.linear.kernel.ot_mapping_l |
b120 | 69 6e 65 61 72 20 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 | inear.=.ot.da.MappingTransport(. |
b140 | 20 20 20 20 6b 65 72 6e 65 6c 3d 22 6c 69 6e 65 61 72 22 2c 20 6d 75 3d 31 65 30 2c 20 65 74 61 | ....kernel="linear",.mu=1e0,.eta |
b160 | 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 0a 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 32 | =1e-8,.bias=True,.....max_iter=2 |
b180 | 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e | 0,.verbose=True)..ot_mapping_lin |
b1a0 | 65 61 72 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 69 | ear.fit(Xs=Xs,.Xt=Xt)..#.for.ori |
b1c0 | 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 20 | ginal.source.samples,.transform. |
b1e0 | 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 6e | applies.barycentric.mapping.tran |
b200 | 73 70 5f 58 73 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 | sp_Xs_linear.=.ot_mapping_linear |
b220 | 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 74 20 6f 66 20 | .transform(Xs=Xs)..#.for.out.of. |
b240 | 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 70 70 6c 69 65 | source.samples,.transform.applie |
b260 | 73 20 74 68 65 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 0a 74 72 61 6e 73 70 5f 58 73 5f 6c | s.the.linear.mapping.transp_Xs_l |
b280 | 69 6e 65 61 72 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 2e 74 72 | inear_new.=.ot_mapping_linear.tr |
b2a0 | 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 0a 0a 0a 23 20 4d 61 70 70 69 6e 67 54 72 | ansform(Xs=Xs_new)...#.MappingTr |
b2c0 | 61 6e 73 70 6f 72 74 20 77 69 74 68 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 0a 6f 74 5f | ansport.with.gaussian.kernel.ot_ |
b2e0 | 6d 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 | mapping_gaussian.=.ot.da.Mapping |
b300 | 54 72 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6b 65 72 6e 65 6c 3d 22 67 61 75 73 73 69 61 6e 22 | Transport(.....kernel="gaussian" |
b320 | 2c 20 65 74 61 3d 31 65 2d 35 2c 20 6d 75 3d 31 65 2d 31 2c 20 62 69 61 73 3d 54 72 75 65 2c 20 | ,.eta=1e-5,.mu=1e-1,.bias=True,. |
b340 | 73 69 67 6d 61 3d 31 2c 0a 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 2c 20 76 65 72 62 6f 73 | sigma=1,.....max_iter=10,.verbos |
b360 | 65 3d 54 72 75 65 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 66 69 74 28 | e=True).ot_mapping_gaussian.fit( |
b380 | 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 66 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f | Xs=Xs,.Xt=Xt)..#.for.original.so |
b3a0 | 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 70 70 6c 69 65 73 20 | urce.samples,.transform.applies. |
b3c0 | 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 0a 74 72 61 6e 73 70 5f 58 73 5f 67 61 | barycentric.mapping.transp_Xs_ga |
b3e0 | 75 73 73 69 61 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e 74 72 61 | ussian.=.ot_mapping_gaussian.tra |
b400 | 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 23 20 66 6f 72 20 6f 75 74 20 6f 66 20 73 6f 75 72 | nsform(Xs=Xs)..#.for.out.of.sour |
b420 | 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 74 68 | ce.samples,.transform.applies.th |
b440 | 65 20 67 61 75 73 73 69 61 6e 20 6d 61 70 70 69 6e 67 0a 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 | e.gaussian.mapping.transp_Xs_gau |
b460 | 73 73 69 61 6e 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 2e | ssian_new.=.ot_mapping_gaussian. |
b480 | 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 | transform(Xs=Xs_new)...######### |
b4a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b4c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b4e0 | 23 23 23 23 23 0a 23 20 70 6c 6f 74 20 64 61 74 61 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | #####.#.plot.data.############## |
b500 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b520 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b540 | 0a 0a 70 6c 2e 66 69 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 | ..pl.figure(1,.(10,.5)).pl.clf() |
b560 | 0a 70 6c 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 | .pl.scatter(Xs[:,.0],.Xs[:,.1],. |
b580 | 63 3d 79 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 | c=ys,.marker='+',.label='Source. |
b5a0 | 73 61 6d 70 6c 65 73 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 | samples').pl.scatter(Xt[:,.0],.X |
b5c0 | 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 20 6c 61 62 65 6c | t[:,.1],.c=yt,.marker='o',.label |
b5e0 | 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 65 6e 64 28 6c 6f 63 | ='Target.samples').pl.legend(loc |
b600 | 3d 30 29 0a 70 6c 2e 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 | =0).pl.title('Source.and.target. |
b620 | 64 69 73 74 72 69 62 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 | distributions')...############## |
b640 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b660 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b680 | 0a 23 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 23 23 23 | .#.plot.transported.samples.#### |
b6a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b6c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
b6e0 | 23 23 23 23 23 23 23 23 23 23 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 6c 66 28 | ##########..pl.figure(2).pl.clf( |
b700 | 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 74 74 65 72 | ).pl.subplot(2,.2,.1).pl.scatter |
b720 | 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 65 | (Xt[:,.0],.Xt[:,.1],.c=yt,.marke |
b740 | 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 20 | r='o',............label='Target. |
b760 | 73 61 6d 70 6c 65 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 | samples',.alpha=.2).pl.scatter(t |
b780 | 72 61 6e 73 70 5f 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 | ransp_Xs_linear[:,.0],.transp_Xs |
b7a0 | 5f 6c 69 6e 65 61 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 | _linear[:,.1],.c=ys,.marker='+', |
b7c0 | 0a 20 20 20 20 20 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 | ............label='Mapped.source |
b7e0 | 20 73 61 6d 70 6c 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 | .samples').pl.title("Bary..mappi |
b800 | 6e 67 20 28 6c 69 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 | ng.(linear)").pl.legend(loc=0).. |
b820 | 70 6c 2e 73 75 62 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 | pl.subplot(2,.2,.2).pl.scatter(X |
b840 | 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= |
b860 | 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 |
b880 | 6d 70 6c 65 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 | mples',.alpha=.2).pl.scatter(tra |
b8a0 | 6e 73 70 5f 58 73 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 | nsp_Xs_linear_new[:,.0],.transp_ |
b8c0 | 58 73 5f 6c 69 6e 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 | Xs_linear_new[:,.1],............ |
b8e0 | 63 3d 79 73 2c 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 | c=ys,.marker='+',.label='Learned |
b900 | 20 6d 61 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 | .mapping').pl.title("Estim..mapp |
b920 | 69 6e 67 20 28 6c 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 | ing.(linear)")..pl.subplot(2,.2, |
b940 | 20 33 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 | .3).pl.scatter(Xt[:,.0],.Xt[:,.1 |
b960 | 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 20 20 | ],.c=yt,.marker='o',............ |
b980 | 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 2e 32 | label='Target.samples',.alpha=.2 |
b9a0 | 29 0a 70 6c 2e 73 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 | ).pl.scatter(transp_Xs_gaussian[ |
b9c0 | 3a 2c 20 30 5d 2c 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 | :,.0],.transp_Xs_gaussian[:,.1], |
b9e0 | 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 6c 61 | .c=ys,............marker='+',.la |
ba00 | 62 65 6c 3d 27 62 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 | bel='barycentric.mapping').pl.ti |
ba20 | 74 6c 65 28 22 42 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 | tle("Bary..mapping.(kernel)")..p |
ba40 | 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 65 72 28 58 74 | l.subplot(2,.2,.4).pl.scatter(Xt |
ba60 | 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 27 | [:,.0],.Xt[:,.1],.c=yt,.marker=' |
ba80 | 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 6d | o',............label='Target.sam |
baa0 | 70 6c 65 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 | ples',.alpha=.2).pl.scatter(tran |
bac0 | 73 70 5f 58 73 5f 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 | sp_Xs_gaussian_new[:,.0],.transp |
bae0 | 5f 58 73 5f 67 61 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 | _Xs_gaussian_new[:,.1],.c=ys,... |
bb00 | 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 4c 65 61 72 | .........marker='+',.label='Lear |
bb20 | 6e 65 64 20 6d 61 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 | ned.mapping').pl.title("Estim..m |
bb40 | 61 70 70 69 6e 67 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 | apping.(kernel)").pl.tight_layou |
bb60 | 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 57 89 1e 4b 7a 65 86 | t()..pl.show().PK........W..Kze. |
bb80 | 67 c9 06 00 00 c9 06 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f | g........!...auto_examples/plot_ |
bba0 | 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d | compute_emd.py#.-*-.coding:.utf- |
bbc0 | 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 0a 31 | 8.-*-.""".====================.1 |
bbe0 | 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | D.optimal.transport.============ |
bc00 | 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c | ========.."""..#.Author:.Remi.Fl |
bc20 | 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 23 0a | amary.<remi.flamary@unice.fr>.#. |
bc40 | 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 6d 70 6f 72 74 20 6e | #.License:.MIT.License..import.n |
bc60 | 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 2e 70 79 6c | umpy.as.np.import.matplotlib.pyl |
bc80 | 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 74 2e 64 61 74 61 73 | ab.as.pl.import.ot.from.ot.datas |
bca0 | 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 75 73 73 | ets.import.get_1D_gauss.as.gauss |
bcc0 | 0a 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 20 20 23 20 6e 62 | ...#%%.parameters..n.=.100..#.nb |
bce0 | 20 62 69 6e 73 0a 6e 5f 74 61 72 67 65 74 20 3d 20 35 30 20 20 23 20 6e 62 20 74 61 72 67 65 74 | .bins.n_target.=.50..#.nb.target |
bd00 | 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 | .distributions...#.bin.positions |
bd20 | 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 70 2e 66 6c 6f 61 74 | .x.=.np.arange(n,.dtype=np.float |
bd40 | 36 34 29 0a 0a 6c 73 74 5f 6d 20 3d 20 6e 70 2e 6c 69 6e 73 70 61 63 65 28 32 30 2c 20 39 30 2c | 64)..lst_m.=.np.linspace(20,.90, |
bd60 | 20 6e 5f 74 61 72 67 65 74 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 | .n_target)..#.Gaussian.distribut |
bd80 | 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 23 20 | ions.a.=.gauss(n,.m=20,.s=5)..#. |
bda0 | 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 0a 42 20 3d 20 6e 70 2e 7a 65 72 6f 73 28 28 6e | m=.mean,.s=.std..B.=.np.zeros((n |
bdc0 | 2c 20 6e 5f 74 61 72 67 65 74 29 29 0a 0a 66 6f 72 20 69 2c 20 6d 20 69 6e 20 65 6e 75 6d 65 72 | ,.n_target))..for.i,.m.in.enumer |
bde0 | 61 74 65 28 6c 73 74 5f 6d 29 3a 0a 20 20 20 20 42 5b 3a 2c 20 69 5d 20 3d 20 67 61 75 73 73 28 | ate(lst_m):.....B[:,.i].=.gauss( |
be00 | 6e 2c 20 6d 3d 6d 2c 20 73 3d 35 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 20 61 6e 64 20 | n,.m=m,.s=5)..#.loss.matrix.and. |
be20 | 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 0a 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 | normalization.M.=.ot.dist(x.resh |
be40 | 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 29 29 2c 20 | ape((n,.1)),.x.reshape((n,.1)),. |
be60 | 27 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a 4d 32 20 3d 20 6f | 'euclidean').M./=.M.max().M2.=.o |
be80 | 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 78 2e 72 65 73 68 | t.dist(x.reshape((n,.1)),.x.resh |
bea0 | 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 32 20 2f | ape((n,.1)),.'sqeuclidean').M2./ |
bec0 | 3d 20 4d 32 2e 6d 61 78 28 29 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 | =.M2.max().#%%.plot.the.distribu |
bee0 | 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 |
bf00 | 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 |
bf20 | 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 |
bf40 | 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 |
bf60 | 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= |
bf80 | 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 |
bfa0 | 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 |
bfc0 | 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 23 25 25 20 43 6f 6d 70 75 74 65 20 61 6e 64 20 70 6c 6f 74 | t_layout()..#%%.Compute.and.plot |
bfe0 | 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 72 69 78 0a 0a | .distributions.and.loss.matrix.. |
c000 | 64 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 | d_emd.=.ot.emd2(a,.B,.M)..#.dire |
c020 | 63 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 | ct.computation.of.EMD.d_emd2.=.o |
c040 | 74 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 | t.emd2(a,.B,.M2)..#.direct.compu |
c060 | 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 20 77 69 74 68 20 6c 6f 73 73 20 4d 33 0a 0a 0a 70 6c 2e | tation.of.EMD.with.loss.M3...pl. |
c080 | 66 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 | figure(2).pl.plot(d_emd,.label=' |
c0a0 | 45 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 | Euclidean.EMD').pl.plot(d_emd2,. |
c0c0 | 6c 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 | label='Squared.Euclidean.EMD').p |
c0e0 | 6c 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 | l.title('EMD.distances').pl.lege |
c100 | 6e 64 28 29 0a 0a 23 25 25 0a 72 65 67 20 3d 20 31 65 2d 32 0a 64 5f 73 69 6e 6b 68 6f 72 6e 20 | nd()..#%%.reg.=.1e-2.d_sinkhorn. |
c120 | 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 65 67 29 0a 64 5f 73 | =.ot.sinkhorn2(a,.B,.M,.reg).d_s |
c140 | 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 2c 20 42 2c 20 4d 32 | inkhorn2.=.ot.sinkhorn2(a,.B,.M2 |
c160 | 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 6c 66 28 29 0a 70 6c | ,.reg)..pl.figure(2).pl.clf().pl |
c180 | 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 64 65 61 6e 20 45 4d | .plot(d_emd,.label='Euclidean.EM |
c1a0 | 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 3d 27 53 71 75 61 72 | D').pl.plot(d_emd2,.label='Squar |
c1c0 | 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 74 28 64 5f 73 69 6e | ed.Euclidean.EMD').pl.plot(d_sin |
c1e0 | 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 65 61 6e 20 53 69 6e | khorn,.'+',.label='Euclidean.Sin |
c200 | 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 6e 32 2c 20 27 2b 27 | khorn').pl.plot(d_sinkhorn2,.'+' |
c220 | 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 6e 20 53 69 6e 6b 68 | ,.label='Squared.Euclidean.Sinkh |
c240 | 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 6e 63 65 73 27 29 0a | orn').pl.title('EMD.distances'). |
c260 | 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 03 04 14 00 00 00 00 | pl.legend()..pl.show().PK....... |
c280 | 00 6a 7b 82 49 d4 40 d8 69 2e 05 00 00 2e 05 00 00 20 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c | .j{.I.@.i............auto_exampl |
c2a0 | 65 73 2f 64 65 6d 6f 5f 4f 54 5f 31 44 5f 74 65 73 74 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e | es/demo_OT_1D_test.py#.-*-.codin |
c2c0 | 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 44 65 6d 6f 20 66 6f 72 20 31 44 20 6f 70 74 | g:.utf-8.-*-.""".Demo.for.1D.opt |
c2e0 | 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 0a 40 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 | imal.transport..@author:.rflamar |
c300 | 79 0a 22 22 22 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 | y."""..import.numpy.as.np.import |
c320 | 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 |
c340 | 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 | t.from.ot.datasets.import.get_1D |
c360 | 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 | _gauss.as.gauss...#%%.parameters |
c380 | 0a 0a 6e 3d 31 30 30 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f | ..n=100.#.nb.bins..#.bin.positio |
c3a0 | 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 | ns.x=np.arange(n,dtype=np.float6 |
c3c0 | 34 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 3d 67 | 4)..#.Gaussian.distributions.a=g |
c3e0 | 61 75 73 73 28 6e 2c 6d 3d 6e 2a 2e 32 2c 73 3d 35 29 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d | auss(n,m=n*.2,s=5).#.m=.mean,.s= |
c400 | 20 73 74 64 0a 62 3d 67 61 75 73 73 28 6e 2c 6d 3d 6e 2a 2e 36 2c 73 3d 31 30 29 0a 0a 23 20 6c | .std.b=gauss(n,m=n*.6,s=10)..#.l |
c420 | 6f 73 73 20 6d 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 | oss.matrix.M=ot.dist(x.reshape(( |
c440 | 6e 2c 31 29 29 2c 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 29 0a 4d 2f 3d 4d 2e 6d 61 78 | n,1)),x.reshape((n,1))).M/=M.max |
c460 | 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a | ()..#%%.plot.the.distributions.. |
c480 | 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 61 2c 27 62 27 2c 6c 61 62 | pl.figure(1).pl.plot(x,a,'b',lab |
c4a0 | 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 70 6c 2e 70 6c 6f | el='Source.distribution').pl.plo |
c4c0 | 74 28 78 2c 62 2c 27 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 69 62 75 | t(x,b,'r',label='Target.distribu |
c4e0 | 74 69 6f 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 64 69 73 | tion').pl.legend()..#%%.plot.dis |
c500 | 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 70 6c 2e 66 | tributions.and.loss.matrix..pl.f |
c520 | 69 67 75 72 65 28 32 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c | igure(2).ot.plot.plot1D_mat(a,b, |
c540 | 4d 2c 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d | M,'Cost.matrix.M')..#%%.EMD..G0= |
c560 | 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 6f 74 2e 70 | ot.emd(a,b,M)..pl.figure(3).ot.p |
c580 | 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 30 2c 27 4f 54 20 6d 61 74 72 69 78 | lot.plot1D_mat(a,b,G0,'OT.matrix |
c5a0 | 20 47 30 27 29 0a 0a 23 25 25 20 53 69 6e 6b 68 6f 72 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 33 0a | .G0')..#%%.Sinkhorn..lambd=1e-3. |
c5c0 | 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f | Gs=ot.sinkhorn(a,b,M,lambd,verbo |
c5e0 | 73 65 3d 54 72 75 65 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 | se=True)..pl.figure(4).ot.plot.p |
c600 | 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b | lot1D_mat(a,b,Gs,'OT.matrix.Sink |
c620 | 68 6f 72 6e 27 29 0a 0a 23 25 25 20 53 69 6e 6b 68 6f 72 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 34 | horn')..#%%.Sinkhorn..lambd=1e-4 |
c640 | 0a 47 73 73 2c 6c 6f 67 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 73 74 61 | .Gss,log=ot.bregman.sinkhorn_sta |
c660 | 62 69 6c 69 7a 65 64 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 | bilized(a,b,M,lambd,verbose=True |
c680 | 2c 6c 6f 67 3d 54 72 75 65 29 0a 47 73 73 32 2c 6c 6f 67 32 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e | ,log=True).Gss2,log2=ot.bregman. |
c6a0 | 73 69 6e 6b 68 6f 72 6e 5f 73 74 61 62 69 6c 69 7a 65 64 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 2c | sinkhorn_stabilized(a,b,M,lambd, |
c6c0 | 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 6c 6f 67 3d 54 72 75 65 2c 77 61 72 6d 73 74 61 72 74 3d | verbose=True,log=True,warmstart= |
c6e0 | 6c 6f 67 5b 27 77 61 72 6d 73 74 61 72 74 27 5d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a | log['warmstart'])..pl.figure(5). |
c700 | 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 73 2c 27 4f 54 20 6d | ot.plot.plot1D_mat(a,b,Gss,'OT.m |
c720 | 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 73 74 61 62 69 6c 69 7a 65 64 27 29 0a 0a 23 25 25 | atrix.Sinkhorn.stabilized')..#%% |
c740 | 20 53 69 6e 6b 68 6f 72 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 31 31 0a 47 73 73 3d 6f 74 2e 62 72 | .Sinkhorn..lambd=1e-11.Gss=ot.br |
c760 | 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 65 70 73 69 6c 6f 6e 5f 73 63 61 6c 69 6e 67 28 61 | egman.sinkhorn_epsilon_scaling(a |
c780 | 2c 62 2c 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 | ,b,M,lambd,verbose=True)..pl.fig |
c7a0 | 75 72 65 28 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 | ure(5).ot.plot.plot1D_mat(a,b,Gs |
c7c0 | 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 73 74 61 62 69 6c 69 7a 65 64 | s,'OT.matrix.Sinkhorn.stabilized |
c7e0 | 27 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a a5 25 9f a1 06 0a 00 00 06 0a 00 00 27 00 00 | ').PK...........J.%..........'.. |
c800 | 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6f 6c 6f 72 5f 69 | .auto_examples/plot_OTDA_color_i |
c820 | 6d 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 | mages.py#.-*-.coding:.utf-8.-*-. |
c840 | 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 3d 3d 3d | """.============================ |
c860 | 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 4f 54 20 | ============================.OT. |
c880 | 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 69 6d 61 67 65 | for.domain.adaptation.with.image |
c8a0 | 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | .color.adaptation.[6].========== |
c8c0 | 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 | ================================ |
c8e0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 | ==============..[6].Ferradans,.S |
c900 | 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 | .,.Papadakis,.N.,.Peyre,.G.,.&.A |
c920 | 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 20 | ujol,.J..F..(2014)..Regularized. |
c940 | 64 69 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 | discrete.optimal.transport..SIAM |
c960 | 20 4a 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 20 37 28 | .Journal.on.Imaging.Sciences,.7( |
c980 | 33 29 2c 20 31 38 35 33 2d 31 38 38 32 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 | 3),.1853-1882.."""..import.numpy |
c9a0 | 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 73 63 69 70 79 2e 6e 64 69 6d 61 67 65 20 61 73 20 73 | .as.np.import.scipy.ndimage.as.s |
c9c0 | 70 69 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 70 6c | pi.import.matplotlib.pylab.as.pl |
c9e0 | 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 23 25 25 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a | .import.ot...#%%.Loading.images. |
ca00 | 0a 49 31 3d 73 70 69 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 | .I1=spi.imread('../data/ocean_da |
ca20 | 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 2f 32 35 36 0a 49 | y.jpg').astype(np.float64)/256.I |
ca40 | 32 3d 73 70 69 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 | 2=spi.imread('../data/ocean_suns |
ca60 | 65 74 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 2f 32 35 36 0a | et.jpg').astype(np.float64)/256. |
ca80 | 0a 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 0a | .#%%.Plot.images..pl.figure(1).. |
caa0 | 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a | pl.subplot(1,2,1).pl.imshow(I1). |
cac0 | 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 70 6c 6f 74 28 | pl.title('Image.1')..pl.subplot( |
cae0 | 31 2c 32 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 | 1,2,2).pl.imshow(I2).pl.title('I |
cb00 | 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 23 25 25 20 49 6d 61 67 65 20 63 | mage.2')..pl.show()..#%%.Image.c |
cb20 | 6f 6e 76 65 72 73 69 6f 6e 20 61 6e 64 20 64 61 74 61 73 65 74 20 67 65 6e 65 72 61 74 69 6f 6e | onversion.and.dataset.generation |
cb40 | 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 73 | ..def.im2mat(I):....."""Converts |
cb60 | 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 20 | .and.image.to.matrix.(one.pixel. |
cb80 | 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 70 | per.line)""".....return.I.reshap |
cba0 | 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 2a 49 2e 73 68 61 70 65 5b 31 5d 2c 49 2e 73 68 61 70 65 | e((I.shape[0]*I.shape[1],I.shape |
cbc0 | 5b 32 5d 29 29 0a 0a 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 73 68 61 70 65 29 3a 0a 20 20 20 20 | [2]))..def.mat2im(X,shape):..... |
cbe0 | 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 74 6f 20 61 6e 20 | """Converts.back.a.matrix.to.an. |
cc00 | 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 61 70 65 28 73 68 | image""".....return.X.reshape(sh |
cc20 | 61 70 65 29 0a 0a 58 31 3d 69 6d 32 6d 61 74 28 49 31 29 0a 58 32 3d 69 6d 32 6d 61 74 28 49 32 | ape)..X1=im2mat(I1).X2=im2mat(I2 |
cc40 | 29 0a 0a 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 0a 6e 62 3d 31 30 30 30 0a 69 64 | )..#.training.samples.nb=1000.id |
cc60 | 78 31 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d | x1=np.random.randint(X1.shape[0] |
cc80 | 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 69 64 78 32 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 | ,size=(nb,)).idx2=np.random.rand |
cca0 | 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 0a 78 73 3d | int(X2.shape[0],size=(nb,))..xs= |
ccc0 | 58 31 5b 69 64 78 31 2c 3a 5d 0a 78 74 3d 58 32 5b 69 64 78 32 2c 3a 5d 0a 0a 23 25 25 20 50 6c | X1[idx1,:].xt=X2[idx2,:]..#%%.Pl |
cce0 | 6f 74 20 69 6d 61 67 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 0a 70 6c 2e 66 69 67 75 | ot.image.distributions...pl.figu |
cd00 | 72 65 28 32 2c 28 31 30 2c 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a | re(2,(10,5))..pl.subplot(1,2,1). |
cd20 | 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 32 5d 2c 63 3d 78 73 29 | pl.scatter(xs[:,0],xs[:,2],c=xs) |
cd40 | 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 | .pl.axis([0,1,0,1]).pl.xlabel('R |
cd60 | 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 6c 65 28 | ed').pl.ylabel('Blue').pl.title( |
cd80 | 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 32 2c 32 29 0a 23 70 | 'Image.1')..pl.subplot(1,2,2).#p |
cda0 | 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c | l.imshow(I2).pl.scatter(xt[:,0], |
cdc0 | 78 74 5b 3a 2c 32 5d 2c 63 3d 78 74 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 | xt[:,2],c=xt).pl.axis([0,1,0,1]) |
cde0 | 0a 70 6c 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 | .pl.xlabel('Red').pl.ylabel('Blu |
ce00 | 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 | e').pl.title('Image.2')..pl.show |
ce20 | 28 29 0a 0a 0a 0a 23 25 25 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 62 65 74 77 | ()....#%%.domain.adaptation.betw |
ce40 | 65 65 6e 20 69 6d 61 67 65 73 0a 0a 23 20 4c 50 20 70 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d 64 3d | een.images..#.LP.problem.da_emd= |
ce60 | 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 20 69 6e 69 74 20 63 6c 61 73 73 0a 64 61 | ot.da.OTDA().....#.init.class.da |
ce80 | 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 20 20 20 20 23 20 66 69 74 20 64 69 73 74 | _emd.fit(xs,xt).......#.fit.dist |
cea0 | 72 69 62 75 74 69 6f 6e 73 0a 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 20 72 65 67 75 6c 61 72 69 7a | ributions...#.sinkhorn.regulariz |
cec0 | 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 61 5f 65 6e 74 72 6f 70 3d 6f 74 2e 64 61 | ation.lambd=1e-1.da_entrop=ot.da |
cee0 | 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 5f 65 6e 74 72 6f 70 2e 66 69 74 28 78 | .OTDA_sinkhorn().da_entrop.fit(x |
cf00 | 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 0a 0a 0a 0a 23 25 25 20 70 72 65 64 69 63 74 69 6f | s,xt,reg=lambd)....#%%.predictio |
cf20 | 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 75 74 20 6f 66 20 73 | n.between.images.(using.out.of.s |
cf40 | 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 5d 29 0a 0a 58 31 74 | ample.prediction.as.in.[6])..X1t |
cf60 | 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 31 29 0a 58 32 74 3d 64 61 5f 65 6d 64 2e 70 | =da_emd.predict(X1).X2t=da_emd.p |
cf80 | 72 65 64 69 63 74 28 58 32 2c 2d 31 29 0a 0a 0a 58 31 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 | redict(X2,-1)...X1te=da_entrop.p |
cfa0 | 72 65 64 69 63 74 28 58 31 29 0a 58 32 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 | redict(X1).X2te=da_entrop.predic |
cfc0 | 74 28 58 32 2c 2d 31 29 0a 0a 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 0a 20 20 20 20 72 65 | t(X2,-1)...def.minmax(I):.....re |
cfe0 | 74 75 72 6e 20 6e 70 2e 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 78 69 6d 75 6d 28 49 2c 30 29 2c | turn.np.minimum(np.maximum(I,0), |
d000 | 31 29 0a 0a 49 31 74 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 2c 49 31 2e 73 68 61 | 1)..I1t=minmax(mat2im(X1t,I1.sha |
d020 | 70 65 29 29 0a 49 32 74 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 32 74 2c 49 32 2e 73 68 | pe)).I2t=minmax(mat2im(X2t,I2.sh |
d040 | 61 70 65 29 29 0a 0a 49 31 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 65 2c 49 | ape))..I1te=minmax(mat2im(X1te,I |
d060 | 31 2e 73 68 61 70 65 29 29 0a 49 32 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 32 74 | 1.shape)).I2te=minmax(mat2im(X2t |
d080 | 65 2c 49 32 2e 73 68 61 70 65 29 29 0a 0a 23 25 25 20 70 6c 6f 74 20 61 6c 6c 20 69 6d 61 67 65 | e,I2.shape))..#%%.plot.all.image |
d0a0 | 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 38 29 29 0a 0a 70 6c 2e 73 75 62 70 6c | s..pl.figure(2,(10,8))..pl.subpl |
d0c0 | 6f 74 28 32 2c 33 2c 31 29 0a 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 74 69 74 6c | ot(2,3,1)..pl.imshow(I1).pl.titl |
d0e0 | 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 32 2c 33 2c 32 29 0a | e('Image.1')..pl.subplot(2,3,2). |
d100 | 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 | pl.imshow(I1t).pl.title('Image.1 |
d120 | 20 41 64 61 70 74 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 33 29 0a 70 6c 2e | .Adapt')...pl.subplot(2,3,3).pl. |
d140 | 69 6d 73 68 6f 77 28 49 31 74 65 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 | imshow(I1te).pl.title('Image.1.A |
d160 | 64 61 70 74 20 28 72 65 67 29 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 0a | dapt.(reg)')..pl.subplot(2,3,4). |
d180 | 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 | .pl.imshow(I2).pl.title('Image.2 |
d1a0 | 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 35 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 | ')..pl.subplot(2,3,5).pl.imshow( |
d1c0 | 49 32 74 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 27 29 0a 0a | I2t).pl.title('Image.2.Adapt').. |
d1e0 | 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 | .pl.subplot(2,3,6).pl.imshow(I2t |
d200 | 65 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 67 29 | e).pl.title('Image.2.Adapt.(reg) |
d220 | 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a f7 ba 1e e3 | ')..pl.show().PK...........J.... |
d240 | 6d 0d 00 00 6d 0d 00 00 2f 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f | m...m.../...auto_examples/plot_O |
d260 | 54 44 41 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 23 20 2d 2a 2d | TDA_mapping_color_images.py#.-*- |
d280 | 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.-*-.""".========= |
d2a0 | 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 | ================================ |
d2c0 | 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 | ================================ |
d2e0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 | ===========.OT.for.domain.adapta |
d300 | 74 69 6f 6e 20 77 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 | tion.with.image.color.adaptation |
d320 | 20 5b 36 5d 20 77 69 74 68 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d | .[6].with.mapping.estimation.[8] |
d340 | 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 3d 3d | .=============================== |
d360 | 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 | ================================ |
d380 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5b 36 5d 20 46 65 72 72 61 | =====================..[6].Ferra |
d3a0 | 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 65 79 72 65 2c 20 | dans,.S.,.Papadakis,.N.,.Peyre,. |
d3c0 | 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 20 52 65 67 75 6c | G.,.&.Aujol,.J..F..(2014)..Regul |
d3e0 | 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 6c 20 74 72 61 6e | arized.....discrete.optimal.tran |
d400 | 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 67 69 6e 67 20 53 | sport..SIAM.Journal.on.Imaging.S |
d420 | 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 5b 38 5d 20 4d 2e | ciences,.7(3),.1853-1882..[8].M. |
d440 | 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 | .Perrot,.N..Courty,.R..Flamary,. |
d460 | 41 2e 20 48 61 62 72 61 72 64 2c 20 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 | A..Habrard,."Mapping.estimation. |
d480 | 66 6f 72 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f | for.....discrete.optimal.transpo |
d4a0 | 72 74 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 6f 63 65 73 73 69 | rt",.Neural.Information.Processi |
d4c0 | 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c 20 32 30 31 36 2e 0a 0a 22 22 22 0a 0a 69 | ng.Systems.(NIPS),.2016..."""..i |
d4e0 | 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 73 63 69 70 79 2e 6e | mport.numpy.as.np.import.scipy.n |
d500 | 64 69 6d 61 67 65 20 61 73 20 73 70 69 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e | dimage.as.spi.import.matplotlib. |
d520 | 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 23 25 25 20 4c 6f 61 64 | pylab.as.pl.import.ot...#%%.Load |
d540 | 69 6e 67 20 69 6d 61 67 65 73 0a 0a 49 31 3d 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 | ing.images..I1=spi.imread('../da |
d560 | 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f | ta/ocean_day.jpg').astype(np.flo |
d580 | 61 74 36 34 29 2f 32 35 36 0a 49 32 3d 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 | at64)/256.I2=spi.imread('../data |
d5a0 | 2f 6f 63 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 | /ocean_sunset.jpg').astype(np.fl |
d5c0 | 6f 61 74 36 34 29 2f 32 35 36 0a 0a 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 73 0a 0a 70 6c 2e | oat64)/256..#%%.Plot.images..pl. |
d5e0 | 66 69 67 75 72 65 28 31 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a 70 6c 2e | figure(1)..pl.subplot(1,2,1).pl. |
d600 | 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a | imshow(I1).pl.title('Image.1').. |
d620 | 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a | pl.subplot(1,2,2).pl.imshow(I2). |
d640 | 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a | pl.title('Image.2')..pl.show().. |
d660 | 23 25 25 20 49 6d 61 67 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 61 6e 64 20 64 61 74 61 73 65 74 | #%%.Image.conversion.and.dataset |
d680 | 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 0a 20 20 20 20 | .generation..def.im2mat(I):..... |
d6a0 | 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 | """Converts.and.image.to.matrix. |
d6c0 | 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 22 22 22 0a 20 20 20 20 72 65 74 75 | (one.pixel.per.line)""".....retu |
d6e0 | 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 2a 49 2e 73 68 61 70 65 | rn.I.reshape((I.shape[0]*I.shape |
d700 | 5b 31 5d 2c 49 2e 73 68 61 70 65 5b 32 5d 29 29 0a 0a 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 73 | [1],I.shape[2]))..def.mat2im(X,s |
d720 | 68 61 70 65 29 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 | hape):....."""Converts.back.a.ma |
d740 | 74 72 69 78 20 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 | trix.to.an.image""".....return.X |
d760 | 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 0a 0a 58 31 3d 69 6d 32 6d 61 74 28 49 31 29 0a 58 | .reshape(shape)..X1=im2mat(I1).X |
d780 | 32 3d 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 | 2=im2mat(I2)..#.training.samples |
d7a0 | 0a 6e 62 3d 31 30 30 30 0a 69 64 78 31 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 | .nb=1000.idx1=np.random.randint( |
d7c0 | 58 31 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 69 64 78 32 3d 6e 70 2e | X1.shape[0],size=(nb,)).idx2=np. |
d7e0 | 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d | random.randint(X2.shape[0],size= |
d800 | 28 6e 62 2c 29 29 0a 0a 78 73 3d 58 31 5b 69 64 78 31 2c 3a 5d 0a 78 74 3d 58 32 5b 69 64 78 32 | (nb,))..xs=X1[idx1,:].xt=X2[idx2 |
d820 | 2c 3a 5d 0a 0a 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e | ,:]..#%%.Plot.image.distribution |
d840 | 73 0a 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 35 29 29 0a 0a 70 6c 2e 73 75 62 70 | s...pl.figure(2,(10,5))..pl.subp |
d860 | 6c 6f 74 28 31 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 | lot(1,2,1).pl.scatter(xs[:,0],xs |
d880 | 5b 3a 2c 32 5d 2c 63 3d 78 73 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 | [:,2],c=xs).pl.axis([0,1,0,1]).p |
d8a0 | 6c 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 | l.xlabel('Red').pl.ylabel('Blue' |
d8c0 | 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 70 6c 6f | ).pl.title('Image.1')..pl.subplo |
d8e0 | 74 28 31 2c 32 2c 32 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 73 63 61 74 74 | t(1,2,2).#pl.imshow(I2).pl.scatt |
d900 | 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 32 5d 2c 63 3d 78 74 29 0a 70 6c 2e 61 78 69 73 | er(xt[:,0],xt[:,2],c=xt).pl.axis |
d920 | 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e | ([0,1,0,1]).pl.xlabel('Red').pl. |
d940 | 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 6d 61 67 65 20 32 | ylabel('Blue').pl.title('Image.2 |
d960 | 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 0a 0a 23 25 25 20 64 6f 6d 61 69 6e 20 61 64 61 70 | ')..pl.show()....#%%.domain.adap |
d980 | 74 61 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 0a 64 65 66 20 6d 69 6e 6d 61 78 | tation.between.images.def.minmax |
d9a0 | 28 49 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 | (I):.....return.np.minimum(np.ma |
d9c0 | 78 69 6d 75 6d 28 49 2c 30 29 2c 31 29 0a 23 20 4c 50 20 70 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d | ximum(I,0),1).#.LP.problem.da_em |
d9e0 | 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 20 20 20 23 20 69 6e 69 74 20 63 6c 61 73 73 0a | d=ot.da.OTDA().....#.init.class. |
da00 | 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 29 20 20 20 20 20 20 20 23 20 66 69 74 20 64 69 | da_emd.fit(xs,xt).......#.fit.di |
da20 | 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 58 31 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 | stributions..X1t=da_emd.predict( |
da40 | 58 31 29 20 20 23 20 6f 75 74 20 6f 66 20 73 61 6d 70 6c 65 0a 49 31 74 3d 6d 69 6e 6d 61 78 28 | X1)..#.out.of.sample.I1t=minmax( |
da60 | 6d 61 74 32 69 6d 28 58 31 74 2c 49 31 2e 73 68 61 70 65 29 29 0a 0a 23 20 73 69 6e 6b 68 6f 72 | mat2im(X1t,I1.shape))..#.sinkhor |
da80 | 6e 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 61 5f 65 | n.regularization.lambd=1e-1.da_e |
daa0 | 6e 74 72 6f 70 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 5f 65 | ntrop=ot.da.OTDA_sinkhorn().da_e |
dac0 | 6e 74 72 6f 70 2e 66 69 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 0a 0a 58 31 74 65 | ntrop.fit(xs,xt,reg=lambd)..X1te |
dae0 | 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 28 58 31 29 0a 49 31 74 65 3d 6d 69 6e 6d | =da_entrop.predict(X1).I1te=minm |
db00 | 61 78 28 6d 61 74 32 69 6d 28 58 31 74 65 2c 49 31 2e 73 68 61 70 65 29 29 0a 0a 23 20 6c 69 6e | ax(mat2im(X1te,I1.shape))..#.lin |
db20 | 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 0a 65 74 61 3d 31 65 2d 38 20 | ear.mapping.estimation.eta=1e-8. |
db40 | 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 | ..#.quadratic.regularization.for |
db60 | 20 72 65 67 72 65 73 73 69 6f 6e 0a 6d 75 3d 31 65 30 20 20 20 20 20 23 20 77 65 69 67 68 74 20 | .regression.mu=1e0.....#.weight. |
db80 | 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 6d 0a 62 69 61 73 3d 54 72 75 65 20 | of.the.OT.linear.term.bias=True. |
dba0 | 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 0a 0a 6f 74 5f 6d 61 70 70 69 6e 67 3d 6f | .#.estimate.a.bias..ot_mapping=o |
dbc0 | 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 28 29 0a 6f 74 5f 6d 61 | t.da.OTDA_mapping_linear().ot_ma |
dbe0 | 70 70 69 6e 67 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 62 69 | pping.fit(xs,xt,mu=mu,eta=eta,bi |
dc00 | 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 32 30 2c 76 65 72 62 6f 73 65 3d | as=bias,numItermax.=.20,verbose= |
dc20 | 54 72 75 65 29 0a 0a 58 31 74 6c 3d 6f 74 5f 6d 61 70 70 69 6e 67 2e 70 72 65 64 69 63 74 28 58 | True)..X1tl=ot_mapping.predict(X |
dc40 | 31 29 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 49 | 1).#.use.the.estimated.mapping.I |
dc60 | 31 74 6c 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6c 2c 49 31 2e 73 68 61 70 65 29 | 1tl=minmax(mat2im(X1tl,I1.shape) |
dc80 | 29 0a 0a 23 20 6e 6f 6e 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f | )..#.nonlinear.mapping.estimatio |
dca0 | 6e 0a 65 74 61 3d 31 65 2d 32 20 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 72 | n.eta=1e-2...#.quadratic.regular |
dcc0 | 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 0a 6d 75 3d 31 65 30 20 20 20 | ization.for.regression.mu=1e0... |
dce0 | 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 6d | ..#.weight.of.the.OT.linear.term |
dd00 | 0a 62 69 61 73 3d 46 61 6c 73 65 20 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 0a 73 | .bias=False..#.estimate.a.bias.s |
dd20 | 69 67 6d 61 3d 31 20 20 20 20 23 20 73 69 67 6d 61 20 62 61 6e 64 77 69 64 74 68 20 66 6f 74 20 | igma=1....#.sigma.bandwidth.fot. |
dd40 | 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 0a 0a 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 | gaussian.kernel...ot_mapping_ker |
dd60 | 6e 65 6c 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 28 29 0a | nel=ot.da.OTDA_mapping_kernel(). |
dd80 | 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d | ot_mapping_kernel.fit(xs,xt,mu=m |
dda0 | 75 2c 65 74 61 3d 65 74 61 2c 73 69 67 6d 61 3d 73 69 67 6d 61 2c 62 69 61 73 3d 62 69 61 73 2c | u,eta=eta,sigma=sigma,bias=bias, |
ddc0 | 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 58 | numItermax.=.10,verbose=True)..X |
dde0 | 31 74 6e 3d 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 70 72 65 64 69 63 74 28 58 31 | 1tn=ot_mapping_kernel.predict(X1 |
de00 | 29 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 49 31 | ).#.use.the.estimated.mapping.I1 |
de20 | 74 6e 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6e 2c 49 31 2e 73 68 61 70 65 29 29 | tn=minmax(mat2im(X1tn,I1.shape)) |
de40 | 0a 23 25 25 20 70 6c 6f 74 20 69 6d 61 67 65 73 0a 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 | .#%%.plot.images...pl.figure(2,( |
de60 | 31 30 2c 38 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a 0a 70 6c 2e 69 6d | 10,8))..pl.subplot(2,3,1)..pl.im |
de80 | 73 68 6f 77 28 49 31 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 27 29 0a 0a 70 6c 2e 73 | show(I1).pl.title('Im..1')..pl.s |
dea0 | 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 0a 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e | ubplot(2,3,2)..pl.imshow(I2).pl. |
dec0 | 74 69 74 6c 65 28 27 49 6d 2e 20 32 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c | title('Im..2')...pl.subplot(2,3, |
dee0 | 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 | 3).pl.imshow(I1t).pl.title('Im.. |
df00 | 31 20 49 6e 74 65 72 70 20 4c 50 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 | 1.Interp.LP')..pl.subplot(2,3,4) |
df20 | 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 65 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 | .pl.imshow(I1te).pl.title('Im..1 |
df40 | 20 49 6e 74 65 72 70 20 45 6e 74 72 6f 70 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | .Interp.Entrop')...pl.subplot(2, |
df60 | 33 2c 35 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 6c 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 | 3,5).pl.imshow(I1tl).pl.title('I |
df80 | 6d 2e 20 31 20 4c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f | m..1.Linear.mapping')..pl.subplo |
dfa0 | 74 28 32 2c 33 2c 36 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 6e 29 0a 70 6c 2e 74 69 74 6c | t(2,3,6).pl.imshow(I1tn).pl.titl |
dfc0 | 65 28 27 49 6d 2e 20 31 20 6e 6f 6e 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 27 29 0a 0a 70 6c | e('Im..1.nonlinear.mapping')..pl |
dfe0 | 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 57 89 1e 4b 4a 1b d0 65 5a 0f 00 00 5a 0f | .show().PK........W..KJ..eZ...Z. |
e000 | 00 00 27 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 63 6f | ..'...auto_examples/plot_otda_co |
e020 | 6c 6f 72 5f 69 6d 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 | lor_images.py#.-*-.coding:.utf-8 |
e040 | 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 3d 3d | .-*-.""".======================= |
e060 | 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 | ================================ |
e080 | 3d 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 69 74 68 20 | =.OT.for.domain.adaptation.with. |
e0a0 | 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 0a 3d 3d 3d 3d 3d | image.color.adaptation.[6].===== |
e0c0 | 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 | ================================ |
e0e0 | 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 70 6c | ===================..This.exampl |
e100 | 65 20 70 72 65 73 65 6e 74 73 20 61 20 77 61 79 20 6f 66 20 74 72 61 6e 73 66 65 72 72 69 6e 67 | e.presents.a.way.of.transferring |
e120 | 20 63 6f 6c 6f 72 73 20 62 65 74 77 65 65 6e 20 74 77 6f 20 69 6d 61 67 65 0a 77 69 74 68 20 4f | .colors.between.two.image.with.O |
e140 | 70 74 69 6d 61 6c 20 54 72 61 6e 73 70 6f 72 74 20 61 73 20 69 6e 74 72 6f 64 75 63 65 64 20 69 | ptimal.Transport.as.introduced.i |
e160 | 6e 20 5b 36 5d 0a 0a 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 | n.[6]..[6].Ferradans,.S.,.Papada |
e180 | 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 | kis,.N.,.Peyre,.G.,.&.Aujol,.J.. |
e1a0 | 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 73 63 72 65 74 65 20 | F..(2014)..Regularized.discrete. |
e1c0 | 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 0a 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 | optimal.transport..SIAM.Journal. |
e1e0 | 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 2d | on.Imaging.Sciences,.7(3),.1853- |
e200 | 31 38 38 32 2e 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 | 1882.."""..#.Authors:.Remi.Flama |
e220 | 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 20 20 | ry.<remi.flamary@unice.fr>.#.... |
e240 | 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 63 68 | ......Stanislas.Chambon.<stan.ch |
e260 | 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 4d 49 | ambon@gmail.com>.#.#.License:.MI |
e280 | 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 66 72 | T.License..import.numpy.as.np.fr |
e2a0 | 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 20 6d | om.scipy.import.ndimage.import.m |
e2c0 | 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 74 0a | atplotlib.pylab.as.pl.import.ot. |
e2e0 | 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 0a | ..r.=.np.random.RandomState(42). |
e300 | 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 73 | ..def.im2mat(I):....."""Converts |
e320 | 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 20 | .and.image.to.matrix.(one.pixel. |
e340 | 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 70 | per.line)""".....return.I.reshap |
e360 | 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 68 | e((I.shape[0].*.I.shape[1],.I.sh |
e380 | 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 3a | ape[2]))...def.mat2im(X,.shape): |
e3a0 | 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 74 | ....."""Converts.back.a.matrix.t |
e3c0 | 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 61 | o.an.image""".....return.X.resha |
e3e0 | 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 72 | pe(shape)...def.minmax(I):.....r |
e400 | 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 23 | eturn.np.clip(I,.0,.1)...####### |
e420 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e440 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e460 | 23 23 23 23 23 23 23 0a 23 20 67 65 6e 65 72 61 74 65 20 64 61 74 61 0a 23 23 23 23 23 23 23 23 | #######.#.generate.data.######## |
e480 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e4a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e4c0 | 23 23 23 23 23 23 0a 0a 23 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a 49 31 20 3d 20 6e 64 | ######..#.Loading.images.I1.=.nd |
e4e0 | 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 79 2e | image.imread('../data/ocean_day. |
e500 | 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 49 | jpg').astype(np.float64)./.256.I |
e520 | 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 65 61 | 2.=.ndimage.imread('../data/ocea |
e540 | 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 36 34 | n_sunset.jpg').astype(np.float64 |
e560 | 29 20 2f 20 32 35 36 0a 0a 58 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 29 0a 58 32 20 3d 20 69 6d | )./.256..X1.=.im2mat(I1).X2.=.im |
e580 | 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 6e 62 20 | 2mat(I2)..#.training.samples.nb. |
e5a0 | 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 61 70 65 | =.1000.idx1.=.r.randint(X1.shape |
e5c0 | 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 64 69 6e | [0],.size=(nb,)).idx2.=.r.randin |
e5e0 | 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 73 20 3d | t(X2.shape[0],.size=(nb,))..Xs.= |
e600 | 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 0a 0a 0a | .X1[idx1,.:].Xt.=.X2[idx2,.:]... |
e620 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e640 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e660 | 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 20 74 68 65 | ##############.#.Instantiate.the |
e680 | 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 68 6d 73 20 | .different.transport.algorithms. |
e6a0 | 61 6e 64 20 66 69 74 20 74 68 65 6d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | and.fit.them.################### |
e6c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e6e0 | 23 23 23 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 0a 23 20 45 | ###########################..#.E |
e700 | 4d 44 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 | MDTransport.ot_emd.=.ot.da.EMDTr |
e720 | 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 73 2c 20 58 74 3d 58 | ansport().ot_emd.fit(Xs=Xs,.Xt=X |
e740 | 74 29 0a 0a 23 20 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 | t)..#.SinkhornTransport.ot_sinkh |
e760 | 6f 72 6e 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 | orn.=.ot.da.SinkhornTransport(re |
e780 | 67 5f 65 3d 31 65 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 | g_e=1e-1).ot_sinkhorn.fit(Xs=Xs, |
e7a0 | 20 58 74 3d 58 74 29 0a 0a 23 20 70 72 65 64 69 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d | .Xt=Xt)..#.prediction.between.im |
e7c0 | 61 67 65 73 20 28 75 73 69 6e 67 20 6f 75 74 20 6f 66 20 73 61 6d 70 6c 65 20 70 72 65 64 69 63 | ages.(using.out.of.sample.predic |
e7e0 | 74 69 6f 6e 20 61 73 20 69 6e 20 5b 36 5d 29 0a 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 | tion.as.in.[6]).transp_Xs_emd.=. |
e800 | 6f 74 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 0a 74 72 61 6e 73 70 5f 58 | ot_emd.transform(Xs=X1).transp_X |
e820 | 74 5f 65 6d 64 20 3d 20 6f 74 5f 65 6d 64 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 6f 72 6d | t_emd.=.ot_emd.inverse_transform |
e840 | 28 58 74 3d 58 32 29 0a 0a 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 | (Xt=X2)..transp_Xs_sinkhorn.=.ot |
e860 | 5f 65 6d 64 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 31 29 0a 74 72 61 6e 73 70 5f 58 74 5f | _emd.transform(Xs=X1).transp_Xt_ |
e880 | 73 69 6e 6b 68 6f 72 6e 20 3d 20 6f 74 5f 65 6d 64 2e 69 6e 76 65 72 73 65 5f 74 72 61 6e 73 66 | sinkhorn.=.ot_emd.inverse_transf |
e8a0 | 6f 72 6d 28 58 74 3d 58 32 29 0a 0a 49 31 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 | orm(Xt=X2)..I1t.=.minmax(mat2im( |
e8c0 | 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 49 32 74 20 3d 20 | transp_Xs_emd,.I1.shape)).I2t.=. |
e8e0 | 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 74 5f 65 6d 64 2c 20 49 32 2e | minmax(mat2im(transp_Xt_emd,.I2. |
e900 | 73 68 61 70 65 29 29 0a 0a 49 31 74 65 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 | shape))..I1te.=.minmax(mat2im(tr |
e920 | 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 6f 72 6e 2c 20 49 31 2e 73 68 61 70 65 29 29 0a 49 32 74 | ansp_Xs_sinkhorn,.I1.shape)).I2t |
e940 | 65 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 74 5f 73 69 6e 6b | e.=.minmax(mat2im(transp_Xt_sink |
e960 | 68 6f 72 6e 2c 20 49 32 2e 73 68 61 70 65 29 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | horn,.I2.shape))...############# |
e980 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e9a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e9c0 | 23 0a 23 20 70 6c 6f 74 20 6f 72 69 67 69 6e 61 6c 20 69 6d 61 67 65 0a 23 23 23 23 23 23 23 23 | #.#.plot.original.image.######## |
e9e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
ea00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
ea20 | 23 23 23 23 23 23 0a 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 | ######..pl.figure(1,.figsize=(6. |
ea40 | 34 2c 20 33 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 69 | 4,.3))..pl.subplot(1,.2,.1).pl.i |
ea60 | 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 74 69 74 6c | mshow(I1).pl.axis('off').pl.titl |
ea80 | 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 32 | e('Image.1')..pl.subplot(1,.2,.2 |
eaa0 | 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 0a 70 | ).pl.imshow(I2).pl.axis('off').p |
eac0 | 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 | l.title('Image.2')...########### |
eae0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
eb00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
eb20 | 23 23 23 0a 23 20 73 63 61 74 74 65 72 20 70 6c 6f 74 20 6f 66 20 63 6f 6c 6f 72 73 0a 23 23 23 | ###.#.scatter.plot.of.colors.### |
eb40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
eb60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
eb80 | 23 23 23 23 23 23 23 23 23 23 23 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 |
eba0 | 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 2c 20 32 2c 20 31 29 | e=(6.4,.3))..pl.subplot(1,.2,.1) |
ebc0 | 0a 70 6c 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 32 5d 2c 20 | .pl.scatter(Xs[:,.0],.Xs[:,.2],. |
ebe0 | 63 3d 58 73 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 | c=Xs).pl.axis([0,.1,.0,.1]).pl.x |
ec00 | 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 0a 70 | label('Red').pl.ylabel('Blue').p |
ec20 | 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 70 6c 6f 74 28 31 | l.title('Image.1')..pl.subplot(1 |
ec40 | 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 5d 2c 20 58 74 5b | ,.2,.2).pl.scatter(Xt[:,.0],.Xt[ |
ec60 | 3a 2c 20 32 5d 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 | :,.2],.c=Xt).pl.axis([0,.1,.0,.1 |
ec80 | 5d 29 0a 70 6c 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 | ]).pl.xlabel('Red').pl.ylabel('B |
eca0 | 6c 75 65 27 29 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 | lue').pl.title('Image.2').pl.tig |
ecc0 | 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 23 23 23 23 | ht_layout()...################## |
ece0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
ed00 | 23 23 23 23 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 70 | ############################.#.p |
ed20 | 6c 6f 74 20 6e 65 77 20 69 6d 61 67 65 73 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | lot.new.images.################# |
ed40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
ed60 | 23 23 23 23 23 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 0a 70 | #############################..p |
ed80 | 6c 2e 66 69 67 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 | l.figure(3,.figsize=(8,.4))..pl. |
eda0 | 73 75 62 70 6c 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 | subplot(2,.3,.1).pl.imshow(I1).p |
edc0 | 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 31 27 | l.axis('off').pl.title('Image.1' |
ede0 | 29 0a 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 | )..pl.subplot(2,.3,.2).pl.imshow |
ee00 | 28 49 31 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 27 49 | (I1t).pl.axis('off').pl.title('I |
ee20 | 6d 61 67 65 20 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 | mage.1.Adapt')..pl.subplot(2,.3, |
ee40 | 20 33 29 0a 70 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 | .3).pl.imshow(I1te).pl.axis('off |
ee60 | 27 29 0a 70 6c 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 | ').pl.title('Image.1.Adapt.(reg) |
ee80 | 27 29 0a 0a 70 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 | ')..pl.subplot(2,.3,.4).pl.imsho |
eea0 | 77 28 49 32 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 49 | w(I2).pl.axis('off').pl.title('I |
eec0 | 6d 61 67 65 20 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 | mage.2')..pl.subplot(2,.3,.5).pl |
eee0 | 2e 69 6d 73 68 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 | .imshow(I2t).pl.axis('off').pl.t |
ef00 | 69 74 6c 65 28 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 | itle('Image.2.Adapt')..pl.subplo |
ef20 | 74 28 32 2c 20 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 | t(2,.3,.6).pl.imshow(I2te).pl.ax |
ef40 | 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 20 41 64 61 70 | is('off').pl.title('Image.2.Adap |
ef60 | 74 20 28 72 65 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 | t.(reg)').pl.tight_layout()..pl. |
ef80 | 73 68 6f 77 28 29 0a 50 4b 01 02 14 03 14 00 00 00 00 00 57 89 1e 4b ba bc 41 39 c9 08 00 00 c9 | show().PK..........W..K..A9..... |
efa0 | 08 00 00 19 00 00 00 00 00 00 00 00 00 00 00 b4 81 00 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c | .....................auto_exampl |
efc0 | 65 73 2f 70 6c 6f 74 5f 57 44 41 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a e7 a1 | es/plot_WDA.pyPK.............J.. |
efe0 | 46 a7 95 0c 00 00 95 0c 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 00 09 00 00 61 75 74 6f | F.........".................auto |
f000 | 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 2e 70 79 50 4b | _examples/plot_OTDA_mapping.pyPK |
f020 | 01 02 14 03 14 00 00 00 00 00 57 89 1e 4b aa d0 ce 62 7e 09 00 00 7e 09 00 00 21 00 00 00 00 00 | ..........W..K...b~...~...!..... |
f040 | 00 00 00 00 00 00 b4 81 d5 15 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f | ............auto_examples/plot_o |
f060 | 70 74 69 6d 5f 4f 54 72 65 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a f2 c1 a7 | ptim_OTreg.pyPK.............J... |
f080 | 29 f1 09 00 00 f1 09 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 92 1f 00 00 61 75 74 6f 5f | )........".................auto_ |
f0a0 | 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6c 61 73 73 65 73 2e 70 79 50 4b 01 | examples/plot_OTDA_classes.pyPK. |
f0c0 | 02 14 03 14 00 00 00 00 00 57 89 1e 4b d0 88 31 48 54 15 00 00 54 15 00 00 1d 00 00 00 00 00 00 | .........W..K..1HT...T.......... |
f0e0 | 00 00 00 00 00 b4 81 c3 29 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 | ........)..auto_examples/plot_ot |
f100 | 64 61 5f 64 32 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 57 89 1e 4b 59 38 a6 ff 13 07 00 00 | da_d2.pyPK..........W..KY8...... |
f120 | 13 07 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 b4 81 52 3f 00 00 61 75 74 6f 5f 65 78 61 6d 70 | ..................R?..auto_examp |
f140 | 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 31 44 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 32 82 e3 | les/plot_OT_1D.pyPK..........2.. |
f160 | 4a 58 1b a1 c7 97 10 00 00 97 10 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 b4 81 9e 46 00 00 61 | JX..........................F..a |
f180 | 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 63 6f 6e 76 2e 70 79 50 4b 01 02 | uto_examples/plot_OT_conv.pyPK.. |
f1a0 | 14 03 14 00 00 00 00 00 57 89 1e 4b fc 6c a8 1a 46 0b 00 00 46 0b 00 00 23 00 00 00 00 00 00 00 | ........W..K.l..F...F...#....... |
f1c0 | 00 00 00 00 b4 81 70 57 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 62 61 72 | ......pW..auto_examples/plot_bar |
f1e0 | 79 63 65 6e 74 65 72 5f 31 44 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 57 89 1e 4b b7 26 0b | ycenter_1D.pyPK..........W..K.&. |
f200 | b3 8b 11 00 00 8b 11 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 f7 62 00 00 61 75 74 6f 5f | ........."..............b..auto_ |
f220 | 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 63 6c 61 73 73 65 73 2e 70 79 50 4b 01 | examples/plot_otda_classes.pyPK. |
f240 | 02 14 03 14 00 00 00 00 00 57 89 1e 4b 2c a6 a3 c4 4a 11 00 00 4a 11 00 00 30 00 00 00 00 00 00 | .........W..K,...J...J...0...... |
f260 | 00 00 00 00 00 b4 81 c2 74 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 | ........t..auto_examples/plot_ot |
f280 | 64 61 5f 6d 61 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 | da_mapping_colors_images.pyPK... |
f2a0 | 03 14 00 00 00 00 00 6a 7b 82 49 25 c9 d6 13 1c 06 00 00 1c 06 00 00 28 00 00 00 00 00 00 00 00 | .......j{.I%...........(........ |
f2c0 | 00 00 00 b4 81 5a 86 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 32 | .....Z...auto_examples/demo_OT_2 |
f2e0 | 44 5f 73 61 6d 70 6c 65 73 6c 61 72 67 65 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 57 89 1e | D_sampleslarge.pyPK..........W.. |
f300 | 4b bc ce 2e 7c c3 0b 00 00 c3 0b 00 00 21 00 00 00 00 00 00 00 00 00 00 00 b4 81 bc 8c 00 00 61 | K...|........!.................a |
f320 | 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 70 79 | uto_examples/plot_OT_L1_vs_L2.py |
f340 | 50 4b 01 02 14 03 14 00 00 00 00 00 57 89 1e 4b 7b 03 bf 32 03 07 00 00 03 07 00 00 23 00 00 00 | PK..........W..K{..2........#... |
f360 | 00 00 00 00 00 00 00 00 b4 81 be 98 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 | ..............auto_examples/plot |
f380 | 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 | _OT_2D_samples.pyPK............. |
f3a0 | 4a ec af 42 31 2e 0a 00 00 2e 0a 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 b4 81 02 a0 00 00 61 | J..B1..........................a |
f3c0 | 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 32 44 2e 70 79 50 4b 01 02 | uto_examples/plot_OTDA_2D.pyPK.. |
f3e0 | 14 03 14 00 00 00 00 00 57 89 1e 4b d9 cf 46 53 c4 10 00 00 c4 10 00 00 22 00 00 00 00 00 00 00 | ........W..K..FS........"....... |
f400 | 00 00 00 00 b4 81 6b aa 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 | ......k...auto_examples/plot_otd |
f420 | 61 5f 6d 61 70 70 69 6e 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 57 89 1e 4b 7a 65 86 67 | a_mapping.pyPK..........W..Kze.g |
f440 | c9 06 00 00 c9 06 00 00 21 00 00 00 00 00 00 00 00 00 00 00 b4 81 6f bb 00 00 61 75 74 6f 5f 65 | ........!.............o...auto_e |
f460 | 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 70 79 50 4b 01 02 14 | xamples/plot_compute_emd.pyPK... |
f480 | 03 14 00 00 00 00 00 6a 7b 82 49 d4 40 d8 69 2e 05 00 00 2e 05 00 00 20 00 00 00 00 00 00 00 00 | .......j{.I.@.i................. |
f4a0 | 00 00 00 b4 81 77 c2 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 31 | .....w...auto_examples/demo_OT_1 |
f4c0 | 44 5f 74 65 73 74 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a a5 25 9f a1 06 0a 00 | D_test.pyPK.............J.%..... |
f4e0 | 00 06 0a 00 00 27 00 00 00 00 00 00 00 00 00 00 00 b4 81 e3 c7 00 00 61 75 74 6f 5f 65 78 61 6d | .....'.................auto_exam |
f500 | 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b | ples/plot_OTDA_color_images.pyPK |
f520 | 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a f7 ba 1e e3 6d 0d 00 00 6d 0d 00 00 2f 00 00 00 00 00 | .............J....m...m.../..... |
f540 | 00 00 00 00 00 00 b4 81 2e d2 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f | ............auto_examples/plot_O |
f560 | 54 44 41 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b 01 02 14 | TDA_mapping_color_images.pyPK... |
f580 | 03 14 00 00 00 00 00 57 89 1e 4b 4a 1b d0 65 5a 0f 00 00 5a 0f 00 00 27 00 00 00 00 00 00 00 00 | .......W..KJ..eZ...Z...'........ |
f5a0 | 00 00 00 b4 81 e8 df 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 | .........auto_examples/plot_otda |
f5c0 | 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b 05 06 00 00 00 00 14 00 14 00 49 06 00 00 | _color_images.pyPK..........I... |
f5e0 | 87 ef 00 00 00 00 | ...... |