ofs | hex dump | ascii |
---|
0000 | 50 4b 03 04 14 00 00 00 00 00 cb 86 1e 4b ba bc 41 39 c9 08 00 00 c9 08 00 00 19 00 00 00 61 75 | PK...........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 cb | ..mapping.(kernel)").PK......... |
15e0 | 86 1e 4b ac 48 87 7e b4 05 00 00 b4 05 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 | ..K.H.~........!...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 25 25 | tlib.pylab.as.pl.import.ot...#%% |
16e0 | 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 69 6e 73 0a | .parameters..n.=.100..#.nb.bins. |
1700 | 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 67 65 28 6e | .#.bin.positions.x.=.np.arange(n |
1720 | 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 69 61 6e 20 | ,.dtype=np.float64)..#.Gaussian. |
1740 | 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 61 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 | distributions.a.=.ot.datasets.ge |
1760 | 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 20 6d 3d 20 6d | t_1D_gauss(n,.m=20,.s=5)..#.m=.m |
1780 | 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f | ean,.s=.std.b.=.ot.datasets.get_ |
17a0 | 31 44 5f 67 61 75 73 73 28 6e 2c 20 6d 3d 36 30 2c 20 73 3d 31 30 29 0a 0a 23 20 6c 6f 73 73 20 | 1D_gauss(n,.m=60,.s=10)..#.loss. |
17c0 | 6d 61 74 72 69 78 0a 4d 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c | matrix.M.=.ot.dist(x.reshape((n, |
17e0 | 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 29 0a 4d 20 2f 3d 20 4d 2e | .1)),.x.reshape((n,.1))).M./=.M. |
1800 | 6d 61 78 28 29 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 | max()..#%%.EMD..G0.=.ot.emd(a,.b |
1820 | 2c 20 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 | ,.M)..pl.figure(3,.figsize=(5,.5 |
1840 | 29 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 30 2c 20 | )).ot.plot.plot1D_mat(a,.b,.G0,. |
1860 | 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 | 'OT.matrix.G0')..#%%.Example.wit |
1880 | 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a | h.Frobenius.norm.regularization. |
18a0 | 0a 0a 64 65 66 20 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 30 2e 35 20 2a 20 6e 70 2e | ..def.f(G):.....return.0.5.*.np. |
18c0 | 73 75 6d 28 47 2a 2a 32 29 0a 0a 0a 64 65 66 20 64 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 72 | sum(G**2)...def.df(G):.....retur |
18e0 | 6e 20 47 0a 0a 0a 72 65 67 20 3d 20 31 65 2d 31 0a 0a 47 6c 32 20 3d 20 6f 74 2e 6f 70 74 69 6d | n.G...reg.=.1e-1..Gl2.=.ot.optim |
1900 | 2e 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 67 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 | .cg(a,.b,.M,.reg,.f,.df,.verbose |
1920 | 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f | =True)..pl.figure(3).ot.plot.plo |
1940 | 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 6c 32 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 46 72 | t1D_mat(a,.b,.Gl2,.'OT.matrix.Fr |
1960 | 6f 62 2e 20 72 65 67 27 29 0a 0a 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 65 6e 74 72 | ob..reg')..#%%.Example.with.entr |
1980 | 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 0a 0a 64 65 66 20 66 28 47 29 3a 0a | opic.regularization...def.f(G):. |
19a0 | 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 73 75 6d 28 47 20 2a 20 6e 70 2e 6c 6f 67 28 47 29 29 | ....return.np.sum(G.*.np.log(G)) |
19c0 | 0a 0a 0a 64 65 66 20 64 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 6c 6f 67 28 | ...def.df(G):.....return.np.log( |
19e0 | 47 29 20 2b 20 31 2e 0a 0a 0a 72 65 67 20 3d 20 31 65 2d 33 0a 0a 47 65 20 3d 20 6f 74 2e 6f 70 | G).+.1....reg.=.1e-3..Ge.=.ot.op |
1a00 | 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 66 2c 20 76 65 72 62 | tim.cg(a,.b,.M,.reg,.f,.df,.verb |
1a20 | 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d | ose=True)..pl.figure(4,.figsize= |
1a40 | 28 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 | (5,.5)).ot.plot.plot1D_mat(a,.b, |
1a60 | 20 47 65 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 45 6e 74 72 6f 70 2e 20 72 65 67 27 29 0a 0a 23 | .Ge,.'OT.matrix.Entrop..reg')..# |
1a80 | 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 2b | %%.Example.with.Frobenius.norm.+ |
1aa0 | 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 77 69 74 68 20 67 63 | .entropic.regularization.with.gc |
1ac0 | 67 0a 0a 0a 64 65 66 20 66 28 47 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 30 2e 35 20 2a 20 6e | g...def.f(G):.....return.0.5.*.n |
1ae0 | 70 2e 73 75 6d 28 47 2a 2a 32 29 0a 0a 0a 64 65 66 20 64 66 28 47 29 3a 0a 20 20 20 20 72 65 74 | p.sum(G**2)...def.df(G):.....ret |
1b00 | 75 72 6e 20 47 0a 0a 0a 72 65 67 31 20 3d 20 31 65 2d 33 0a 72 65 67 32 20 3d 20 31 65 2d 31 0a | urn.G...reg1.=.1e-3.reg2.=.1e-1. |
1b20 | 0a 47 65 6c 32 20 3d 20 6f 74 2e 6f 70 74 69 6d 2e 67 63 67 28 61 2c 20 62 2c 20 4d 2c 20 72 65 | .Gel2.=.ot.optim.gcg(a,.b,.M,.re |
1b40 | 67 31 2c 20 72 65 67 32 2c 20 66 2c 20 64 66 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a | g1,.reg2,.f,.df,.verbose=True).. |
1b60 | 70 6c 2e 66 69 67 75 72 65 28 35 2c 20 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 0a 6f 74 2e | pl.figure(5,.figsize=(5,.5)).ot. |
1b80 | 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 20 62 2c 20 47 65 6c 32 2c 20 27 4f 54 20 | plot.plot1D_mat(a,.b,.Gel2,.'OT. |
1ba0 | 65 6e 74 72 6f 70 69 63 20 2b 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 0a 70 6c | entropic.+.matrix.Frob..reg').pl |
1bc0 | 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a f2 c1 a7 29 f1 09 00 00 f1 09 | .show().PK...........J...)...... |
1be0 | 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 4f 54 44 41 5f 63 6c | .."...auto_examples/plot_OTDA_cl |
1c00 | 61 73 73 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a | asses.py#.-*-.coding:.utf-8.-*-. |
1c20 | 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 0a 4f 54 20 | """.========================.OT. |
1c40 | 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | for.domain.adaptation.========== |
1c60 | 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 72 74 20 6d 61 74 70 | ==============.."""..import.matp |
1c80 | 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 0a 0a | lotlib.pylab.as.pl.import.ot.... |
1ca0 | 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 35 30 20 23 20 6e 62 20 73 61 6d 70 | .#%%.parameters..n=150.#.nb.samp |
1cc0 | 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 61 74 61 73 65 74 | les.in.source.and.target.dataset |
1ce0 | 73 0a 0a 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 | s..xs,ys=ot.datasets.get_data_cl |
1d00 | 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 6e 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 | assif('3gauss',n).xt,yt=ot.datas |
1d20 | 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 6e | ets.get_data_classif('3gauss2',n |
1d40 | 29 0a 0a 0a 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 | ).....#%%.plot.samples..pl.figur |
1d60 | 65 28 31 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 | e(1)..pl.subplot(2,2,1).pl.scatt |
1d80 | 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 61 72 6b 65 72 3d 27 | er(xs[:,0],xs[:,1],c=ys,marker=' |
1da0 | 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 29 0a 70 6c 2e 6c 65 | +',label='Source.samples').pl.le |
1dc0 | 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 64 69 | gend(loc=0).pl.title('Source..di |
1de0 | 73 74 72 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 | stributions')..pl.subplot(2,2,2) |
1e00 | 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 74 | .pl.scatter(xt[:,0],xt[:,1],c=yt |
1e20 | 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 65 | ,marker='o',label='Target.sample |
1e40 | 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 74 | s').pl.legend(loc=0).pl.title('t |
1e60 | 61 72 67 65 74 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 0a 23 25 25 20 4f 54 20 | arget..distributions')...#%%.OT. |
1e80 | 65 73 74 69 6d 61 74 69 6f 6e 0a 0a 23 20 4c 50 20 70 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d 64 3d | estimation..#.LP.problem.da_emd= |
1ea0 | 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 |
1ec0 | 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 |
1ee0 | 72 69 62 75 74 69 6f 6e 73 0a 78 73 74 30 3d 64 61 5f 65 6d 64 2e 69 6e 74 65 72 70 28 29 20 20 | ributions.xst0=da_emd.interp().. |
1f00 | 20 20 23 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 | ..#.interpolation.of.source.samp |
1f20 | 6c 65 73 0a 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a | les...#.sinkhorn.regularization. |
1f40 | 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 2e 4f 54 44 41 5f | lambd=1e-1.da_entrop=ot.da.OTDA_ |
1f60 | 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 73 2c 78 74 2c 72 | sinkhorn().da_entrop.fit(xs,xt,r |
1f80 | 65 67 3d 6c 61 6d 62 64 29 0a 78 73 74 73 3d 64 61 5f 65 6e 74 72 6f 70 2e 69 6e 74 65 72 70 28 | eg=lambd).xsts=da_entrop.interp( |
1fa0 | 29 0a 0a 23 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 | )..#.non-convex.Group.lasso.regu |
1fc0 | 6c 61 72 69 7a 61 74 69 6f 6e 0a 72 65 67 3d 31 65 2d 31 0a 65 74 61 3d 31 65 30 0a 64 61 5f 6c | larization.reg=1e-1.eta=1e0.da_l |
1fe0 | 70 6c 31 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6c 70 6c 31 28 29 0a 64 61 5f 6c 70 6c 31 2e 66 69 | pl1=ot.da.OTDA_lpl1().da_lpl1.fi |
2000 | 74 28 78 73 2c 79 73 2c 78 74 2c 72 65 67 3d 72 65 67 2c 65 74 61 3d 65 74 61 29 0a 78 73 74 67 | t(xs,ys,xt,reg=reg,eta=eta).xstg |
2020 | 3d 64 61 5f 6c 70 6c 31 2e 69 6e 74 65 72 70 28 29 0a 0a 0a 23 20 54 72 75 65 20 47 72 6f 75 70 | =da_lpl1.interp()...#.True.Group |
2040 | 20 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 | .lasso.regularization.reg=1e-1.e |
2060 | 74 61 3d 32 65 30 0a 64 61 5f 6c 31 6c 32 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6c 31 6c 32 28 29 | ta=2e0.da_l1l2=ot.da.OTDA_l1l2() |
2080 | 0a 64 61 5f 6c 31 6c 32 2e 66 69 74 28 78 73 2c 79 73 2c 78 74 2c 72 65 67 3d 72 65 67 2c 65 74 | .da_l1l2.fit(xs,ys,xt,reg=reg,et |
20a0 | 61 3d 65 74 61 2c 6e 75 6d 49 74 65 72 6d 61 78 3d 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 | a=eta,numItermax=20,verbose=True |
20c0 | 29 0a 78 73 74 67 6c 3d 64 61 5f 6c 31 6c 32 2e 69 6e 74 65 72 70 28 29 0a 0a 0a 23 25 25 20 70 | ).xstgl=da_l1l2.interp()...#%%.p |
20e0 | 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 65 64 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 0a | lot.interpolated.source.samples. |
2100 | 70 6c 2e 66 69 67 75 72 65 28 34 2c 28 31 35 2c 38 29 29 0a 0a 70 61 72 61 6d 5f 69 6d 67 3d 7b | pl.figure(4,(15,8))..param_img={ |
2120 | 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 27 3a 27 6e 65 61 72 65 73 74 27 2c 27 63 6d 61 70 27 | 'interpolation':'nearest','cmap' |
2140 | 3a 27 6a 65 74 27 7d 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 31 29 0a 70 6c 2e 69 6d | :'jet'}..pl.subplot(2,4,1).pl.im |
2160 | 73 68 6f 77 28 64 61 5f 65 6d 64 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 | show(da_emd.G,**param_img).pl.ti |
2180 | 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | tle('OT.matrix')...pl.subplot(2, |
21a0 | 34 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 65 6e 74 72 6f 70 2e 47 2c 2a 2a 70 61 72 | 4,2).pl.imshow(da_entrop.G,**par |
21c0 | 61 6d 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 73 69 6e 6b | am_img).pl.title('OT.matrix.sink |
21e0 | 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 33 29 0a 70 6c 2e 69 6d 73 | horn')..pl.subplot(2,4,3).pl.ims |
2200 | 68 6f 77 28 64 61 5f 6c 70 6c 31 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 | how(da_lpl1.G,**param_img).pl.ti |
2220 | 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 | tle('OT.matrix.non-convex.Group. |
2240 | 4c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 34 29 0a 70 6c 2e 69 6d | Lasso')..pl.subplot(2,4,4).pl.im |
2260 | 73 68 6f 77 28 64 61 5f 6c 31 6c 32 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 | show(da_l1l2.G,**param_img).pl.t |
2280 | 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 0a | itle('OT.matrix.Group.Lasso')... |
22a0 | 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b | pl.subplot(2,4,5).pl.scatter(xt[ |
22c0 | 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 61 62 | :,0],xt[:,1],c=yt,marker='o',lab |
22e0 | 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 0a 70 | el='Target.samples',alpha=0.3).p |
2300 | 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 2c 31 5d 2c 63 3d | l.scatter(xst0[:,0],xst0[:,1],c= |
2320 | 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 6d 70 | ys,marker='+',label='Transp.samp |
2340 | 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 6d 70 | les',s=30).pl.title('Interp.samp |
2360 | 6c 65 73 27 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 70 6c | les').pl.legend(loc=0)..pl.subpl |
2380 | 6f 74 28 32 2c 34 2c 36 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b | ot(2,4,6).pl.scatter(xt[:,0],xt[ |
23a0 | 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 67 | :,1],c=yt,marker='o',label='Targ |
23c0 | 65 74 20 73 61 6d 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 | et.samples',alpha=0.3).pl.scatte |
23e0 | 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 74 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 | r(xsts[:,0],xsts[:,1],c=ys,marke |
2400 | 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 73 3d 33 | r='+',label='Transp.samples',s=3 |
2420 | 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 53 69 6e 6b | 0).pl.title('Interp.samples.Sink |
2440 | 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 37 29 0a 70 6c 2e 73 63 61 | horn')..pl.subplot(2,4,7).pl.sca |
2460 | 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 65 72 | tter(xt[:,0],xt[:,1],c=yt,marker |
2480 | 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 70 68 | ='o',label='Target.samples',alph |
24a0 | 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 67 5b 3a 2c 30 5d 2c 78 73 74 67 | a=0.3).pl.scatter(xstg[:,0],xstg |
24c0 | 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 72 61 | [:,1],c=ys,marker='+',label='Tra |
24e0 | 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 6e 74 | nsp.samples',s=30).pl.title('Int |
2500 | 65 72 70 20 73 61 6d 70 6c 65 73 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 4c 61 73 | erp.samples.non-convex.Group.Las |
2520 | 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 38 29 0a 70 6c 2e 73 63 61 74 74 | so')..pl.subplot(2,4,8).pl.scatt |
2540 | 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 27 | er(xt[:,0],xt[:,1],c=yt,marker=' |
2560 | 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 3d | o',label='Target.samples',alpha= |
2580 | 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 67 6c 5b 3a 2c 30 5d 2c 78 73 74 67 6c | 0.3).pl.scatter(xstgl[:,0],xstgl |
25a0 | 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 72 61 | [:,1],c=ys,marker='+',label='Tra |
25c0 | 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 6e 74 | nsp.samples',s=30).pl.title('Int |
25e0 | 65 72 70 20 73 61 6d 70 6c 65 73 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 50 4b 03 04 14 00 00 | erp.samples.Group.Lasso')PK..... |
2600 | 00 00 00 34 87 1e 4b d0 88 31 48 54 15 00 00 54 15 00 00 1d 00 00 00 61 75 74 6f 5f 65 78 61 6d | ...4..K..1HT...T.......auto_exam |
2620 | 70 6c 65 73 2f 70 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 | ples/plot_otda_d2.py#.-*-.coding |
2640 | 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.-*-.""".================ |
2660 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 65 6d 70 69 72 69 63 61 6c 20 | ==============.OT.for.empirical. |
2680 | 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | distributions.================== |
26a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 6f | ============..This.example.intro |
26c0 | 64 75 63 65 73 20 61 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 32 | duces.a.domain.adaptation.in.a.2 |
26e0 | 44 20 73 65 74 74 69 6e 67 2e 20 49 74 20 65 78 70 6c 69 63 69 74 73 0a 74 68 65 20 70 72 6f 62 | D.setting..It.explicits.the.prob |
2700 | 6c 65 6d 20 6f 66 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 61 6e 64 20 69 6e 74 | lem.of.domain.adaptation.and.int |
2720 | 72 6f 64 75 63 65 73 20 73 6f 6d 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 61 | roduces.some.optimal.transport.a |
2740 | 70 70 72 6f 61 63 68 65 73 20 74 6f 20 73 6f 6c 76 65 20 69 74 2e 0a 0a 51 75 61 6e 74 69 74 69 | pproaches.to.solve.it...Quantiti |
2760 | 65 73 20 73 75 63 68 20 61 73 20 6f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 2c 20 67 72 | es.such.as.optimal.couplings,.gr |
2780 | 65 61 74 65 72 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 66 69 63 69 65 6e 74 73 20 61 6e 64 0a | eater.coupling.coefficients.and. |
27a0 | 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 20 61 72 65 20 72 65 70 72 65 73 65 6e | transported.samples.are.represen |
27c0 | 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 67 69 76 65 20 61 20 76 69 73 75 61 6c 20 75 6e | ted.in.order.to.give.a.visual.un |
27e0 | 64 65 72 73 74 61 6e 64 69 6e 67 0a 6f 66 20 77 68 61 74 20 74 68 65 20 74 72 61 6e 73 70 6f 72 | derstanding.of.what.the.transpor |
2800 | 74 20 6d 65 74 68 6f 64 73 20 61 72 65 20 64 6f 69 6e 67 2e 0a 22 22 22 0a 0a 23 20 41 75 74 68 | t.methods.are.doing.."""..#.Auth |
2820 | 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 79 40 | ors:.Remi.Flamary.<remi.flamary@ |
2840 | 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 20 43 | unice.fr>.#..........Stanislas.C |
2860 | 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 3e 0a | hambon.<stan.chambon@gmail.com>. |
2880 | 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 72 74 | #.#.License:.MIT.License..import |
28a0 | 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 |
28c0 | 74 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | t...############################ |
28e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2900 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 67 65 6e 65 72 61 74 65 20 64 61 | ##################.#.generate.da |
2920 | 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 23 23 23 23 23 | ta.############################# |
2940 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2960 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 6e 5f 73 61 6d 70 6c 65 73 5f 73 6f 75 | #################..n_samples_sou |
2980 | 72 63 65 20 3d 20 31 35 30 0a 6e 5f 73 61 6d 70 6c 65 73 5f 74 61 72 67 65 74 20 3d 20 31 35 30 | rce.=.150.n_samples_target.=.150 |
29a0 | 0a 0a 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f | ..Xs,.ys.=.ot.datasets.get_data_ |
29c0 | 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 20 6e 5f 73 61 6d 70 6c 65 73 5f 73 6f 75 72 | classif('3gauss',.n_samples_sour |
29e0 | 63 65 29 0a 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 | ce).Xt,.yt.=.ot.datasets.get_dat |
2a00 | 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 6e 5f 73 61 6d 70 6c 65 73 5f 74 | a_classif('3gauss2',.n_samples_t |
2a20 | 61 72 67 65 74 29 0a 0a 23 20 43 6f 73 74 20 6d 61 74 72 69 78 0a 4d 20 3d 20 6f 74 2e 64 69 73 | arget)..#.Cost.matrix.M.=.ot.dis |
2a40 | 74 28 58 73 2c 20 58 74 2c 20 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 0a | t(Xs,.Xt,.metric='sqeuclidean'). |
2a60 | 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ..############################## |
2a80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2aa0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 49 6e 73 74 61 6e 74 69 61 74 65 20 74 | ################.#.Instantiate.t |
2ac0 | 68 65 20 64 69 66 66 65 72 65 6e 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f 72 69 74 68 6d | he.different.transport.algorithm |
2ae0 | 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 23 23 23 23 | s.and.fit.them.################# |
2b00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2b20 | 23 23 23 23 23 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 | #############################..# |
2b40 | 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 61 2e 45 4d | .EMD.Transport.ot_emd.=.ot.da.EM |
2b60 | 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 73 2c 20 58 | DTransport().ot_emd.fit(Xs=Xs,.X |
2b80 | 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 6f 74 5f 73 | t=Xt)..#.Sinkhorn.Transport.ot_s |
2ba0 | 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 73 70 6f 72 | inkhorn.=.ot.da.SinkhornTranspor |
2bc0 | 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 74 28 58 73 | t(reg_e=1e-1).ot_sinkhorn.fit(Xs |
2be0 | 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 73 70 6f 72 | =Xs,.Xt=Xt)..#.Sinkhorn.Transpor |
2c00 | 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 61 74 69 6f | t.with.Group.lasso.regularizatio |
2c20 | 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 6c 31 54 72 | n.ot_lpl1.=.ot.da.SinkhornLpl1Tr |
2c40 | 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 65 30 29 0a | ansport(reg_e=1e-1,.reg_cl=1e0). |
2c60 | 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 3d 58 74 29 | ot_lpl1.fit(Xs=Xs,.ys=ys,.Xt=Xt) |
2c80 | 0a 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 | ..#.transport.source.samples.ont |
2ca0 | 6f 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 | o.target.samples.transp_Xs_emd.= |
2cc0 | 20 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 | .ot_emd.transform(Xs=Xs).transp_ |
2ce0 | 58 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 | Xs_sinkhorn.=.ot_sinkhorn.transf |
2d00 | 6f 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 | orm(Xs=Xs).transp_Xs_lpl1.=.ot_l |
2d20 | 70 6c 31 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 | pl1.transform(Xs=Xs)...######### |
2d40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2d60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2d80 | 23 23 23 23 23 0a 23 20 46 69 67 20 31 20 3a 20 70 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 | #####.#.Fig.1.:.plots.source.and |
2da0 | 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 20 2b 20 6d 61 74 72 69 78 20 6f 66 20 70 61 69 72 | .target.samples.+.matrix.of.pair |
2dc0 | 77 69 73 65 20 64 69 73 74 61 6e 63 65 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | wise.distance.################## |
2de0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
2e00 | 23 23 23 23 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 6c | ############################..pl |
2e20 | 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 31 30 29 29 0a 70 6c 2e | .figure(1,.figsize=(10,.10)).pl. |
2e40 | 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 28 58 73 5b 3a | subplot(2,.2,.1).pl.scatter(Xs[: |
2e60 | 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 | ,.0],.Xs[:,.1],.c=ys,.marker='+' |
2e80 | 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 78 74 69 | ,.label='Source.samples').pl.xti |
2ea0 | 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 | cks([]).pl.yticks([]).pl.legend( |
2ec0 | 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 73 61 6d 70 6c 65 73 | loc=0).pl.title('Source..samples |
2ee0 | 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 0a 70 6c 2e 73 63 61 74 74 | ')..pl.subplot(2,.2,.2).pl.scatt |
2f00 | 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 | er(Xt[:,.0],.Xt[:,.1],.c=yt,.mar |
2f20 | 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 | ker='o',.label='Target.samples') |
2f40 | 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e | .pl.xticks([]).pl.yticks([]).pl. |
2f60 | 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 20 73 | legend(loc=0).pl.title('Target.s |
2f80 | 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 33 29 0a 70 6c | amples')..pl.subplot(2,.2,.3).pl |
2fa0 | 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 | .imshow(M,.interpolation='neares |
2fc0 | 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a | t').pl.xticks([]).pl.yticks([]). |
2fe0 | 70 6c 2e 74 69 74 6c 65 28 27 4d 61 74 72 69 78 20 6f 66 20 70 61 69 72 77 69 73 65 20 64 69 73 | pl.title('Matrix.of.pairwise.dis |
3000 | 74 61 6e 63 65 73 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 | tances').pl.tight_layout()...### |
3020 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3040 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3060 | 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 32 20 3a 20 70 6c 6f 74 73 20 6f 70 74 69 | ###########.#.Fig.2.:.plots.opti |
3080 | 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 73 20 66 6f 72 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 | mal.couplings.for.the.different. |
30a0 | 6d 65 74 68 6f 64 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 23 | methods.######################## |
30c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
30e0 | 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 72 | ######################..pl.figur |
3100 | 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 36 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f | e(2,.figsize=(10,.6))..pl.subplo |
3120 | 74 28 32 2c 20 33 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 65 6d 64 2e 63 6f 75 70 | t(2,.3,.1).pl.imshow(ot_emd.coup |
3140 | 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'). |
3160 | 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 |
3180 | 69 74 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 45 4d 44 54 72 61 6e 73 | itle('Optimal.coupling\nEMDTrans |
31a0 | 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 32 29 0a 70 6c 2e 69 | port')..pl.subplot(2,.3,.2).pl.i |
31c0 | 6d 73 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 | mshow(ot_sinkhorn.coupling_,.int |
31e0 | 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 | erpolation='nearest').pl.xticks( |
3200 | 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 69 | []).pl.yticks([]).pl.title('Opti |
3220 | 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 | mal.coupling\nSinkhornTransport' |
3240 | 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 68 6f 77 | )..pl.subplot(2,.3,.3).pl.imshow |
3260 | 28 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f | (ot_lpl1.coupling_,.interpolatio |
3280 | 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 | n='nearest').pl.xticks([]).pl.yt |
32a0 | 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 |
32c0 | 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 |
32e0 | 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 | .subplot(2,.3,.4).ot.plot.plot2D |
3300 | 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 65 6d 64 2e 63 6f 75 70 | _samples_mat(Xs,.Xt,.ot_emd.coup |
3320 | 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 72 | ling_,.c=[.5,..5,.1]).pl.scatter |
3340 | 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 | (Xs[:,.0],.Xs[:,.1],.c=ys,.marke |
3360 | 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 | r='+',.label='Source.samples').p |
3380 | 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 63 3d | l.scatter(Xt[:,.0],.Xt[:,.1],.c= |
33a0 | 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 | yt,.marker='o',.label='Target.sa |
33c0 | 6d 70 6c 65 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 | mples').pl.xticks([]).pl.yticks( |
33e0 | 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 66 | []).pl.title('Main.coupling.coef |
3400 | 66 69 63 69 65 6e 74 73 5c 6e 45 4d 44 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 | ficients\nEMDTransport')..pl.sub |
3420 | 70 6c 6f 74 28 32 2c 20 33 2c 20 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d | plot(2,.3,.5).ot.plot.plot2D_sam |
3440 | 70 6c 65 73 5f 6d 61 74 28 58 73 2c 20 58 74 2c 20 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 | ples_mat(Xs,.Xt,.ot_sinkhorn.cou |
3460 | 70 6c 69 6e 67 5f 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 73 63 61 74 74 65 | pling_,.c=[.5,..5,.1]).pl.scatte |
3480 | 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b | r(Xs[:,.0],.Xs[:,.1],.c=ys,.mark |
34a0 | 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a | er='+',.label='Source.samples'). |
34c0 | 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 63 | pl.scatter(Xt[:,.0],.Xt[:,.1],.c |
34e0 | 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 | =yt,.marker='o',.label='Target.s |
3500 | 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 | amples').pl.xticks([]).pl.yticks |
3520 | 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4d 61 69 6e 20 63 6f 75 70 6c 69 6e 67 20 63 6f 65 | ([]).pl.title('Main.coupling.coe |
3540 | 66 66 69 63 69 65 6e 74 73 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a | fficients\nSinkhornTransport').. |
3560 | 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 36 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 | pl.subplot(2,.3,.6).ot.plot.plot |
3580 | 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 6c 70 6c 31 2e 63 | 2D_samples_mat(Xs,.Xt,.ot_lpl1.c |
35a0 | 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 70 6c 2e 73 63 61 74 | oupling_,.c=[.5,..5,.1]).pl.scat |
35c0 | 74 65 72 28 58 73 5b 3a 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 | ter(Xs[:,.0],.Xs[:,.1],.c=ys,.ma |
35e0 | 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 | rker='+',.label='Source.samples' |
3600 | 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], |
3620 | 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 |
3640 | 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 |
3660 | 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 70 6c 69 6e 67 20 63 | ks([]).pl.title('Main.coupling.c |
3680 | 6f 65 66 66 69 63 69 65 6e 74 73 5c 6e 53 69 6e 6b 68 6f 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f | oefficients\nSinkhornLpl1Transpo |
36a0 | 72 74 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 | rt').pl.tight_layout()...####### |
36c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
36e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3700 | 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 33 20 3a 20 70 6c 6f 74 20 74 72 61 6e 73 70 6f 72 74 | #######.#.Fig.3.:.plot.transport |
3720 | 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 23 23 23 23 | ed.samples.##################### |
3740 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
3760 | 23 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 64 69 73 | #########################..#.dis |
3780 | 70 6c 61 79 20 74 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 0a 70 6c 2e 66 69 67 75 | play.transported.samples.pl.figu |
37a0 | 72 65 28 34 2c 20 66 69 67 73 69 7a 65 3d 28 31 30 2c 20 34 29 29 0a 70 6c 2e 73 75 62 70 6c 6f | re(4,.figsize=(10,.4)).pl.subplo |
37c0 | 74 28 31 2c 20 33 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 | t(1,.3,.1).pl.scatter(Xt[:,.0],. |
37e0 | 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',..... |
3800 | 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 |
3820 | 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 70 5f 58 73 5f 65 | lpha=0.5).pl.scatter(transp_Xs_e |
3840 | 6d 64 5b 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 | md[:,.0],.transp_Xs_emd[:,.1],.c |
3860 | 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 62 65 | =ys,............marker='+',.labe |
3880 | 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 0a 70 6c 2e 74 69 74 | l='Transp.samples',.s=30).pl.tit |
38a0 | 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 45 6d 64 54 72 61 6e | le('Transported.samples\nEmdTran |
38c0 | 73 70 6f 72 74 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 78 74 69 63 | sport').pl.legend(loc=0).pl.xtic |
38e0 | 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 73 75 62 70 6c 6f 74 | ks([]).pl.yticks([])..pl.subplot |
3900 | 28 31 2c 20 33 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 | (1,.3,.2).pl.scatter(Xt[:,.0],.X |
3920 | 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 20 | t[:,.1],.c=yt,.marker='o',...... |
3940 | 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 6c | ......label='Target.samples',.al |
3960 | 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 70 5f 58 73 5f 73 69 | pha=0.5).pl.scatter(transp_Xs_si |
3980 | 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 6e | nkhorn[:,.0],.transp_Xs_sinkhorn |
39a0 | 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 3d | [:,.1],.c=ys,............marker= |
39c0 | 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 33 | '+',.label='Transp.samples',.s=3 |
39e0 | 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 73 | 0).pl.title('Transported.samples |
3a00 | 5c 6e 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 | \nSinkhornTransport').pl.xticks( |
3a20 | 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c | []).pl.yticks([])..pl.subplot(1, |
3a40 | 20 33 2c 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 | .3,.3).pl.scatter(Xt[:,.0],.Xt[: |
3a60 | 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 20 | ,.1],.c=yt,.marker='o',......... |
3a80 | 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 61 | ...label='Target.samples',.alpha |
3aa0 | 3d 30 2e 35 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 5b | =0.5).pl.scatter(transp_Xs_lpl1[ |
3ac0 | 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 79 | :,.0],.transp_Xs_lpl1[:,.1],.c=y |
3ae0 | 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 3d | s,............marker='+',.label= |
3b00 | 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 74 69 74 6c 65 | 'Transp.samples',.s=30).pl.title |
3b20 | 28 27 54 72 61 6e 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 53 69 6e 6b 68 6f 72 6e 4c | ('Transported.samples\nSinkhornL |
3b40 | 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e | pl1Transport').pl.xticks([]).pl. |
3b60 | 79 74 69 63 6b 73 28 5b 5d 29 0a 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 70 6c | yticks([])..pl.tight_layout().pl |
3b80 | 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 cb 86 1e 4b 1e a6 15 2a 43 04 00 00 43 04 | .show().PK...........K...*C...C. |
3ba0 | 00 00 1b 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 31 44 2e 70 | ......auto_examples/plot_OT_1D.p |
3bc0 | 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d | y#.-*-.coding:.utf-8.-*-.""".=== |
3be0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 | =================.1D.optimal.tra |
3c00 | 6e 73 70 6f 72 74 0a 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 | nsport.====================..""" |
3c20 | 0a 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 | ..#.Author:.Remi.Flamary.<remi.f |
3c40 | 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 | lamary@unice.fr>.#.#.License:.MI |
3c60 | 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d | T.License..import.numpy.as.np.im |
3c80 | 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 |
3ca0 | 72 74 20 6f 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 | rt.ot.from.ot.datasets.import.ge |
3cc0 | 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 | t_1D_gauss.as.gauss..#%%.paramet |
3ce0 | 65 72 73 0a 0a 6e 20 3d 20 31 30 30 20 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 70 | ers..n.=.100..#.nb.bins..#.bin.p |
3d00 | 6f 73 69 74 69 6f 6e 73 0a 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d | ositions.x.=.np.arange(n,.dtype= |
3d20 | 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 | np.float64)..#.Gaussian.distribu |
3d40 | 74 69 6f 6e 73 0a 61 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d 35 29 20 20 23 | tions.a.=.gauss(n,.m=20,.s=5)..# |
3d60 | 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d | .m=.mean,.s=.std.b.=.gauss(n,.m= |
3d80 | 36 30 2c 20 73 3d 31 30 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 20 3d 20 6f 74 2e | 60,.s=10)..#.loss.matrix.M.=.ot. |
3da0 | 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 78 2e 72 65 73 68 61 70 | dist(x.reshape((n,.1)),.x.reshap |
3dc0 | 65 28 28 6e 2c 20 31 29 29 29 0a 4d 20 2f 3d 20 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f | e((n,.1))).M./=.M.max()..#%%.plo |
3de0 | 74 20 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 | t.the.distributions..pl.figure(1 |
3e00 | 2c 20 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 | ,.figsize=(6.4,.3)).pl.plot(x,.a |
3e20 | 2c 20 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 | ,.'b',.label='Source.distributio |
3e40 | 6e 27 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 | n').pl.plot(x,.b,.'r',.label='Ta |
3e60 | 72 67 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 | rget.distribution').pl.legend(). |
3e80 | 0a 23 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 | .#%%.plot.distributions.and.loss |
3ea0 | 20 6d 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 | .matrix..pl.figure(2,.figsize=(5 |
3ec0 | 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 4d | ,.5)).ot.plot.plot1D_mat(a,.b,.M |
3ee0 | 2c 20 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 20 | ,.'Cost.matrix.M')..#%%.EMD..G0. |
3f00 | 3d 20 6f 74 2e 65 6d 64 28 61 2c 20 62 2c 20 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 2c 20 | =.ot.emd(a,.b,.M)..pl.figure(3,. |
3f20 | 66 69 67 73 69 7a 65 3d 28 35 2c 20 35 29 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d | figsize=(5,.5)).ot.plot.plot1D_m |
3f40 | 61 74 28 61 2c 20 62 2c 20 47 30 2c 20 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a 23 25 | at(a,.b,.G0,.'OT.matrix.G0')..#% |
3f60 | 25 20 53 69 6e 6b 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 | %.Sinkhorn..lambd.=.1e-3.Gs.=.ot |
3f80 | 2e 73 69 6e 6b 68 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 | .sinkhorn(a,.b,.M,.lambd,.verbos |
3fa0 | 65 3d 54 72 75 65 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 | e=True)..pl.figure(4,.figsize=(5 |
3fc0 | 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 47 | ,.5)).ot.plot.plot1D_mat(a,.b,.G |
3fe0 | 73 2c 20 27 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 68 6f | s,.'OT.matrix.Sinkhorn')..pl.sho |
4000 | 77 28 29 0a 50 4b 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 | w().PK........2..JX............. |
4020 | 00 00 61 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 23 | ..auto_examples/plot_OT_conv.py# |
4040 | 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.-*-.""".===== |
4060 | 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 31 44 20 57 61 73 | =========================.1D.Was |
4080 | 73 65 72 73 74 65 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 | serstein.barycenter.demo.======= |
40a0 | 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 40 61 75 74 68 6f | =======================...@autho |
40c0 | 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 73 | r:.rflamary."""..import.numpy.as |
40e0 | 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 |
4100 | 6c 0a 69 6d 70 6f 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 | l.import.ot.from.mpl_toolkits.mp |
4120 | 6c 6f 74 33 64 20 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 | lot3d.import.Axes3D.#necessary.f |
4140 | 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 69 6d 70 6f | or.3d.plot.even.if.not.used.impo |
4160 | 72 74 20 73 63 69 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 | rt.scipy.as.sp.import.scipy.sign |
4180 | 61 6c 20 61 73 20 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 | al.as.sps.#%%.parameters..n=10.# |
41a0 | 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 0a 78 3d 6e 70 2e 61 | .nb.bins..#.bin.positions.x=np.a |
41c0 | 72 61 6e 67 65 28 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 | range(n,dtype=np.float64)..xx,yy |
41e0 | 3d 6e 70 2e 6d 65 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 | =np.meshgrid(x,x)...xpos=np.hsta |
4200 | 63 6b 28 28 78 78 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 | ck((xx.reshape(-1,1),yy.reshape( |
4220 | 2d 31 2c 31 29 29 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 | -1,1)))..M=ot.dist(xpos)...I0=(( |
4240 | 78 78 2d 35 29 2a 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 | xx-5)**2+(yy-5)**2<3**2)*1.0.I1= |
4260 | 28 28 78 78 2d 37 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 | ((xx-7)**2+(yy-7)**2<3**2)*1.0.. |
4280 | 49 30 2f 3d 49 30 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 | I0/=I0.sum().I1/=I1.sum()..i0=I0 |
42a0 | 2e 72 61 76 65 6c 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 | .ravel().i1=I1.ravel()..M=M[i0>0 |
42c0 | 2c 3a 5d 5b 3a 2c 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 | ,:][:,i1>0].copy().i0=i0[i0>0].i |
42e0 | 31 3d 69 31 5b 69 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 | 1=i1[i1>0].Itot=np.concatenate(( |
4300 | 49 30 5b 3a 2c 3a 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 | I0[:,:,np.newaxis],I1[:,:,np.new |
4320 | 61 78 69 73 5d 29 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 | axis]),2)...#%%.plot.the.distrib |
4340 | 75 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 | utions..pl.figure(1).pl.subplot( |
4360 | 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( |
4380 | 32 2c 32 2c 32 29 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 | 2,2,2).pl.imshow(I1)...#%%.baryc |
43a0 | 65 6e 74 65 72 20 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 | enter.computation..alpha=0.5.#.0 |
43c0 | 3c 3d 61 6c 70 68 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 | <=alpha<=1.weights=np.array([1-a |
43e0 | 6c 70 68 61 2c 61 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 | lpha,alpha])...def.conv2(I,k):.. |
4400 | 20 20 20 72 65 74 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 | ...return.sp.ndimage.convolve1d( |
4420 | 73 70 2e 6e 64 69 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 | sp.ndimage.convolve1d(I,k,axis=1 |
4440 | 29 2c 6b 2c 61 78 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 | ),k,axis=0)..def.conv2n(I,k):... |
4460 | 20 20 72 65 73 3d 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 | ..res=np.zeros_like(I).....for.i |
4480 | 20 69 6e 20 72 61 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 | .in.range(I.shape[2]):.........r |
44a0 | 65 73 5b 3a 2c 3a 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 | es[:,:,i]=conv2(I[:,:,i],k)..... |
44c0 | 72 65 74 75 72 6e 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 | return.res...def.get_1Dkernel(re |
44e0 | 67 2c 74 68 72 3d 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 | g,thr=1e-16,wmax=1024):.....w=ma |
4500 | 78 28 6d 69 6e 28 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 | x(min(wmax,2*int((-np.log(thr)*r |
4520 | 65 67 29 2a 2a 28 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 | eg)**(.5))),3).....x=np.arange(w |
4540 | 2c 64 74 79 70 65 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 | ,dtype=np.float64).....return.np |
4560 | 2e 65 78 70 28 2d 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 | .exp(-((x-w/2)**2)/reg)......thr |
4580 | 3d 31 65 2d 31 36 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 | =1e-16.reg=1e0..k=get_1Dkernel(r |
45a0 | 65 67 29 0a 70 6c 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 | eg).pl.figure(2).pl.plot(k)..I05 |
45c0 | 3d 63 6f 6e 76 32 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 | =conv2(I0,k)..pl.figure(1).pl.su |
45e0 | 62 70 6c 6f 74 28 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 | bplot(2,2,1).pl.imshow(I0).pl.su |
4600 | 62 70 6c 6f 74 28 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 | bplot(2,2,2).pl.imshow(I05)..#%% |
4620 | 0a 0a 47 3d 6f 74 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 | ..G=ot.emd(i0,i1,M).r0=np.sum(M* |
4640 | 47 29 0a 0a 72 65 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 | G)..reg=1e-1.Gs=ot.bregman.sinkh |
4660 | 6f 72 6e 5f 6b 6e 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 | orn_knopp(i0,i1,M,reg=reg).rs=np |
4680 | 2e 73 75 6d 28 4d 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 | .sum(M*Gs)..#%%..def.mylog(u):.. |
46a0 | 20 20 20 74 6d 70 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 | ...tmp=np.log(u).....tmp[np.isna |
46c0 | 6e 28 74 6d 70 29 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 | n(tmp)]=0.....return.tmp..def.si |
46e0 | 6e 6b 68 6f 72 6e 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 | nkhorn_conv(a,b,.reg,.numItermax |
4700 | 20 3d 20 31 30 30 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 | .=.1000,.stopThr=1e-9,.verbose=F |
4720 | 61 6c 73 65 2c 20 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 | alse,.log=False,**kwargs):...... |
4740 | 20 61 3d 6e 70 2e 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 | .a=np.asarray(a,dtype=np.float64 |
4760 | 29 0a 20 20 20 20 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 | ).....b=np.asarray(b,dtype=np.fl |
4780 | 6f 61 74 36 34 29 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 | oat64)...................if.len( |
47a0 | 62 2e 73 68 61 70 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 | b.shape)>2:.........nbb=b.shape[ |
47c0 | 32 5d 0a 20 20 20 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 | 2].........a=a[:,:,np.newaxis].. |
47e0 | 20 20 20 65 6c 73 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 | ...else:.........nbb=0.......... |
4800 | 20 69 66 20 6c 6f 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 | .if.log:.........log={'err':[]}. |
4820 | 0a 20 20 20 20 23 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 | .....#.we.assume.that.no.distanc |
4840 | 65 73 20 61 72 65 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 | es.are.null.except.those.of.the. |
4860 | 64 69 61 67 6f 6e 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 | diagonal.of.distances.....if.nbb |
4880 | 3a 0a 20 20 20 20 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 | :.........u.=.np.ones((a.shape[0 |
48a0 | 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 61 2e 73 68 | ],a.shape[1],nbb))/(np.prod(a.sh |
48c0 | 61 70 65 5b 3a 32 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 | ape[:2])).........v.=.np.ones((a |
48e0 | 2e 73 68 61 70 65 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 | .shape[0],a.shape[1],nbb))/(np.p |
4900 | 72 6f 64 28 62 2e 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 | rod(b.shape[:2])).........a0=1.0 |
4920 | 2f 28 6e 70 2e 70 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 | /(np.prod(b.shape[:2])).....else |
4940 | 3a 0a 20 20 20 20 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 | :.........u.=.np.ones((a.shape[0 |
4960 | 5d 2c 61 2e 73 68 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 | ],a.shape[1]))/(np.prod(a.shape[ |
4980 | 3a 32 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 | :2])).........v.=.np.ones((a.sha |
49a0 | 70 65 5b 30 5d 2c 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 | pe[0],a.shape[1]))/(np.prod(b.sh |
49c0 | 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 72 6f | ape[:2])).........a0=1.0/(np.pro |
49e0 | 64 28 62 2e 73 68 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 | d(b.shape[:2]))................. |
4a00 | 20 0a 20 20 20 20 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 | ......k=get_1Dkernel(reg)....... |
4a20 | 20 20 20 69 66 20 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 | ...if.nbb:.........K=lambda.I:.c |
4a40 | 6f 6e 76 32 6e 28 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 | onv2n(I,k).....else:.........K=l |
4a60 | 61 6d 62 64 61 20 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 | ambda.I:.conv2(I,k)......cpt.=.0 |
4a80 | 0a 20 20 20 20 65 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 | .....err=1.....while.(err>stopTh |
4aa0 | 72 20 61 6e 64 20 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 | r.and.cpt<numItermax):.........u |
4ac0 | 70 72 65 76 20 3d 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 | prev.=.u.........vprev.=.v...... |
4ae0 | 20 20 20 0a 20 20 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 | ............v.=.np.divide(b,.K(u |
4b00 | 29 29 0a 20 20 20 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 | )).........u.=.np.divide(a,.K(v) |
4b20 | 29 0a 0a 20 20 20 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 | )..........if.(np.any(np.isnan(u |
4b40 | 29 29 20 6f 72 20 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 | )).or.np.any(np.isnan(v))....... |
4b60 | 20 20 20 20 20 20 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 | .......or.np.any(np.isinf(u)).or |
4b80 | 20 6e 70 2e 61 6e 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 | .np.any(np.isinf(v))):.......... |
4ba0 | 20 20 20 23 20 77 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 | ...#.we.have.reached.the.machine |
4bc0 | 20 70 72 65 63 69 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 | .precision.............#.come.ba |
4be0 | 63 6b 20 74 6f 20 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 | ck.to.previous.solution.and.quit |
4c00 | 20 6c 6f 6f 70 0a 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 | .loop.............print('Warning |
4c20 | 3a 20 6e 75 6d 65 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 | :.numerical.errors.at.iteration' |
4c40 | 2c 20 63 70 74 29 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 | ,.cpt).............u.=.uprev.... |
4c60 | 20 20 20 20 20 20 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 | .........v.=.vprev.............b |
4c80 | 72 65 61 6b 0a 20 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 | reak.........if.cpt%10==0:...... |
4ca0 | 20 20 20 20 20 20 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 | .......#.we.can.speed.up.the.pro |
4cc0 | 63 65 73 73 20 62 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 | cess.by.checking.for.the.error.o |
4ce0 | 6e 6c 79 20 61 6c 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 | nly.all.the.10th.iterations..... |
4d00 | 20 20 20 20 20 20 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 | .........err.=.np.sum((u-uprev)* |
4d20 | 2a 32 29 2f 6e 70 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 | *2)/np.sum((u)**2)+np.sum((v-vpr |
4d40 | 65 76 29 2a 2a 32 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 | ev)**2)/np.sum((v)**2).......... |
4d60 | 20 20 20 20 69 66 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 | ....if.log:.................log[ |
4d80 | 27 65 72 72 27 5d 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 | 'err'].append(err).............. |
4da0 | 69 66 20 76 65 72 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 | if.verbose:.................if.c |
4dc0 | 70 74 25 32 30 30 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 | pt%200.==0:..................... |
4de0 | 70 72 69 6e 74 28 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 | print('{:5s}|{:12s}'.format('It. |
4e00 | 27 2c 27 45 72 72 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 | ','Err')+'\n'+'-'*19)........... |
4e20 | 20 20 20 20 20 20 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 | ......print('{:5d}|{:8e}|'.forma |
4e40 | 74 28 63 70 74 2c 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 | t(cpt,err)).........cpt.=.cpt.+1 |
4e60 | 0a 20 20 20 20 69 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 | .....if.log:.........log['u']=u. |
4e80 | 20 20 20 20 20 20 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 | ........log['v']=v.............. |
4ea0 | 69 66 20 6e 62 62 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 | if.nbb:.#return.only.loss....... |
4ec0 | 20 20 20 72 65 73 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 | ...res=np.zeros((nbb)).........f |
4ee0 | 6f 72 20 69 20 69 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 | or.i.in.range(nbb):............. |
4f00 | 72 65 73 5b 69 5d 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 | res[i]=np.sum(u[:,i].reshape((-1 |
4f20 | 2c 31 29 29 2a 4b 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 | ,1))*K*v[:,i].reshape((1,-1))*M) |
4f40 | 0a 20 20 20 20 20 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 | .........if.log:.............ret |
4f60 | 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 20 20 20 20 | urn.res,log.........else:....... |
4f80 | 20 20 20 20 20 20 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 | ......return.res................ |
4fa0 | 20 0a 20 20 20 20 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 | ......else:.#.return.OT.matrix.. |
4fc0 | 20 20 20 20 20 20 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 | .......res=reg*a0*np.sum(a*mylog |
4fe0 | 28 75 2b 28 75 3d 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 | (u+(u==0))+b*mylog(v+(v==0)))... |
5000 | 20 20 20 20 20 20 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 | ......if.log:................... |
5020 | 20 20 20 20 20 20 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 | .......return.res,log.........el |
5040 | 73 65 3a 0a 20 20 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 | se:.............return.res..reg= |
5060 | 31 65 30 0a 72 2c 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 | 1e0.r,log=sinkhorn_conv(I0,I1,re |
5080 | 67 2c 76 65 72 62 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 | g,verbose=True,log=True).a=I0.b= |
50a0 | 49 31 0a 75 3d 6c 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 | I1.u=log['u'].v=log['v'].#%%.bar |
50c0 | 79 63 65 6e 74 65 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 | ycenter.interpolation.PK........ |
50e0 | cb 86 1e 4b fc 6c 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 | ...K.l..F...F...#...auto_example |
5100 | 73 2f 70 6c 6f 74 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 | s/plot_barycenter_1D.py#.-*-.cod |
5120 | 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.-*-.""".============= |
5140 | 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 69 6e | =================.1D.Wasserstein |
5160 | 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 3d 3d | .barycenter.demo.=============== |
5180 | 3d 3d 3d 3d 3d 3d 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 | ===============.."""..#.Author:. |
51a0 | 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 | Remi.Flamary.<remi.flamary@unice |
51c0 | 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 | .fr>.#.#.License:.MIT.License..i |
51e0 | 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 | mport.numpy.as.np.import.matplot |
5200 | 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 23 20 6e 65 63 65 | lib.pylab.as.pl.import.ot.#.nece |
5220 | 73 73 61 72 79 20 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 | ssary.for.3d.plot.even.if.not.us |
5240 | 65 64 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 69 6d 70 | ed.from.mpl_toolkits.mplot3d.imp |
5260 | 6f 72 74 20 41 78 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 | ort.Axes3D..#.noqa.from.matplotl |
5280 | 69 62 2e 63 6f 6c 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 | ib.collections.import.PolyCollec |
52a0 | 74 69 6f 6e 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 | tion...#%%.parameters..n.=.100.. |
52c0 | 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 0a 78 20 3d 20 6e | #.nb.bins..#.bin.positions.x.=.n |
52e0 | 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 36 34 29 0a 0a 23 | p.arange(n,.dtype=np.float64)..# |
5300 | 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 31 20 3d 20 6f 74 2e | .Gaussian.distributions.a1.=.ot. |
5320 | 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 32 30 2c 20 73 | datasets.get_1D_gauss(n,.m=20,.s |
5340 | 3d 35 29 20 20 23 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 | =5)..#.m=.mean,.s=.std.a2.=.ot.d |
5360 | 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 2c 20 73 3d | atasets.get_1D_gauss(n,.m=60,.s= |
5380 | 38 29 0a 0a 23 20 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 | 8)..#.creating.matrix.A.containi |
53a0 | 6e 67 20 61 6c 6c 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 | ng.all.distributions.A.=.np.vsta |
53c0 | 63 6b 28 28 61 31 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 | ck((a1,.a2)).T.n_distributions.= |
53e0 | 20 41 2e 73 68 61 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 | .A.shape[1]..#.loss.matrix.+.nor |
5400 | 6d 61 6c 69 7a 61 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 | malization.M.=.ot.utils.dist0(n) |
5420 | 0a 4d 20 2f 3d 20 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 | .M./=.M.max()..#%%.plot.the.dist |
5440 | 72 69 62 75 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d | ributions..pl.figure(1,.figsize= |
5460 | 28 36 2e 34 2c 20 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 | (6.4,.3)).for.i.in.range(n_distr |
5480 | 69 62 75 74 69 6f 6e 73 29 3a 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c 20 69 | ibutions):.....pl.plot(x,.A[:,.i |
54a0 | 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 70 6c 2e | ]).pl.title('Distributions').pl. |
54c0 | 74 69 67 68 74 5f 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 | tight_layout()..#%%.barycenter.c |
54e0 | 6f 6d 70 75 74 61 74 69 6f 6e 0a 0a 61 6c 70 68 61 20 3d 20 30 2e 32 20 20 23 20 30 3c 3d 61 6c | omputation..alpha.=.0.2..#.0<=al |
5500 | 70 68 61 3c 3d 31 0a 77 65 69 67 68 74 73 20 3d 20 6e 70 2e 61 72 72 61 79 28 5b 31 20 2d 20 61 | pha<=1.weights.=.np.array([1.-.a |
5520 | 6c 70 68 61 2c 20 61 6c 70 68 61 5d 29 0a 0a 23 20 6c 32 62 61 72 79 0a 62 61 72 79 5f 6c 32 20 | lpha,.alpha])..#.l2bary.bary_l2. |
5540 | 3d 20 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 0a 0a 23 20 77 61 73 73 65 72 73 74 65 69 6e 0a | =.A.dot(weights)..#.wasserstein. |
5560 | 72 65 67 20 3d 20 31 65 2d 33 0a 62 61 72 79 5f 77 61 73 73 20 3d 20 6f 74 2e 62 72 65 67 6d 61 | reg.=.1e-3.bary_wass.=.ot.bregma |
5580 | 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 20 4d 2c 20 72 65 67 2c 20 77 65 69 67 68 74 73 29 | n.barycenter(A,.M,.reg,.weights) |
55a0 | 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 75 62 70 6c | ..pl.figure(2).pl.clf().pl.subpl |
55c0 | 6f 74 28 32 2c 20 31 2c 20 31 29 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 5f 64 69 73 | ot(2,.1,.1).for.i.in.range(n_dis |
55e0 | 74 72 69 62 75 74 69 6f 6e 73 29 3a 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 20 41 5b 3a 2c | tributions):.....pl.plot(x,.A[:, |
5600 | 20 69 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a | .i]).pl.title('Distributions').. |
5620 | 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 20 62 | pl.subplot(2,.1,.2).pl.plot(x,.b |
5640 | 61 72 79 5f 6c 32 2c 20 27 72 27 2c 20 6c 61 62 65 6c 3d 27 6c 32 27 29 0a 70 6c 2e 70 6c 6f 74 | ary_l2,.'r',.label='l2').pl.plot |
5660 | 28 78 2c 20 62 61 72 79 5f 77 61 73 73 2c 20 27 67 27 2c 20 6c 61 62 65 6c 3d 27 57 61 73 73 65 | (x,.bary_wass,.'g',.label='Wasse |
5680 | 72 73 74 65 69 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 70 6c 2e 74 69 74 6c 65 28 27 42 | rstein').pl.legend().pl.title('B |
56a0 | 61 72 79 63 65 6e 74 65 72 73 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a | arycenters').pl.tight_layout().. |
56c0 | 23 25 25 20 62 61 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 | #%%.barycenter.interpolation..n_ |
56e0 | 61 6c 70 68 61 20 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 | alpha.=.11.alpha_list.=.np.linsp |
5700 | 61 63 65 28 30 2c 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 | ace(0,.1,.n_alpha)...B_l2.=.np.z |
5720 | 65 72 6f 73 28 28 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 | eros((n,.n_alpha))..B_wass.=.np. |
5740 | 63 6f 70 79 28 42 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 | copy(B_l2)..for.i.in.range(0,.n_ |
5760 | 61 6c 70 68 61 29 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 | alpha):.....alpha.=.alpha_list[i |
5780 | 5d 0a 20 20 20 20 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 | ].....weights.=.np.array([1.-.al |
57a0 | 70 68 61 2c 20 61 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 | pha,.alpha]).....B_l2[:,.i].=.A. |
57c0 | 64 6f 74 28 77 65 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 | dot(weights).....B_wass[:,.i].=. |
57e0 | 6f 74 2e 62 72 65 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 | ot.bregman.barycenter(A,.M,.reg, |
5800 | 20 77 65 69 67 68 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 | .weights)..#%%.plot.interpolatio |
5820 | 6e 0a 0a 70 6c 2e 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 | n..pl.figure(3)..cmap.=.pl.cm.ge |
5840 | 74 5f 63 6d 61 70 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 | t_cmap('viridis').verts.=.[].zs. |
5860 | 3d 20 61 6c 70 68 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 | =.alpha_list.for.i,.z.in.enumera |
5880 | 74 65 28 7a 73 29 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 | te(zs):.....ys.=.B_l2[:,.i]..... |
58a0 | 76 65 72 74 73 2e 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 | verts.append(list(zip(x,.ys))).. |
58c0 | 61 78 20 3d 20 70 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 | ax.=.pl.gcf().gca(projection='3d |
58e0 | 27 29 0a 0a 70 6f 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 | ')..poly.=.PolyCollection(verts, |
5900 | 20 66 61 63 65 63 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 | .facecolors=[cmap(a).for.a.in.al |
5920 | 70 68 61 5f 6c 69 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 | pha_list]).poly.set_alpha(0.7).a |
5940 | 78 2e 61 64 64 5f 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 | x.add_collection3d(poly,.zs=zs,. |
5960 | 7a 64 69 72 3d 27 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 | zdir='y').ax.set_xlabel('x').ax. |
5980 | 73 65 74 5f 78 6c 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 | set_xlim3d(0,.n).ax.set_ylabel(' |
59a0 | 24 5c 5c 61 6c 70 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 | $\\alpha$').ax.set_ylim3d(0,.1). |
59c0 | 61 78 2e 73 65 74 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 | ax.set_zlabel('').ax.set_zlim3d( |
59e0 | 30 2c 20 42 5f 6c 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 | 0,.B_l2.max().*.1.01).pl.title(' |
5a00 | 42 61 72 79 63 65 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 | Barycenter.interpolation.with.l2 |
5a20 | 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 66 69 67 75 72 65 28 | ').pl.tight_layout()..pl.figure( |
5a40 | 34 29 0a 63 6d 61 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 | 4).cmap.=.pl.cm.get_cmap('viridi |
5a60 | 73 27 29 0a 76 65 72 74 73 20 3d 20 5b 5d 0a 7a 73 20 3d 20 61 6c 70 68 61 5f 6c 69 73 74 0a 66 | s').verts.=.[].zs.=.alpha_list.f |
5a80 | 6f 72 20 69 2c 20 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 0a 20 20 20 20 79 73 | or.i,.z.in.enumerate(zs):.....ys |
5aa0 | 20 3d 20 42 5f 77 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 | .=.B_wass[:,.i].....verts.append |
5ac0 | 28 6c 69 73 74 28 7a 69 70 28 78 2c 20 79 73 29 29 29 0a 0a 61 78 20 3d 20 70 6c 2e 67 63 66 28 | (list(zip(x,.ys)))..ax.=.pl.gcf( |
5ae0 | 29 2e 67 63 61 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0a 0a 70 6f 6c 79 20 3d 20 50 | ).gca(projection='3d')..poly.=.P |
5b00 | 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 20 66 61 63 65 63 6f 6c 6f 72 73 3d | olyCollection(verts,.facecolors= |
5b20 | 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 5f 6c 69 73 74 5d 29 0a 70 | [cmap(a).for.a.in.alpha_list]).p |
5b40 | 6f 6c 79 2e 73 65 74 5f 61 6c 70 68 61 28 30 2e 37 29 0a 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 63 | oly.set_alpha(0.7).ax.add_collec |
5b60 | 74 69 6f 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 0a 61 78 | tion3d(poly,.zs=zs,.zdir='y').ax |
5b80 | 2e 73 65 74 5f 78 6c 61 62 65 6c 28 27 78 27 29 0a 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 28 30 | .set_xlabel('x').ax.set_xlim3d(0 |
5ba0 | 2c 20 6e 29 0a 61 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 61 6c 70 68 61 24 27 29 0a | ,.n).ax.set_ylabel('$\\alpha$'). |
5bc0 | 61 78 2e 73 65 74 5f 79 6c 69 6d 33 64 28 30 2c 20 31 29 0a 61 78 2e 73 65 74 5f 7a 6c 61 62 65 | ax.set_ylim3d(0,.1).ax.set_zlabe |
5be0 | 6c 28 27 27 29 0a 61 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 2e 6d 61 78 28 | l('').ax.set_zlim3d(0,.B_l2.max( |
5c00 | 29 20 2a 20 31 2e 30 31 29 0a 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 20 69 | ).*.1.01).pl.title('Barycenter.i |
5c20 | 6e 74 65 72 70 6f 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 | nterpolation.with.Wasserstein'). |
5c40 | 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 | pl.tight_layout()..pl.show().PK. |
5c60 | 04 14 00 00 00 00 00 cb 86 1e 4b b7 26 0b b3 8b 11 00 00 8b 11 00 00 22 00 00 00 61 75 74 6f 5f | ..........K.&.........."...auto_ |
5c80 | 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 23 20 2d | examples/plot_otda_classes.py#.- |
5ca0 | 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.-*-.""".======= |
5cc0 | 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 64 6f 6d 61 69 6e 20 | =================.OT.for.domain. |
5ce0 | 61 64 61 70 74 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | adaptation.===================== |
5d00 | 3d 3d 3d 0a 0a 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 6e 74 72 6f 64 75 63 65 73 20 61 20 64 | ===..This.example.introduces.a.d |
5d20 | 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 69 6e 20 61 20 32 44 20 73 65 74 74 69 6e 67 | omain.adaptation.in.a.2D.setting |
5d40 | 20 61 6e 64 20 74 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 | .and.the.4.OTDA.approaches.curre |
5d60 | 6e 74 6c 79 20 73 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 | ntly.supported.in.POT..."""..#.A |
5d80 | 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 | uthors:.Remi.Flamary.<remi.flama |
5da0 | 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 | ry@unice.fr>.#..........Stanisla |
5dc0 | 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f | s.Chambon.<stan.chambon@gmail.co |
5de0 | 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 | m>.#.#.License:.MIT.License..imp |
5e00 | 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 | ort.matplotlib.pylab.as.pl.impor |
5e20 | 74 20 6f 74 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | t.ot...######################### |
5e40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
5e60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 67 65 6e 65 72 61 74 65 | #####################.#.generate |
5e80 | 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 23 23 | .data.########################## |
5ea0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
5ec0 | 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 75 72 63 65 5f 73 | ####################..n_source_s |
5ee0 | 61 6d 70 6c 65 73 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 | amples.=.150.n_target_samples.=. |
5f00 | 31 35 30 0a 0a 58 73 2c 20 79 73 20 3d 20 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 | 150..Xs,.ys.=.ot.datasets.get_da |
5f20 | 74 61 5f 63 6c 61 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 | ta_classif('3gauss',.n_source_sa |
5f40 | 6d 70 6c 65 73 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 74 5f | mples).Xt,.yt.=.ot.datasets.get_ |
5f60 | 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 20 6e 5f 74 61 72 67 65 74 | data_classif('3gauss2',.n_target |
5f80 | 5f 73 61 6d 70 6c 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 | _samples)...#################### |
5fa0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
5fc0 | 23 23 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 |
5fe0 | 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 |
6000 | 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.####### |
6020 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6040 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6060 | 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. |
6080 | 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 |
60a0 | 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 |
60c0 | 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 |
60e0 | 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 |
6100 | 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 |
6120 | 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 |
6140 | 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 |
6160 | 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 |
6180 | 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= |
61a0 | 79 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 | ys,.Xt=Xt)..#.Sinkhorn.Transport |
61c0 | 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 61 74 69 6f 6e | .with.Group.lasso.regularization |
61e0 | 20 6c 31 6c 32 0a 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 | .l1l2.ot_l1l2.=.ot.da.SinkhornL1 |
6200 | 6c 32 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 32 | l2Transport(reg_e=1e-1,.reg_cl=2 |
6220 | 65 30 2c 20 6d 61 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 | e0,.max_iter=20,................ |
6240 | 20 20 20 20 20 20 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 | .......................verbose=T |
6260 | 72 75 65 29 0a 6f 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 | rue).ot_l1l2.fit(Xs=Xs,.ys=ys,.X |
6280 | 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 61 6d 70 6c 65 | t=Xt)..#.transport.source.sample |
62a0 | 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 70 5f 58 73 5f | s.onto.target.samples.transp_Xs_ |
62c0 | 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 73 29 0a 74 72 | emd.=.ot_emd.transform(Xs=Xs).tr |
62e0 | 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 6f 72 6e 2e 74 | ansp_Xs_sinkhorn.=.ot_sinkhorn.t |
6300 | 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 70 6c 31 20 3d | ransform(Xs=Xs).transp_Xs_lpl1.= |
6320 | 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 74 72 61 6e 73 70 | .ot_lpl1.transform(Xs=Xs).transp |
6340 | 5f 58 73 5f 6c 31 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 | _Xs_l1l2.=.ot_l1l2.transform(Xs= |
6360 | 58 73 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | Xs)...########################## |
6380 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
63a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 67 20 31 20 3a 20 70 | ####################.#.Fig.1.:.p |
63c0 | 6c 6f 74 73 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 73 61 6d 70 6c 65 73 0a 23 | lots.source.and.target.samples.# |
63e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6400 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6420 | 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 31 2c 20 66 69 67 73 | #############..pl.figure(1,.figs |
6440 | 69 7a 65 3d 28 31 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 | ize=(10,.5)).pl.subplot(1,.2,.1) |
6460 | 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],. |
6480 | 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. |
64a0 | 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b | samples').pl.xticks([]).pl.ytick |
64c0 | 73 28 5b 5d 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 | s([]).pl.legend(loc=0).pl.title( |
64e0 | 27 53 6f 75 72 63 65 20 20 73 61 6d 70 6c 65 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 | 'Source..samples')..pl.subplot(1 |
6500 | 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[ |
6520 | 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 27 | :,.1],.c=yt,.marker='o',.label=' |
6540 | 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 70 | Target.samples').pl.xticks([]).p |
6560 | 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c | l.yticks([]).pl.legend(loc=0).pl |
6580 | 2e 74 69 74 6c 65 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 | .title('Target.samples').pl.tigh |
65a0 | 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | t_layout()...################### |
65c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
65e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 46 69 | ###########################.#.Fi |
6600 | 67 20 32 20 3a 20 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 | g.2.:.plot.optimal.couplings.and |
6620 | 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.########### |
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 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
6680 | 23 23 23 0a 0a 70 61 72 61 6d 5f 69 6d 67 20 3d 20 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e | ###..param_img.=.{'interpolation |
66a0 | 27 3a 20 27 6e 65 61 72 65 73 74 27 2c 20 27 63 6d 61 70 27 3a 20 27 73 70 65 63 74 72 61 6c 27 | ':.'nearest',.'cmap':.'spectral' |
66c0 | 7d 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 20 66 69 67 73 69 7a 65 3d 28 31 35 2c 20 38 29 29 | }..pl.figure(2,.figsize=(15,.8)) |
66e0 | 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f | .pl.subplot(2,.4,.1).pl.imshow(o |
6700 | 74 5f 65 6d 64 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c | t_emd.coupling_,.**param_img).pl |
6720 | 2e 78 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 | .xticks([]).pl.yticks([]).pl.tit |
6740 | 6c 65 28 27 4f 70 74 69 6d 61 6c 20 63 6f 75 70 6c 69 6e 67 5c 6e 45 4d 44 54 72 61 6e 73 70 6f | le('Optimal.coupling\nEMDTranspo |
6760 | 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 32 29 0a 70 6c 2e 69 6d 73 | rt')..pl.subplot(2,.4,.2).pl.ims |
6780 | 68 6f 77 28 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 | how(ot_sinkhorn.coupling_,.**par |
67a0 | 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 69 63 6b 73 28 | am_img).pl.xticks([]).pl.yticks( |
67c0 | 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 5c 6e | []).pl.title('Optimal.coupling\n |
67e0 | 53 69 6e 6b 68 6f 72 6e 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 | SinkhornTransport')..pl.subplot( |
6800 | 32 2c 20 34 2c 20 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 6f 74 5f 6c 70 6c 31 2e 63 6f 75 70 6c | 2,.4,.3).pl.imshow(ot_lpl1.coupl |
6820 | 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 73 28 5b 5d 29 | ing_,.**param_img).pl.xticks([]) |
6840 | 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 69 6d 61 6c | .pl.yticks([]).pl.title('Optimal |
6860 | 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 70 6f 72 74 | .coupling\nSinkhornLpl1Transport |
6880 | 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 34 29 0a 70 6c 2e 69 6d 73 68 6f | ')..pl.subplot(2,.4,.4).pl.imsho |
68a0 | 77 28 6f 74 5f 6c 31 6c 32 2e 63 6f 75 70 6c 69 6e 67 5f 2c 20 2a 2a 70 61 72 61 6d 5f 69 6d 67 | w(ot_l1l2.coupling_,.**param_img |
68c0 | 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 |
68e0 | 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 |
6900 | 72 6e 4c 31 6c 32 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | rnL1l2Transport')..pl.subplot(2, |
6920 | 20 34 2c 20 35 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a | .4,.5).pl.scatter(Xt[:,.0],.Xt[: |
6940 | 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 20 | ,.1],.c=yt,.marker='o',......... |
6960 | 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 61 | ...label='Target.samples',.alpha |
6980 | 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 65 6d 64 5b 3a | =0.3).pl.scatter(transp_Xs_emd[: |
69a0 | 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 5b 3a 2c 20 31 5d 2c 20 63 3d 79 73 2c | ,.0],.transp_Xs_emd[:,.1],.c=ys, |
69c0 | 0a 20 20 20 20 20 20 20 20 20 20 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 54 | ............marker='+',.label='T |
69e0 | 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 20 73 3d 33 30 29 0a 70 6c 2e 78 74 69 63 6b 73 28 | ransp.samples',.s=30).pl.xticks( |
6a00 | 5b 5d 29 0a 70 6c 2e 79 74 69 63 6b 73 28 5b 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 72 61 6e | []).pl.yticks([]).pl.title('Tran |
6a20 | 73 70 6f 72 74 65 64 20 73 61 6d 70 6c 65 73 5c 6e 45 6d 64 54 72 61 6e 73 70 6f 72 74 27 29 0a | sported.samples\nEmdTransport'). |
6a40 | 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 22 6c 6f 77 65 72 20 6c 65 66 74 22 29 0a 0a 70 6c 2e | pl.legend(loc="lower.left")..pl. |
6a60 | 73 75 62 70 6c 6f 74 28 32 2c 20 34 2c 20 36 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a | subplot(2,.4,.6).pl.scatter(Xt[: |
6a80 | 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' |
6aa0 | 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 |
6ac0 | 65 73 27 2c 20 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 | es',.alpha=0.3).pl.scatter(trans |
6ae0 | 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 73 5f 73 | p_Xs_sinkhorn[:,.0],.transp_Xs_s |
6b00 | 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 20 20 20 | inkhorn[:,.1],.c=ys,............ |
6b20 | 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 70 6c 65 | marker='+',.label='Transp.sample |
6b40 | 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 2e 79 74 69 63 6b | s',.s=30).pl.xticks([]).pl.ytick |
6b60 | 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 64 20 73 61 6d 70 | s([]).pl.title('Transported.samp |
6b80 | 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 0a 70 6c 2e 73 75 62 | les\nSinkhornTransport')..pl.sub |
6ba0 | 70 6c 6f 74 28 32 2c 20 34 2c 20 37 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 | plot(2,.4,.7).pl.scatter(Xt[:,.0 |
6bc0 | 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 | ],.Xt[:,.1],.c=yt,.marker='o',.. |
6be0 | 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 | ..........label='Target.samples' |
6c00 | 2c 20 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 | ,.alpha=0.3).pl.scatter(transp_X |
6c20 | 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 3a 2c 20 | s_lpl1[:,.0],.transp_Xs_lpl1[:,. |
6c40 | 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 2b 27 2c | 1],.c=ys,............marker='+', |
6c60 | 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 29 0a 70 | .label='Transp.samples',.s=30).p |
6c80 | 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 69 | l.xticks([]).pl.yticks([]).pl.ti |
6ca0 | 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 69 6e 6b 68 6f | tle('Transported.samples\nSinkho |
6cc0 | 72 6e 4c 70 6c 31 54 72 61 6e 73 70 6f 72 74 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c | rnLpl1Transport')..pl.subplot(2, |
6ce0 | 20 34 2c 20 38 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a | .4,.8).pl.scatter(Xt[:,.0],.Xt[: |
6d00 | 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 20 | ,.1],.c=yt,.marker='o',......... |
6d20 | 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 61 | ...label='Target.samples',.alpha |
6d40 | 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 31 6c 32 5b | =0.3).pl.scatter(transp_Xs_l1l2[ |
6d60 | 3a 2c 20 30 5d 2c 20 74 72 61 6e 73 70 5f 58 73 5f 6c 31 6c 32 5b 3a 2c 20 31 5d 2c 20 63 3d 79 | :,.0],.transp_Xs_l1l2[:,.1],.c=y |
6d80 | 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 3d | s,............marker='+',.label= |
6da0 | 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 6b | 'Transp.samples',.s=30).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 54 72 | s([]).pl.yticks([]).pl.title('Tr |
6de0 | 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 31 6c 32 54 | ansported.samples\nSinkhornL1l2T |
6e00 | 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 0a 0a 70 6c | ransport').pl.tight_layout()..pl |
6e20 | 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 34 87 1e 4b 2c a6 a3 c4 4a 11 00 00 4a 11 | .show().PK........4..K,...J...J. |
6e40 | 00 00 30 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 6d 61 | ..0...auto_examples/plot_otda_ma |
6e60 | 70 70 69 6e 67 5f 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 | pping_colors_images.py#.-*-.codi |
6e80 | 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 3d | ng:.utf-8.-*-.""".============== |
6ea0 | 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 | ================================ |
6ec0 | 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 | ================================ |
6ee0 | 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 20 | ======.OT.for.domain.adaptation. |
6f00 | 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 20 5b 36 5d 20 | with.image.color.adaptation.[6]. |
6f20 | 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 0a 3d 3d 3d 3d | with.mapping.estimation.[8].==== |
6f40 | 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 | ================================ |
6f60 | 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 | ================================ |
6f80 | 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 64 61 6e 73 2c | ================..[6].Ferradans, |
6fa0 | 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 47 2e 2c 20 26 | .S.,.Papadakis,.N.,.Peyre,.G.,.& |
6fc0 | 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 61 72 69 7a 65 | .Aujol,.J..F..(2014)..Regularize |
6fe0 | 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 73 70 6f 72 74 | d.....discrete.optimal.transport |
7000 | 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 63 69 65 6e 63 | ..SIAM.Journal.on.Imaging.Scienc |
7020 | 65 73 2c 20 37 28 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 | es,.7(3),.....1853-1882..[8].M.. |
7040 | 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 41 | Perrot,.N..Courty,.R..Flamary,.A |
7060 | 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 66 | ..Habrard,."Mapping.estimation.f |
7080 | 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 72 | or.....discrete.optimal.transpor |
70a0 | 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 6e | t",.Neural.Information.Processin |
70c0 | 67 20 53 79 73 74 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 | g.Systems.(NIPS),.....2016...""" |
70e0 | 0a 0a 23 20 41 75 74 68 6f 72 73 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e | ..#.Authors:.Remi.Flamary.<remi. |
7100 | 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 20 20 20 20 20 20 20 20 20 20 53 74 61 | flamary@unice.fr>.#..........Sta |
7120 | 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 | nislas.Chambon.<stan.chambon@gma |
7140 | 69 6c 2e 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 | il.com>.#.#.License:.MIT.License |
7160 | 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 66 72 6f 6d 20 73 63 69 70 79 20 | ..import.numpy.as.np.from.scipy. |
7180 | 69 6d 70 6f 72 74 20 6e 64 69 6d 61 67 65 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | import.ndimage.import.matplotlib |
71a0 | 2e 70 79 6c 61 62 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 | .pylab.as.pl.import.ot..r.=.np.r |
71c0 | 61 6e 64 6f 6d 2e 52 61 6e 64 6f 6d 53 74 61 74 65 28 34 32 29 0a 0a 0a 64 65 66 20 69 6d 32 6d | andom.RandomState(42)...def.im2m |
71e0 | 61 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 | at(I):....."""Converts.and.image |
7200 | 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 22 | .to.matrix.(one.pixel.per.line)" |
7220 | 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 | "".....return.I.reshape((I.shape |
7240 | 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 29 0a 0a | [0].*.I.shape[1],.I.shape[2])).. |
7260 | 0a 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 20 73 68 61 70 65 29 3a 0a 20 20 20 20 22 22 22 43 6f | .def.mat2im(X,.shape):....."""Co |
7280 | 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 | nverts.back.a.matrix.to.an.image |
72a0 | 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 0a | """.....return.X.reshape(shape). |
72c0 | 0a 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 63 | ..def.minmax(I):.....return.np.c |
72e0 | 6c 69 70 28 49 2c 20 30 2c 20 31 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | lip(I,.0,.1)...################# |
7300 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7320 | 23 23 23 23 23 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 | #############################.#. |
7340 | 47 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 | Generate.data.################## |
7360 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7380 | 23 23 23 23 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 | ############################..#. |
73a0 | 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a 49 31 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 | Loading.images.I1.=.ndimage.imre |
73c0 | 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 | ad('../data/ocean_day.jpg').asty |
73e0 | 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 20 2f 20 32 35 36 0a 49 32 20 3d 20 6e 64 69 6d 61 67 | pe(np.float64)./.256.I2.=.ndimag |
7400 | 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a | e.imread('../data/ocean_sunset.j |
7420 | 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 0a 0a | pg').astype(np.float64)./.256... |
7440 | 58 31 20 3d 20 69 6d 32 6d 61 74 28 49 31 29 0a 58 32 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 0a | X1.=.im2mat(I1).X2.=.im2mat(I2). |
7460 | 0a 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 0a 6e 62 20 3d 20 31 30 30 30 0a 69 64 | .#.training.samples.nb.=.1000.id |
7480 | 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 | x1.=.r.randint(X1.shape[0],.size |
74a0 | 3d 28 6e 62 2c 29 29 0a 69 64 78 32 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 | =(nb,)).idx2.=.r.randint(X2.shap |
74c0 | 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 0a 58 73 20 3d 20 58 31 5b 69 64 78 31 2c | e[0],.size=(nb,))..Xs.=.X1[idx1, |
74e0 | 20 3a 5d 0a 58 74 20 3d 20 58 32 5b 69 64 78 32 2c 20 3a 5d 0a 0a 0a 23 23 23 23 23 23 23 23 23 | .:].Xt.=.X2[idx2,.:]...######### |
7500 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7520 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7540 | 23 23 23 23 23 0a 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 | #####.#.Domain.adaptation.for.pi |
7560 | 78 65 6c 20 64 69 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 | xel.distribution.transfer.###### |
7580 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
75a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
75c0 | 23 23 23 23 23 23 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 | ########..#.EMDTransport.ot_emd. |
75e0 | 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 |
7600 | 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 20 3d 20 | t(Xs=Xs,.Xt=Xt).transp_Xs_emd.=. |
7620 | 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 65 6d | ot_emd.transform(Xs=X1).Image_em |
7640 | 64 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 73 5f 65 6d 64 2c | d.=.minmax(mat2im(transp_Xs_emd, |
7660 | 20 49 31 2e 73 68 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 | .I1.shape))..#.SinkhornTransport |
7680 | 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 72 6e 54 72 61 | .ot_sinkhorn.=.ot.da.SinkhornTra |
76a0 | 6e 73 70 6f 72 74 28 72 65 67 5f 65 3d 31 65 2d 31 29 0a 6f 74 5f 73 69 6e 6b 68 6f 72 6e 2e 66 | nsport(reg_e=1e-1).ot_sinkhorn.f |
76c0 | 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 74 72 61 6e 73 70 5f 58 73 5f 73 69 6e 6b 68 | it(Xs=Xs,.Xt=Xt).transp_Xs_sinkh |
76e0 | 6f 72 6e 20 3d 20 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 | orn.=.ot_emd.transform(Xs=X1).Im |
7700 | 61 67 65 5f 73 69 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 | age_sinkhorn.=.minmax(mat2im(tra |
7720 | 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 0a 6f 74 5f | nsp_Xs_sinkhorn,.I1.shape))..ot_ |
7740 | 6d 61 70 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 | mapping_linear.=.ot.da.MappingTr |
7760 | 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6d 75 3d 31 65 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 | ansport(.....mu=1e0,.eta=1e-8,.b |
7780 | 69 61 73 3d 54 72 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 | ias=True,.max_iter=20,.verbose=T |
77a0 | 72 75 65 29 0a 6f 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 | rue).ot_mapping_linear.fit(Xs=Xs |
77c0 | 2c 20 58 74 3d 58 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 | ,.Xt=Xt)..X1tl.=.ot_mapping_line |
77e0 | 61 72 2e 74 72 61 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 | ar.transform(Xs=X1).Image_mappin |
7800 | 67 5f 6c 69 6e 65 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 | g_linear.=.minmax(mat2im(X1tl,.I |
7820 | 31 2e 73 68 61 70 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 | 1.shape))..ot_mapping_gaussian.= |
7840 | 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6d 75 3d | .ot.da.MappingTransport(.....mu= |
7860 | 31 65 30 2c 20 65 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 | 1e0,.eta=1e-2,.sigma=1,.bias=Fal |
7880 | 73 65 2c 20 6d 61 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 | se,.max_iter=10,.verbose=True).o |
78a0 | 74 5f 6d 61 70 70 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 | t_mapping_gaussian.fit(Xs=Xs,.Xt |
78c0 | 3d 58 74 29 0a 0a 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 | =Xt)..X1tn.=.ot_mapping_gaussian |
78e0 | 2e 74 72 61 6e 73 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 | .transform(Xs=X1)..#.use.the.est |
7900 | 69 6d 61 74 65 64 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 | imated.mapping.Image_mapping_gau |
7920 | 73 73 69 61 6e 20 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 | ssian.=.minmax(mat2im(X1tn,.I1.s |
7940 | 68 61 70 65 29 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | hape))...####################### |
7960 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7980 | 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 6c 6f 74 20 6f | #######################.#.plot.o |
79a0 | 72 69 67 69 6e 61 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 | riginal.images.################# |
79c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
79e0 | 23 23 23 23 23 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 |
7a00 | 6c 2e 66 69 67 75 72 65 28 31 2c 20 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 0a 70 6c | l.figure(1,.figsize=(6.4,.3)).pl |
7a20 | 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a | .subplot(1,.2,.1).pl.imshow(I1). |
7a40 | 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 31 | pl.axis('off').pl.title('Image.1 |
7a60 | 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f | ')..pl.subplot(1,.2,.2).pl.imsho |
7a80 | 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 |
7aa0 | 6d 61 67 65 20 32 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 | mage.2').pl.tight_layout()...### |
7ac0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7ae0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7b00 | 23 23 23 23 23 23 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 | ###########.#.plot.pixel.values. |
7b20 | 64 69 73 74 72 69 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 | distribution.################### |
7b40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7b60 | 23 23 23 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 6c 2e | ###########################..pl. |
7b80 | 66 69 67 75 72 65 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 | figure(2,.figsize=(6.4,.5))..pl. |
7ba0 | 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 58 73 5b 3a | subplot(1,.2,.1).pl.scatter(Xs[: |
7bc0 | 2c 20 30 5d 2c 20 58 73 5b 3a 2c 20 32 5d 2c 20 63 3d 58 73 29 0a 70 6c 2e 61 78 69 73 28 5b 30 | ,.0],.Xs[:,.2],.c=Xs).pl.axis([0 |
7be0 | 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 2e | ,.1,.0,.1]).pl.xlabel('Red').pl. |
7c00 | 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 31 | ylabel('Blue').pl.title('Image.1 |
7c20 | 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 32 29 0a 70 6c 2e 73 63 61 74 74 | ')..pl.subplot(1,.2,.2).pl.scatt |
7c40 | 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 32 5d 2c 20 63 3d 58 74 29 0a 70 6c 2e | er(Xt[:,.0],.Xt[:,.2],.c=Xt).pl. |
7c60 | 61 78 69 73 28 5b 30 2c 20 31 2c 20 30 2c 20 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 | axis([0,.1,.0,.1]).pl.xlabel('Re |
7c80 | 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 27 | d').pl.ylabel('Blue').pl.title(' |
7ca0 | 49 6d 61 67 65 20 32 27 29 0a 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 | Image.2').pl.tight_layout()...## |
7cc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7ce0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7d00 | 23 23 23 23 23 23 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 | ############.#.plot.transformed. |
7d20 | 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 23 23 | images.######################### |
7d40 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
7d60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 70 6c 2e 66 69 67 75 72 65 | #####################..pl.figure |
7d80 | 28 32 2c 20 66 69 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 | (2,.figsize=(10,.5))..pl.subplot |
7da0 | 28 32 2c 20 33 2c 20 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c 2e 61 78 69 73 28 | (2,.3,.1).pl.imshow(I1).pl.axis( |
7dc0 | 27 6f 66 66 27 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 75 62 | 'off').pl.title('Im..1')..pl.sub |
7de0 | 70 6c 6f 74 28 32 2c 20 33 2c 20 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 61 | plot(2,.3,.4).pl.imshow(I2).pl.a |
7e00 | 78 69 73 28 27 6f 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 | xis('off').pl.title('Im..2')..pl |
7e20 | 2e 73 75 62 70 6c 6f 74 28 32 2c 20 33 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 6d 61 67 | .subplot(2,.3,.2).pl.imshow(Imag |
7e40 | 65 5f 65 6d 64 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 | e_emd).pl.axis('off').pl.title(' |
7e60 | 45 6d 64 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 | EmdTransport')..pl.subplot(2,.3, |
7e80 | 20 35 29 0a 70 6c 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 | .5).pl.imshow(Image_sinkhorn).pl |
7ea0 | 2e 61 78 69 73 28 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 | .axis('off').pl.title('SinkhornT |
7ec0 | 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 0a | ransport')..pl.subplot(2,.3,.3). |
7ee0 | 70 6c 2e 69 6d 73 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 | pl.imshow(Image_mapping_linear). |
7f00 | 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4d 61 70 70 69 6e 67 | pl.axis('off').pl.title('Mapping |
7f20 | 54 72 61 6e 73 70 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 | Transport.(linear)')..pl.subplot |
7f40 | 28 32 2c 20 33 2c 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 | (2,.3,.6).pl.imshow(Image_mappin |
7f60 | 67 5f 67 61 75 73 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 | g_gaussian).pl.axis('off').pl.ti |
7f80 | 74 6c 65 28 27 4d 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 | tle('MappingTransport.(gaussian) |
7fa0 | 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(). |
7fc0 | 50 4b 03 04 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 61 75 | PK........j{.I%...........(...au |
7fe0 | 74 6f 5f 65 78 61 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 | to_examples/demo_OT_2D_samplesla |
8000 | 72 67 65 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 | rge.py#.-*-.coding:.utf-8.-*-."" |
8020 | 22 0a 44 65 6d 6f 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 | ".Demo.for.2D.Optimal.transport. |
8040 | 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 69 6f 6e 73 0a | between.empirical.distributions. |
8060 | 0a 40 61 75 74 68 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 | .@author:.rflamary."""..import.n |
8080 | 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 |
80a0 | 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 65 | ab.as.pl.import.ot..#%%.paramete |
80c0 | 72 73 20 61 6e 64 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 | rs.and.data.generation..n=5000.# |
80e0 | 20 6e 62 20 73 61 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 | .nb.samples..mu_s=np.array([0,0] |
8100 | 29 0a 63 6f 76 5f 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 | ).cov_s=np.array([[1,0],[0,1]]). |
8120 | 0a 6d 75 5f 74 3d 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 | .mu_t=np.array([4,4]).cov_t=np.a |
8140 | 72 72 61 79 28 5b 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 | rray([[1,-.8],[-.8,1]])..xs=ot.d |
8160 | 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 28 6e 2c 6d | atasets.get_2D_samples_gauss(n,m |
8180 | 75 5f 73 2c 63 6f 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 | u_s,cov_s).xt=ot.datasets.get_2D |
81a0 | 5f 73 61 6d 70 6c 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 | _samples_gauss(n,mu_t,cov_t)..a, |
81c0 | 62 20 3d 20 6f 74 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 | b.=.ot.unif(n),ot.unif(n).#.unif |
81e0 | 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 0a 23 20 6c | orm.distribution.on.samples..#.l |
8200 | 6f 73 73 20 6d 61 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 | oss.matrix.M=ot.dist(xs,xt).M/=M |
8220 | 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 23 70 6c 2e 66 69 | .max()..#%%.plot.samples..#pl.fi |
8240 | 67 75 72 65 28 31 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 | gure(1).#pl.plot(xs[:,0],xs[:,1] |
8260 | 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 27 29 0a 23 70 | ,'+b',label='Source.samples').#p |
8280 | 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 2c 6c 61 62 65 | l.plot(xt[:,0],xt[:,1],'xr',labe |
82a0 | 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 65 6e 64 28 6c | l='Target.samples').#pl.legend(l |
82c0 | 6f 63 3d 30 29 0a 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 | oc=0).#pl.title('Source.and.trag |
82e0 | 65 74 20 64 69 73 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 | et.distributions').#.#pl.figure( |
8300 | 32 29 0a 23 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 | 2).#pl.imshow(M,interpolation='n |
8320 | 65 61 72 65 73 74 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 | earest').#pl.title('Cost.matrix. |
8340 | 4d 27 29 0a 23 0a 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 | M').#..#%%.EMD..G0=ot.emd(a,b,M) |
8360 | 0a 0a 23 70 6c 2e 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 | ..#pl.figure(3).#pl.imshow(G0,in |
8380 | 74 65 72 70 6f 6c 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 | terpolation='nearest').#pl.title |
83a0 | 28 27 4f 54 20 6d 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 | ('OT.matrix.G0').#.#pl.figure(4) |
83c0 | 0a 23 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, |
83e0 | 78 74 2c 47 30 2c 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 | xt,G0,c=[.5,.5,1]).#pl.plot(xs[: |
8400 | 2c 30 5d 2c 78 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 | ,0],xs[:,1],'+b',label='Source.s |
8420 | 61 6d 70 6c 65 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 | amples').#pl.plot(xt[:,0],xt[:,1 |
8440 | 5d 2c 27 78 72 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 | ],'xr',label='Target.samples').# |
8460 | 70 6c 2e 6c 65 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 | pl.legend(loc=0).#pl.title('OT.m |
8480 | 61 74 72 69 78 20 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 | atrix.with.samples')...#%%.sinkh |
84a0 | 6f 72 6e 0a 0a 23 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 | orn..#.reg.term.lambd=5e-3..Gs=o |
84c0 | 74 2e 73 69 6e 6b 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 | t.sinkhorn(a,b,M,lambd)..#pl.fig |
84e0 | 75 72 65 28 35 29 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 | ure(5).#pl.imshow(Gs,interpolati |
8500 | 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 61 74 72 | on='nearest').#pl.title('OT.matr |
8520 | 69 78 20 73 69 6e 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 | ix.sinkhorn').#.#pl.figure(6).#o |
8540 | 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 78 74 2c | t.plot.plot2D_samples_mat(xs,xt, |
8560 | 47 73 2c 63 6f 6c 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 | Gs,color=[.5,.5,1]).#pl.plot(xs[ |
8580 | 3a 2c 30 5d 2c 78 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 | :,0],xs[:,1],'+b',label='Source. |
85a0 | 73 61 6d 70 6c 65 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 | samples').#pl.plot(xt[:,0],xt[:, |
85c0 | 31 5d 2c 27 78 72 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 | 1],'xr',label='Target.samples'). |
85e0 | 23 70 6c 2e 6c 65 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 | #pl.legend(loc=0).#pl.title('OT. |
8600 | 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 23 | matrix.Sinkhorn.with.samples').# |
8620 | 0a 0a 50 4b 03 04 14 00 00 00 00 00 cb 86 1e 4b bc ce 2e 7c c3 0b 00 00 c3 0b 00 00 21 00 00 00 | ..PK...........K...|........!... |
8640 | 61 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 | auto_examples/plot_OT_L1_vs_L2.p |
8660 | 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d | y#.-*-.coding:.utf-8.-*-.""".=== |
8680 | 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 | ================================ |
86a0 | 3d 3d 3d 3d 3d 3d 3d 0a 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 20 66 6f 72 | =======.2D.Optimal.transport.for |
86c0 | 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 72 69 63 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | .different.metrics.============= |
86e0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 53 | =============================..S |
8700 | 74 6f 6c 65 20 74 68 65 20 66 69 67 75 72 65 20 69 64 65 61 20 66 72 6f 6d 20 46 69 67 2e 20 31 | tole.the.figure.idea.from.Fig..1 |
8720 | 20 61 6e 64 20 32 20 69 6e 0a 68 74 74 70 73 3a 2f 2f 61 72 78 69 76 2e 6f 72 67 2f 70 64 66 2f | .and.2.in.https://arxiv.org/pdf/ |
8740 | 31 37 30 36 2e 30 37 36 35 30 2e 70 64 66 0a 0a 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 | 1706.07650.pdf..."""..#.Author:. |
8760 | 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 | Remi.Flamary.<remi.flamary@unice |
8780 | 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 | .fr>.#.#.License:.MIT.License..i |
87a0 | 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 | mport.numpy.as.np.import.matplot |
87c0 | 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 23 25 25 20 70 | lib.pylab.as.pl.import.ot..#%%.p |
87e0 | 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 66 | arameters.and.data.generation..f |
8800 | 6f 72 20 64 61 74 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 | or.data.in.range(2):......if.dat |
8820 | 61 3a 0a 20 20 20 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 | a:.........n.=.20..#.nb.samples. |
8840 | 20 20 20 20 20 20 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 | ........xs.=.np.zeros((n,.2))... |
8860 | 20 20 20 20 20 20 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 | ......xs[:,.0].=.np.arange(n).+. |
8880 | 31 0a 20 20 20 20 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 | 1.........xs[:,.1].=.(np.arange( |
88a0 | 6e 29 20 2b 20 31 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 | n).+.1).*.-0.001..#.to.make.it.s |
88c0 | 74 72 69 63 74 6c 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 | trictly.convex.............xt.=. |
88e0 | 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 78 74 5b 3a 2c 20 31 | np.zeros((n,.2)).........xt[:,.1 |
8900 | 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 65 6c 73 65 3a 0a 0a | ].=.np.arange(n).+.1.....else:.. |
8920 | 20 20 20 20 20 20 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 | ........n.=.50..#.nb.samples.... |
8940 | 20 20 20 20 20 78 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 | .....xtot.=.np.zeros((n.+.1,.2)) |
8960 | 0a 20 20 20 20 20 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 | .........xtot[:,.0].=.np.cos(... |
8980 | 20 20 20 20 20 20 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 | ..........(np.arange(n.+.1).+.1. |
89a0 | 30 29 20 2a 20 30 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 29 0a | 0).*.0.9./.(n.+.2).*.2.*.np.pi). |
89c0 | 20 20 20 20 20 20 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 | ........xtot[:,.1].=.np.sin(.... |
89e0 | 20 20 20 20 20 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 | .........(np.arange(n.+.1).+.1.0 |
8a00 | 29 20 2a 20 30 2e 39 20 2f 20 28 6e 20 2b 20 32 29 20 2a 20 32 20 2a 20 6e 70 2e 70 69 29 0a 0a | ).*.0.9./.(n.+.2).*.2.*.np.pi).. |
8a20 | 20 20 20 20 20 20 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 | ........xs.=.xtot[:n,.:]........ |
8a40 | 20 78 74 20 3d 20 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 | .xt.=.xtot[1:,.:]......a,.b.=.ot |
8a60 | 2e 75 6e 69 66 28 6e 29 2c 20 6f 74 2e 75 6e 69 66 28 6e 29 20 20 23 20 75 6e 69 66 6f 72 6d 20 | .unif(n),.ot.unif(n)..#.uniform. |
8a80 | 64 69 73 74 72 69 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 | distribution.on.samples......#.l |
8aa0 | 6f 73 73 20 6d 61 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 | oss.matrix.....M1.=.ot.dist(xs,. |
8ac0 | 78 74 2c 20 6d 65 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 | xt,.metric='euclidean').....M1./ |
8ae0 | 3d 20 4d 31 2e 6d 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 | =.M1.max()......#.loss.matrix... |
8b00 | 20 20 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 73 | ..M2.=.ot.dist(xs,.xt,.metric='s |
8b20 | 71 65 75 63 6c 69 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 | qeuclidean').....M2./=.M2.max(). |
8b40 | 0a 20 20 20 20 23 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 | .....#.loss.matrix.....Mp.=.np.s |
8b60 | 71 72 74 28 6f 74 2e 64 69 73 74 28 78 73 2c 20 78 74 2c 20 6d 65 74 72 69 63 3d 27 65 75 63 6c | qrt(ot.dist(xs,.xt,.metric='eucl |
8b80 | 69 64 65 61 6e 27 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 | idean')).....Mp./=.Mp.max()..... |
8ba0 | 20 23 25 25 20 70 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 | .#%%.plot.samples......pl.figure |
8bc0 | 28 31 20 2b 20 33 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 | (1.+.3.*.data,.figsize=(7,.3)).. |
8be0 | 20 20 20 70 6c 2e 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 | ...pl.clf().....pl.plot(xs[:,.0] |
8c00 | 2c 20 78 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 | ,.xs[:,.1],.'+b',.label='Source. |
8c20 | 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 3a 2c 20 30 5d 2c 20 | samples').....pl.plot(xt[:,.0],. |
8c40 | 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 74 20 73 61 | xt[:,.1],.'xr',.label='Target.sa |
8c60 | 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 6c 27 29 0a 20 20 20 | mples').....pl.axis('equal').... |
8c80 | 20 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 |
8ca0 | 74 72 69 62 75 74 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 | tributions')......pl.figure(2.+. |
8cc0 | 33 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 0a 20 20 20 20 70 | 3.*.data,.figsize=(7,.3))......p |
8ce0 | 6c 2e 73 75 62 70 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 | l.subplot(1,.3,.1).....pl.imshow |
8d00 | 28 4d 31 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 20 20 | (M1,.interpolation='nearest')... |
8d20 | 20 20 70 6c 2e 74 69 74 6c 65 28 27 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a 0a 20 20 | ..pl.title('Euclidean.cost').... |
8d40 | 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 70 6c 2e 69 6d 73 | ..pl.subplot(1,.3,.2).....pl.ims |
8d60 | 68 6f 77 28 4d 32 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 | how(M2,.interpolation='nearest') |
8d80 | 0a 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e | .....pl.title('Squared.Euclidean |
8da0 | 20 63 6f 73 74 27 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 | .cost')......pl.subplot(1,.3,.3) |
8dc0 | 0a 20 20 20 20 70 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 | .....pl.imshow(Mp,.interpolation |
8de0 | 3d 27 6e 65 61 72 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 | ='nearest').....pl.title('Sqrt.E |
8e00 | 75 63 6c 69 64 65 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 | uclidean.cost').....pl.tight_lay |
8e20 | 6f 75 74 28 29 0a 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 | out()......#%%.EMD.....G1.=.ot.e |
8e40 | 6d 64 28 61 2c 20 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 | md(a,.b,.M1).....G2.=.ot.emd(a,. |
8e60 | 62 2c 20 4d 32 29 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 | b,.M2).....Gp.=.ot.emd(a,.b,.Mp) |
8e80 | 0a 0a 20 20 20 20 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 | ......pl.figure(3.+.3.*.data,.fi |
8ea0 | 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 6c 6f 74 28 31 2c | gsize=(7,.3))......pl.subplot(1, |
8ec0 | 20 33 2c 20 31 29 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 | .3,.1).....ot.plot.plot2D_sample |
8ee0 | 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 31 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 | s_mat(xs,.xt,.G1,.c=[.5,..5,.1]) |
8f00 | 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 2c 20 31 5d 2c | .....pl.plot(xs[:,.0],.xs[:,.1], |
8f20 | 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 20 | .'+b',.label='Source.samples').. |
8f40 | 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 31 5d 2c 20 27 | ...pl.plot(xt[:,.0],.xt[:,.1],.' |
8f60 | 78 72 27 2c 20 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 | xr',.label='Target.samples').... |
8f80 | 20 70 6c 2e 61 78 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 | .pl.axis('equal').....#.pl.legen |
8fa0 | 64 28 6c 6f 63 3d 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 | d(loc=0).....pl.title('OT.Euclid |
8fc0 | 65 61 6e 27 29 0a 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 | ean')......pl.subplot(1,.3,.2).. |
8fe0 | 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 78 73 | ...ot.plot.plot2D_samples_mat(xs |
9000 | 2c 20 78 74 2c 20 47 32 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 20 20 20 20 70 6c 2e | ,.xt,.G2,.c=[.5,..5,.1]).....pl. |
9020 | 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 20 6c | plot(xs[:,.0],.xs[:,.1],.'+b',.l |
9040 | 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 70 6c | abel='Source.samples').....pl.pl |
9060 | 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 61 62 | ot(xt[:,.0],.xt[:,.1],.'xr',.lab |
9080 | 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 69 73 | el='Target.samples').....pl.axis |
90a0 | 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 30 29 | ('equal').....#.pl.legend(loc=0) |
90c0 | 0a 20 20 20 20 70 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 | .....pl.title('OT.squared.Euclid |
90e0 | 65 61 6e 27 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 | ean')......pl.subplot(1,.3,.3).. |
9100 | 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 78 73 | ...ot.plot.plot2D_samples_mat(xs |
9120 | 2c 20 78 74 2c 20 47 70 2c 20 63 3d 5b 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 20 20 20 20 70 6c 2e | ,.xt,.Gp,.c=[.5,..5,.1]).....pl. |
9140 | 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 20 6c | plot(xs[:,.0],.xs[:,.1],.'+b',.l |
9160 | 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 70 6c | abel='Source.samples').....pl.pl |
9180 | 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 61 62 | ot(xt[:,.0],.xt[:,.1],.'xr',.lab |
91a0 | 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 69 73 | el='Target.samples').....pl.axis |
91c0 | 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 30 29 | ('equal').....#.pl.legend(loc=0) |
91e0 | 0a 20 20 20 20 70 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 | .....pl.title('OT.sqrt.Euclidean |
9200 | 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 0a 70 6c 2e 73 68 6f | ').....pl.tight_layout()..pl.sho |
9220 | 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 cb 86 1e 4b 7b 03 bf 32 03 07 00 00 03 07 00 00 23 00 | w().PK...........K{..2........#. |
9240 | 00 00 61 75 74 6f 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 | ..auto_examples/plot_OT_2D_sampl |
9260 | 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 | es.py#.-*-.coding:.utf-8.-*-.""" |
9280 | 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 | .=============================== |
92a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 32 44 20 4f 70 74 69 6d 61 6c | =====================.2D.Optimal |
92c0 | 20 74 72 61 6e 73 70 6f 72 74 20 62 65 74 77 65 65 6e 20 65 6d 70 69 72 69 63 61 6c 20 64 69 73 | .transport.between.empirical.dis |
92e0 | 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | tributions.===================== |
9300 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a | ===============================. |
9320 | 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 3a 20 52 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 | ."""..#.Author:.Remi.Flamary.<re |
9340 | 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 | mi.flamary@unice.fr>.#.#.License |
9360 | 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 6e | :.MIT.License..import.numpy.as.n |
9380 | 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 0a | p.import.matplotlib.pylab.as.pl. |
93a0 | 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 20 64 61 | import.ot..#%%.parameters.and.da |
93c0 | 74 61 20 67 65 6e 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 | ta.generation..n.=.50..#.nb.samp |
93e0 | 6c 65 73 0a 0a 6d 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 | les..mu_s.=.np.array([0,.0]).cov |
9400 | 5f 73 20 3d 20 6e 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 | _s.=.np.array([[1,.0],.[0,.1]]). |
9420 | 0a 6d 75 5f 74 20 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 | .mu_t.=.np.array([4,.4]).cov_t.= |
9440 | 20 6e 70 2e 61 72 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 | .np.array([[1,.-.8],.[-.8,.1]]). |
9460 | 0a 78 73 20 3d 20 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 | .xs.=.ot.datasets.get_2D_samples |
9480 | 5f 67 61 75 73 73 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 | _gauss(n,.mu_s,.cov_s).xt.=.ot.d |
94a0 | 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 28 6e 2c 20 | atasets.get_2D_samples_gauss(n,. |
94c0 | 6d 75 5f 74 2c 20 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 | mu_t,.cov_t)..a,.b.=.np.ones((n, |
94e0 | 29 29 20 2f 20 6e 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 | ))./.n,.np.ones((n,))./.n..#.uni |
9500 | 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 0a 23 20 | form.distribution.on.samples..#. |
9520 | 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 73 2c 20 78 74 29 0a | loss.matrix.M.=.ot.dist(xs,.xt). |
9540 | 4d 20 2f 3d 20 4d 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 | M./=.M.max()..#%%.plot.samples.. |
9560 | 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 | pl.figure(1).pl.plot(xs[:,.0],.x |
9580 | 73 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d | s[:,.1],.'+b',.label='Source.sam |
95a0 | 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 | ples').pl.plot(xt[:,.0],.xt[:,.1 |
95c0 | 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 29 | ],.'xr',.label='Target.samples') |
95e0 | 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 | .pl.legend(loc=0).pl.title('Sour |
9600 | 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 | ce.and.target.distributions')..p |
9620 | 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 20 69 6e 74 65 72 70 6f | l.figure(2).pl.imshow(M,.interpo |
9640 | 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 43 6f 73 74 | lation='nearest').pl.title('Cost |
9660 | 20 6d 61 74 72 69 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 | .matrix.M')...#%%.EMD..G0.=.ot.e |
9680 | 6d 64 28 61 2c 20 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 | md(a,.b,.M)..pl.figure(3).pl.ims |
96a0 | 68 6f 77 28 47 30 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 | how(G0,.interpolation='nearest') |
96c0 | 0a 70 6c 2e 74 69 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 | .pl.title('OT.matrix.G0')..pl.fi |
96e0 | 67 75 72 65 28 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 | gure(4).ot.plot.plot2D_samples_m |
9700 | 61 74 28 78 73 2c 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 | at(xs,.xt,.G0,.c=[.5,..5,.1]).pl |
9720 | 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 20 | .plot(xs[:,.0],.xs[:,.1],.'+b',. |
9740 | 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 | label='Source.samples').pl.plot( |
9760 | 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d 2c 20 27 78 72 27 2c 20 6c 61 62 65 6c 3d | xt[:,.0],.xt[:,.1],.'xr',.label= |
9780 | 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 3d | 'Target.samples').pl.legend(loc= |
97a0 | 30 29 0a 70 6c 2e 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 | 0).pl.title('OT.matrix.with.samp |
97c0 | 6c 65 73 27 29 0a 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 | les')...#%%.sinkhorn..#.reg.term |
97e0 | 0a 6c 61 6d 62 64 20 3d 20 31 65 2d 33 0a 0a 47 73 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 | .lambd.=.1e-3..Gs.=.ot.sinkhorn( |
9800 | 61 2c 20 62 2c 20 4d 2c 20 6c 61 6d 62 64 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 70 6c | a,.b,.M,.lambd)..pl.figure(5).pl |
9820 | 2e 69 6d 73 68 6f 77 28 47 73 2c 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 | .imshow(Gs,.interpolation='neare |
9840 | 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 73 69 6e 6b 68 6f 72 | st').pl.title('OT.matrix.sinkhor |
9860 | 6e 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 36 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 | n')..pl.figure(6).ot.plot.plot2D |
9880 | 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 20 78 74 2c 20 47 73 2c 20 63 6f 6c 6f 72 3d 5b | _samples_mat(xs,.xt,.Gs,.color=[ |
98a0 | 2e 35 2c 20 2e 35 2c 20 31 5d 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 20 30 5d 2c 20 78 73 | .5,..5,.1]).pl.plot(xs[:,.0],.xs |
98c0 | 5b 3a 2c 20 31 5d 2c 20 27 2b 62 27 2c 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 | [:,.1],.'+b',.label='Source.samp |
98e0 | 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 20 30 5d 2c 20 78 74 5b 3a 2c 20 31 5d | les').pl.plot(xt[:,.0],.xt[:,.1] |
9900 | 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 29 0a | ,.'xr',.label='Target.samples'). |
9920 | 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 | pl.legend(loc=0).pl.title('OT.ma |
9940 | 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 0a 70 6c | trix.Sinkhorn.with.samples')..pl |
9960 | 2e 73 68 6f 77 28 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 | .show().PK...........J..B1...... |
9980 | 00 00 1d 00 00 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 32 44 | ......auto_examples/plot_OTDA_2D |
99a0 | 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d | .py#.-*-.coding:.utf-8.-*-.""".= |
99c0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 | =============================.OT |
99e0 | 20 66 6f 72 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 3d 3d 3d | .for.empirical.distributions.=== |
9a00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 | ===========================..""" |
9a20 | 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 | ..import.numpy.as.np.import.matp |
9a40 | 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 0a 0a | lotlib.pylab.as.pl.import.ot.... |
9a60 | 23 25 25 20 70 61 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 | #%%.parameters..n=150.#.nb.bins. |
9a80 | 0a 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 | .xs,ys=ot.datasets.get_data_clas |
9aa0 | 73 69 66 28 27 33 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 | sif('3gauss',n).xt,yt=ot.dataset |
9ac0 | 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 6e 29 0a | s.get_data_classif('3gauss2',n). |
9ae0 | 0a 61 2c 62 20 3d 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 | .a,b.=.ot.unif(n),ot.unif(n).#.l |
9b00 | 6f 73 73 20 6d 61 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 | oss.matrix.M=ot.dist(xs,xt).#M/= |
9b20 | 4d 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 | M.max()..#%%.plot.samples..pl.fi |
9b40 | 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 29 0a 70 6c 2e 73 63 | gure(1)..pl.subplot(2,2,1).pl.sc |
9b60 | 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 61 72 6b 65 | atter(xs[:,0],xs[:,1],c=ys,marke |
9b80 | 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 29 0a 70 6c | r='+',label='Source.samples').pl |
9ba0 | 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 | .legend(loc=0).pl.title('Source. |
9bc0 | 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 6c 6f 74 28 32 2c 32 | .distributions')..pl.subplot(2,2 |
9be0 | 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 |
9c00 | 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 |
9c20 | 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 | ples').pl.legend(loc=0).pl.title |
9c40 | 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 0a 0a 70 6c 2e 66 69 | ('target..distributions')..pl.fi |
9c60 | 67 75 72 65 28 32 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 | gure(2).pl.imshow(M,interpolatio |
9c80 | 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 | n='nearest').pl.title('Cost.matr |
9ca0 | 69 78 20 4d 27 29 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 | ix.M')...#%%.OT.estimation..#.EM |
9cc0 | 44 0a 47 30 3d 6f 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 | D.G0=ot.emd(a,b,M)..#.sinkhorn.l |
9ce0 | 61 6d 62 64 3d 31 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 | ambd=1e-1.Gs=ot.sinkhorn(a,b,M,l |
9d00 | 61 6d 62 64 29 0a 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 | ambd)...#.Group.lasso.regulariza |
9d20 | 74 69 6f 6e 0a 72 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 | tion.reg=1e-1.eta=1e0.Gg=ot.da.s |
9d40 | 69 6e 6b 68 6f 72 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 | inkhorn_lpl1_mm(a,ys.astype(np.i |
9d60 | 6e 74 29 2c 62 2c 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 | nt),b,M,reg,eta)...#%%.visu.matr |
9d80 | 69 63 65 73 0a 0a 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 | ices..pl.figure(3)..pl.subplot(2 |
9da0 | 2c 33 2c 31 29 0a 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 | ,3,1).pl.imshow(G0,interpolation |
9dc0 | 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 78 20 | ='nearest').pl.title('OT.matrix. |
9de0 | 27 29 0a 0a 70 6c 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 | ')..pl.subplot(2,3,2).pl.imshow( |
9e00 | 47 73 2c 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 | Gs,interpolation='nearest').pl.t |
9e20 | 69 74 6c 65 28 27 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 | itle('OT.matrix.Sinkhorn')..pl.s |
9e40 | 75 62 70 6c 6f 74 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 | ubplot(2,3,3).pl.imshow(Gg,inter |
9e60 | 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 4f 54 | polation='nearest').pl.title('OT |
9e80 | 20 6d 61 74 72 69 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 | .matrix.Group.lasso')..pl.subplo |
9ea0 | 74 28 32 2c 33 2c 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 | t(2,3,4).ot.plot.plot2D_samples_ |
9ec0 | 6d 61 74 28 78 73 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 | mat(xs,xt,G0,c=[.5,.5,1]).pl.sca |
9ee0 | 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 61 72 6b 65 72 | tter(xs[:,0],xs[:,1],c=ys,marker |
9f00 | 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 29 0a 70 6c 2e | ='+',label='Source.samples').pl. |
9f20 | 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 72 | scatter(xt[:,0],xt[:,1],c=yt,mar |
9f40 | 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 0a | ker='o',label='Target.samples'). |
9f60 | 0a 0a 70 6c 2e 73 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 | ..pl.subplot(2,3,5).ot.plot.plot |
9f80 | 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 3d 5b 2e 35 2c 2e 35 | 2D_samples_mat(xs,xt,Gs,c=[.5,.5 |
9fa0 | 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 2c 31 5d 2c | ,1]).pl.scatter(xs[:,0],xs[:,1], |
9fc0 | 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 65 20 73 61 | c=ys,marker='+',label='Source.sa |
9fe0 | 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 74 5b 3a 2c | mples').pl.scatter(xt[:,0],xt[:, |
a000 | 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 67 65 74 | 1],c=yt,marker='o',label='Target |
a020 | 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 33 2c 36 29 0a 6f 74 | .samples')..pl.subplot(2,3,6).ot |
a040 | 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 78 74 2c 47 | .plot.plot2D_samples_mat(xs,xt,G |
a060 | 67 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 73 5b 3a 2c 30 | g,c=[.5,.5,1]).pl.scatter(xs[:,0 |
a080 | 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 61 62 65 6c 3d | ],xs[:,1],c=ys,marker='+',label= |
a0a0 | 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 72 28 78 74 5b | 'Source.samples').pl.scatter(xt[ |
a0c0 | 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 61 62 | :,0],xt[:,1],c=yt,marker='o',lab |
a0e0 | 65 6c 3d 27 54 61 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 | el='Target.samples')..#%%.sample |
a100 | 20 69 6e 74 65 72 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 | .interpolation..xst0=n*G0.dot(xt |
a120 | 29 0a 78 73 74 73 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 | ).xsts=n*Gs.dot(xt).xstg=n*Gg.do |
a140 | 74 28 78 74 29 0a 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 | t(xt)..pl.figure(4).pl.subplot(2 |
a160 | 2c 33 2c 31 29 0a 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 | ,3,1)...pl.scatter(xt[:,0],xt[:, |
a180 | 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 67 65 74 | 1],c=yt,marker='o',label='Target |
a1a0 | 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 74 74 65 72 28 | .samples',alpha=0.5).pl.scatter( |
a1c0 | 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 72 3d | xst0[:,0],xst0[:,1],c=ys,marker= |
a1e0 | 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 73 3d 33 30 29 | '+',label='Transp.samples',s=30) |
a200 | 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 27 29 0a 70 6c 2e 6c | .pl.title('Interp.samples').pl.l |
a220 | 65 67 65 6e 64 28 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 | egend(loc=0)..pl.subplot(2,3,2). |
a240 | 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 |
a260 | 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 |
a280 | 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 73 5b 3a | es',alpha=0.5).pl.scatter(xsts[: |
a2a0 | 2c 30 5d 2c 78 73 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 | ,0],xsts[:,1],c=ys,marker='+',la |
a2c0 | 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 |
a2e0 | 74 6c 65 28 27 49 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 | tle('Interp.samples.Sinkhorn').. |
a300 | 70 6c 2e 73 75 62 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 | pl.subplot(2,3,3)..pl.scatter(xt |
a320 | 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 61 | [:,0],xt[:,1],c=yt,marker='o',la |
a340 | 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 35 29 0a | bel='Target.samples',alpha=0.5). |
a360 | 70 6c 2e 73 63 61 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 | pl.scatter(xstg[:,0],xstg[:,1],c |
a380 | 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 6d | =ys,marker='+',label='Transp.sam |
a3a0 | 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 6d | ples',s=30).pl.title('Interp.sam |
a3c0 | 70 6c 65 73 20 47 72 6f 75 70 6c 61 73 73 6f 27 29 50 4b 03 04 14 00 00 00 00 00 34 87 1e 4b d9 | ples.Grouplasso')PK........4..K. |
a3e0 | cf 46 53 c4 10 00 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 | .FS........"...auto_examples/plo |
a400 | 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 | t_otda_mapping.py#.-*-.coding:.u |
a420 | 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.-*-.""".=================== |
a440 | 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. |
a460 | 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 | mapping.estimation.for.domain.ad |
a480 | 61 70 74 61 74 69 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 | aptation.[8].=================== |
a4a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 54 68 | ============================..Th |
a4c0 | 69 73 20 65 78 61 6d 70 6c 65 20 70 72 65 73 65 6e 74 73 20 68 6f 77 20 74 6f 20 75 73 65 20 4d | is.example.presents.how.to.use.M |
a4e0 | 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 74 6f 20 65 73 74 69 6d 61 74 65 20 61 74 20 74 | appingTransport.to.estimate.at.t |
a500 | 68 65 20 73 61 6d 65 0a 74 69 6d 65 20 62 6f 74 68 20 74 68 65 20 63 6f 75 70 6c 69 6e 67 20 74 | he.same.time.both.the.coupling.t |
a520 | 72 61 6e 73 70 6f 72 74 20 61 6e 64 20 61 70 70 72 6f 78 69 6d 61 74 65 20 74 68 65 20 74 72 61 | ransport.and.approximate.the.tra |
a540 | 6e 73 70 6f 72 74 20 6d 61 70 20 77 69 74 68 20 65 69 74 68 65 72 0a 61 20 6c 69 6e 65 61 72 20 | nsport.map.with.either.a.linear. |
a560 | 6f 72 20 61 20 6b 65 72 6e 65 6c 69 7a 65 64 20 6d 61 70 70 69 6e 67 20 61 73 20 69 6e 74 72 6f | or.a.kernelized.mapping.as.intro |
a580 | 64 75 63 65 64 20 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 | duced.in.[8]..[8].M..Perrot,.N.. |
a5a0 | 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 61 72 64 2c 0a | Courty,.R..Flamary,.A..Habrard,. |
a5c0 | 20 20 20 20 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 69 73 63 | ...."Mapping.estimation.for.disc |
a5e0 | 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 0a 20 20 20 20 4e 65 75 | rete.optimal.transport",.....Neu |
a600 | 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 65 | ral.Information.Processing.Syste |
a620 | 6d 73 20 28 4e 49 50 53 29 2c 20 32 30 31 36 2e 0a 22 22 22 0a 0a 23 20 41 75 74 68 6f 72 73 3a | ms.(NIPS),.2016.."""..#.Authors: |
a640 | 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 63 | .Remi.Flamary.<remi.flamary@unic |
a660 | 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 62 | e.fr>.#..........Stanislas.Chamb |
a680 | 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 20 | on.<stan.chambon@gmail.com>.#.#. |
a6a0 | 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 75 6d | License:.MIT.License..import.num |
a6c0 | 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 61 62 | py.as.np.import.matplotlib.pylab |
a6e0 | 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 | .as.pl.import.ot...############# |
a700 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a720 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a740 | 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 23 23 23 23 23 23 | #.#.generate.data.############## |
a760 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a780 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a7a0 | 0a 0a 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 20 3d 20 31 30 30 0a 6e 5f 74 61 72 67 65 | ..n_source_samples.=.100.n_targe |
a7c0 | 74 5f 73 61 6d 70 6c 65 73 20 3d 20 31 30 30 0a 74 68 65 74 61 20 3d 20 32 20 2a 20 6e 70 2e 70 | t_samples.=.100.theta.=.2.*.np.p |
a7e0 | 69 20 2f 20 32 30 0a 6e 6f 69 73 65 5f 6c 65 76 65 6c 20 3d 20 30 2e 31 0a 0a 58 73 2c 20 79 73 | i./.20.noise_level.=.0.1..Xs,.ys |
a800 | 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 73 73 69 66 28 | .=.ot.datasets.get_data_classif( |
a820 | 0a 20 20 20 20 27 67 61 75 73 73 72 6f 74 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 | .....'gaussrot',.n_source_sample |
a840 | 73 2c 20 6e 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 0a 58 73 5f 6e 65 77 2c 20 5f 20 3d 20 6f | s,.nz=noise_level).Xs_new,._.=.o |
a860 | 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 0a 20 20 20 | t.datasets.get_data_classif(.... |
a880 | 20 27 67 61 75 73 73 72 6f 74 27 2c 20 6e 5f 73 6f 75 72 63 65 5f 73 61 6d 70 6c 65 73 2c 20 6e | .'gaussrot',.n_source_samples,.n |
a8a0 | 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 0a 58 74 2c 20 79 74 20 3d 20 6f 74 2e 64 61 74 61 73 | z=noise_level).Xt,.yt.=.ot.datas |
a8c0 | 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 73 | ets.get_data_classif(.....'gauss |
a8e0 | 72 6f 74 27 2c 20 6e 5f 74 61 72 67 65 74 5f 73 61 6d 70 6c 65 73 2c 20 74 68 65 74 61 3d 74 68 | rot',.n_target_samples,.theta=th |
a900 | 65 74 61 2c 20 6e 7a 3d 6e 6f 69 73 65 5f 6c 65 76 65 6c 29 0a 0a 23 20 6f 6e 65 20 6f 66 20 74 | eta,.nz=noise_level)..#.one.of.t |
a920 | 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 76 61 72 69 61 | he.target.mode.changes.its.varia |
a940 | 6e 63 65 20 28 6e 6f 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 29 0a 58 74 5b 79 74 20 3d 3d | nce.(no.linear.mapping).Xt[yt.== |
a960 | 20 32 5d 20 2a 3d 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 | .2].*=.3.Xt.=.Xt.+.4...######### |
a980 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a9a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
a9c0 | 23 23 23 23 23 0a 23 20 49 6e 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e | #####.#.Instantiate.the.differen |
a9e0 | 74 20 74 72 61 6e 73 70 6f 72 74 20 61 6c 67 6f 72 69 74 68 6d 73 20 61 6e 64 20 66 69 74 20 74 | t.transport.algorithms.and.fit.t |
aa00 | 68 65 6d 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 | hem.############################ |
aa20 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
aa40 | 23 23 23 23 23 23 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 | ##################..#.MappingTra |
aa60 | 6e 73 70 6f 72 74 20 77 69 74 68 20 6c 69 6e 65 61 72 20 6b 65 72 6e 65 6c 0a 6f 74 5f 6d 61 70 | nsport.with.linear.kernel.ot_map |
aa80 | 70 69 6e 67 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 2e 64 61 2e 4d 61 70 70 69 6e 67 54 72 61 6e 73 | ping_linear.=.ot.da.MappingTrans |
aaa0 | 70 6f 72 74 28 0a 20 20 20 20 6b 65 72 6e 65 6c 3d 22 6c 69 6e 65 61 72 22 2c 20 6d 75 3d 31 65 | port(.....kernel="linear",.mu=1e |
aac0 | 30 2c 20 65 74 61 3d 31 65 2d 38 2c 20 62 69 61 73 3d 54 72 75 65 2c 0a 20 20 20 20 6d 61 78 5f | 0,.eta=1e-8,.bias=True,.....max_ |
aae0 | 69 74 65 72 3d 32 30 2c 20 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 6f 74 5f 6d 61 70 70 69 | iter=20,.verbose=True)..ot_mappi |
ab00 | 6e 67 5f 6c 69 6e 65 61 72 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 66 | ng_linear.fit(Xs=Xs,.Xt=Xt)..#.f |
ab20 | 6f 72 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e | or.original.source.samples,.tran |
ab40 | 73 66 6f 72 6d 20 61 70 70 6c 69 65 73 20 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e | sform.applies.barycentric.mappin |
ab60 | 67 0a 74 72 61 6e 73 70 5f 58 73 5f 6c 69 6e 65 61 72 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f | g.transp_Xs_linear.=.ot_mapping_ |
ab80 | 6c 69 6e 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 23 20 66 6f 72 20 6f | linear.transform(Xs=Xs)..#.for.o |
aba0 | 75 74 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 | ut.of.source.samples,.transform. |
abc0 | 61 70 70 6c 69 65 73 20 74 68 65 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 0a 74 72 61 6e 73 | applies.the.linear.mapping.trans |
abe0 | 70 5f 58 73 5f 6c 69 6e 65 61 72 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 6c 69 6e | p_Xs_linear_new.=.ot_mapping_lin |
ac00 | 65 61 72 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 0a 0a 0a 23 20 4d 61 70 | ear.transform(Xs=Xs_new)...#.Map |
ac20 | 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 20 77 69 74 68 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e | pingTransport.with.gaussian.kern |
ac40 | 65 6c 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 2e 64 61 2e 4d | el.ot_mapping_gaussian.=.ot.da.M |
ac60 | 61 70 70 69 6e 67 54 72 61 6e 73 70 6f 72 74 28 0a 20 20 20 20 6b 65 72 6e 65 6c 3d 22 67 61 75 | appingTransport(.....kernel="gau |
ac80 | 73 73 69 61 6e 22 2c 20 65 74 61 3d 31 65 2d 35 2c 20 6d 75 3d 31 65 2d 31 2c 20 62 69 61 73 3d | ssian",.eta=1e-5,.mu=1e-1,.bias= |
aca0 | 54 72 75 65 2c 20 73 69 67 6d 61 3d 31 2c 0a 20 20 20 20 6d 61 78 5f 69 74 65 72 3d 31 30 2c 20 | True,.sigma=1,.....max_iter=10,. |
acc0 | 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 61 | verbose=True).ot_mapping_gaussia |
ace0 | 6e 2e 66 69 74 28 58 73 3d 58 73 2c 20 58 74 3d 58 74 29 0a 0a 23 20 66 6f 72 20 6f 72 69 67 69 | n.fit(Xs=Xs,.Xt=Xt)..#.for.origi |
ad00 | 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 61 70 | nal.source.samples,.transform.ap |
ad20 | 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 73 70 | plies.barycentric.mapping.transp |
ad40 | 5f 58 73 5f 67 61 75 73 73 69 61 6e 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 73 73 69 | _Xs_gaussian.=.ot_mapping_gaussi |
ad60 | 61 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 29 0a 0a 23 20 66 6f 72 20 6f 75 74 20 6f | an.transform(Xs=Xs)..#.for.out.o |
ad80 | 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 2c 20 74 72 61 6e 73 66 6f 72 6d 20 61 70 70 6c | f.source.samples,.transform.appl |
ada0 | 69 65 73 20 74 68 65 20 67 61 75 73 73 69 61 6e 20 6d 61 70 70 69 6e 67 0a 74 72 61 6e 73 70 5f | ies.the.gaussian.mapping.transp_ |
adc0 | 58 73 5f 67 61 75 73 73 69 61 6e 5f 6e 65 77 20 3d 20 6f 74 5f 6d 61 70 70 69 6e 67 5f 67 61 75 | Xs_gaussian_new.=.ot_mapping_gau |
ade0 | 73 73 69 61 6e 2e 74 72 61 6e 73 66 6f 72 6d 28 58 73 3d 58 73 5f 6e 65 77 29 0a 0a 0a 23 23 23 | ssian.transform(Xs=Xs_new)...### |
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 23 23 23 23 23 23 | ################################ |
ae40 | 23 23 23 23 23 23 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 | ###########.#.plot.data.######## |
ae60 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
ae80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
aea0 | 23 23 23 23 23 23 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 | ######..pl.figure(1,.(10,.5)).pl |
aec0 | 2e 63 6c 66 28 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 | .clf().pl.scatter(Xs[:,.0],.Xs[: |
aee0 | 2c 20 31 5d 2c 20 63 3d 79 73 2c 20 6d 61 72 6b 65 72 3d 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 | ,.1],.c=ys,.marker='+',.label='S |
af00 | 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 72 28 58 74 5b 3a 2c | ource.samples').pl.scatter(Xt[:, |
af20 | 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 72 6b 65 72 3d 27 6f 27 2c | .0],.Xt[:,.1],.c=yt,.marker='o', |
af40 | 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 65 | .label='Target.samples').pl.lege |
af60 | 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 20 74 | nd(loc=0).pl.title('Source.and.t |
af80 | 61 72 67 65 74 20 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 | arget.distributions')...######## |
afa0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
afc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
afe0 | 23 23 23 23 23 23 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 | ######.#.plot.transported.sample |
b000 | 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 23 23 23 23 23 23 23 | s.############################## |
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 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 | ################..pl.figure(2).p |
b060 | 6c 2e 63 6c 66 28 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 | l.clf().pl.subplot(2,.2,.1).pl.s |
b080 | 63 61 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c | catter(Xt[:,.0],.Xt[:,.1],.c=yt, |
b0a0 | 20 6d 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 | .marker='o',............label='T |
b0c0 | 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 | arget.samples',.alpha=.2).pl.sca |
b0e0 | 74 74 65 72 28 74 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 | tter(transp_Xs_linear[:,.0],.tra |
b100 | 6e 73 70 5f 58 73 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 | nsp_Xs_linear[:,.1],.c=ys,.marke |
b120 | 72 3d 27 2b 27 2c 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 | r='+',............label='Mapped. |
b140 | 73 6f 75 72 63 65 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 | source.samples').pl.title("Bary. |
b160 | 20 6d 61 70 70 69 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 | .mapping.(linear)").pl.legend(lo |
b180 | 63 3d 30 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 32 29 0a 70 6c 2e 73 63 61 | c=0)..pl.subplot(2,.2,.2).pl.sca |
b1a0 | 74 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d | tter(Xt[:,.0],.Xt[:,.1],.c=yt,.m |
b1c0 | 61 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 | arker='o',............label='Tar |
b1e0 | 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 | get.samples',.alpha=.2).pl.scatt |
b200 | 65 72 28 74 72 61 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 | er(transp_Xs_linear_new[:,.0],.t |
b220 | 72 61 6e 73 70 5f 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 | ransp_Xs_linear_new[:,.1],...... |
b240 | 20 20 20 20 20 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 4c | ......c=ys,.marker='+',.label='L |
b260 | 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 |
b280 | 2e 20 6d 61 70 70 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 | ..mapping.(linear)")..pl.subplot |
b2a0 | 28 32 2c 20 32 2c 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 | (2,.2,.3).pl.scatter(Xt[:,.0],.X |
b2c0 | 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 20 | t[:,.1],.c=yt,.marker='o',...... |
b2e0 | 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 6c | ......label='Target.samples',.al |
b300 | 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 74 72 61 6e 73 70 5f 58 73 5f 67 61 75 | pha=.2).pl.scatter(transp_Xs_gau |
b320 | 73 73 69 61 6e 5b 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 | ssian[:,.0],.transp_Xs_gaussian[ |
b340 | 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=' |
b360 | 2b 27 2c 20 6c 61 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 | +',.label='barycentric.mapping') |
b380 | 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 6b 65 72 6e 65 6c | .pl.title("Bary..mapping.(kernel |
b3a0 | 29 22 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 20 32 2c 20 34 29 0a 70 6c 2e 73 63 61 74 | )")..pl.subplot(2,.2,.4).pl.scat |
b3c0 | 74 65 72 28 58 74 5b 3a 2c 20 30 5d 2c 20 58 74 5b 3a 2c 20 31 5d 2c 20 63 3d 79 74 2c 20 6d 61 | ter(Xt[:,.0],.Xt[:,.1],.c=yt,.ma |
b3e0 | 72 6b 65 72 3d 27 6f 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3d 27 54 61 72 67 | rker='o',............label='Targ |
b400 | 65 74 20 73 61 6d 70 6c 65 73 27 2c 20 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 | et.samples',.alpha=.2).pl.scatte |
b420 | 72 28 74 72 61 6e 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 | r(transp_Xs_gaussian_new[:,.0],. |
b440 | 74 72 61 6e 73 70 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 | transp_Xs_gaussian_new[:,.1],.c= |
b460 | 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 |
b480 | 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 45 73 | ='Learned.mapping').pl.title("Es |
b4a0 | 74 69 6d 2e 20 6d 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 | tim..mapping.(kernel)").pl.tight |
b4c0 | 5f 6c 61 79 6f 75 74 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 cb | _layout()..pl.show().PK......... |
b4e0 | 86 1e 4b 7a 65 86 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 | ..Kze.g........!...auto_examples |
b500 | 2f 70 6c 6f 74 5f 63 6f 6d 70 75 74 65 5f 65 6d 64 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 | /plot_compute_emd.py#.-*-.coding |
b520 | 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.-*-.""".================ |
b540 | 3d 3d 3d 3d 0a 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 3d 3d 3d 3d 3d 3d | ====.1D.optimal.transport.====== |
b560 | 3d 3d 3d 3d 3d 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 | ==============.."""..#.Author:.R |
b580 | 65 6d 69 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e | emi.Flamary.<remi.flamary@unice. |
b5a0 | 66 72 3e 0a 23 0a 23 20 4c 69 63 65 6e 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d | fr>.#.#.License:.MIT.License..im |
b5c0 | 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c | port.numpy.as.np.import.matplotl |
b5e0 | 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 | ib.pylab.as.pl.import.ot.from.ot |
b600 | 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 | .datasets.import.get_1D_gauss.as |
b620 | 20 67 61 75 73 73 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 | .gauss...#%%.parameters..n.=.100 |
b640 | 20 20 23 20 6e 62 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 | ..#.nb.bins.n_target.=.50..#.nb. |
b660 | 74 61 72 67 65 74 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 | target.distributions...#.bin.pos |
b680 | 69 74 69 6f 6e 73 0a 78 20 3d 20 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 20 64 74 79 70 65 3d 6e 70 | itions.x.=.np.arange(n,.dtype=np |
b6a0 | 2e 66 6c 6f 61 74 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 | .float64)..lst_m.=.np.linspace(2 |
b6c0 | 30 2c 20 39 30 2c 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 | 0,.90,.n_target)..#.Gaussian.dis |
b6e0 | 74 72 69 62 75 74 69 6f 6e 73 0a 61 20 3d 20 67 61 75 73 73 28 6e 2c 20 6d 3d 32 30 2c 20 73 3d | tributions.a.=.gauss(n,.m=20,.s= |
b700 | 35 29 20 20 23 20 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 | 5)..#.m=.mean,.s=.std..B.=.np.ze |
b720 | 72 6f 73 28 28 6e 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 | ros((n,.n_target))..for.i,.m.in. |
b740 | 65 6e 75 6d 65 72 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 | enumerate(lst_m):.....B[:,.i].=. |
b760 | 67 61 75 73 73 28 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 | gauss(n,.m=m,.s=5)..#.loss.matri |
b780 | 78 20 61 6e 64 20 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 | x.and.normalization.M.=.ot.dist( |
b7a0 | 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 28 6e 2c | x.reshape((n,.1)),.x.reshape((n, |
b7c0 | 20 31 29 29 2c 20 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 | .1)),.'euclidean').M./=.M.max(). |
b7e0 | 4d 32 20 3d 20 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 20 31 29 29 2c 20 | M2.=.ot.dist(x.reshape((n,.1)),. |
b800 | 78 2e 72 65 73 68 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 | x.reshape((n,.1)),.'sqeuclidean' |
b820 | 29 0a 4d 32 20 2f 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 | ).M2./=.M2.max().#%%.plot.the.di |
b840 | 73 74 72 69 62 75 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 | stributions..pl.figure(1).pl.sub |
b860 | 70 6c 6f 74 28 32 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 | plot(2,.1,.1).pl.plot(x,.a,.'b', |
b880 | 20 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c | .label='Source.distribution').pl |
b8a0 | 2e 74 69 74 6c 65 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 | .title('Source.distribution').pl |
b8c0 | 2e 73 75 62 70 6c 6f 74 28 32 2c 20 31 2c 20 32 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 20 42 2c 20 | .subplot(2,.1,.2).pl.plot(x,.B,. |
b8e0 | 6c 61 62 65 6c 3d 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 | label='Target.distributions').pl |
b900 | 2e 74 69 74 6c 65 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 | .title('Target.distributions').p |
b920 | 6c 2e 74 69 67 68 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 | l.tight_layout()..#%%.Compute.an |
b940 | 64 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 | d.plot.distributions.and.loss.ma |
b960 | 74 72 69 78 0a 0a 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 | trix..d_emd.=.ot.emd2(a,.B,.M).. |
b980 | 23 20 64 69 72 65 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 | #.direct.computation.of.EMD.d_em |
b9a0 | 64 32 20 3d 20 6f 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 | d2.=.ot.emd2(a,.B,.M2)..#.direct |
b9c0 | 20 63 6f 6d 70 75 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 | .computation.of.EMD.with.loss.M3 |
b9e0 | 0a 0a 0a 70 6c 2e 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 | ...pl.figure(2).pl.plot(d_emd,.l |
ba00 | 61 62 65 6c 3d 27 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 | abel='Euclidean.EMD').pl.plot(d_ |
ba20 | 65 6d 64 32 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 45 | emd2,.label='Squared.Euclidean.E |
ba40 | 4d 44 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 70 | MD').pl.title('EMD.distances').p |
ba60 | 6c 2e 6c 65 67 65 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 | l.legend()..#%%.reg.=.1e-2.d_sin |
ba80 | 6b 68 6f 72 6e 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 2c 20 42 2c 20 4d 2c 20 72 65 | khorn.=.ot.sinkhorn2(a,.B,.M,.re |
baa0 | 67 29 0a 64 5f 73 69 6e 6b 68 6f 72 6e 32 20 3d 20 6f 74 2e 73 69 6e 6b 68 6f 72 6e 32 28 61 2c | g).d_sinkhorn2.=.ot.sinkhorn2(a, |
bac0 | 20 42 2c 20 4d 32 2c 20 72 65 67 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 6c | .B,.M2,.reg)..pl.figure(2).pl.cl |
bae0 | 66 28 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 20 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 | f().pl.plot(d_emd,.label='Euclid |
bb00 | 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 32 2c 20 6c 61 62 65 6c 3d | ean.EMD').pl.plot(d_emd2,.label= |
bb20 | 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f 74 | 'Squared.Euclidean.EMD').pl.plot |
bb40 | 28 64 5f 73 69 6e 6b 68 6f 72 6e 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 65 | (d_sinkhorn,.'+',.label='Euclide |
bb60 | 61 6e 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 73 69 6e 6b 68 6f 72 6e | an.Sinkhorn').pl.plot(d_sinkhorn |
bb80 | 32 2c 20 27 2b 27 2c 20 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e | 2,.'+',.label='Squared.Euclidean |
bba0 | 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 45 4d 44 20 64 69 73 74 61 6e | .Sinkhorn').pl.title('EMD.distan |
bbc0 | 63 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 | ces').pl.legend()..pl.show().PK. |
bbe0 | 04 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 61 75 74 6f 5f | .......j{.I.@.i............auto_ |
bc00 | 65 78 61 6d 70 6c 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 | examples/demo_OT_1D_test.py#.-*- |
bc20 | 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 20 66 6f 72 20 | .coding:.utf-8.-*-.""".Demo.for. |
bc40 | 31 44 20 6f 70 74 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 | 1D.optimal.transport..@author:.r |
bc60 | 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 73 20 6e 70 0a | flamary."""..import.numpy.as.np. |
bc80 | 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 0a 69 6d | import.matplotlib.pylab.as.pl.im |
bca0 | 70 6f 72 74 20 6f 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 | port.ot.from.ot.datasets.import. |
bcc0 | 67 65 74 5f 31 44 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 | get_1D_gauss.as.gauss...#%%.para |
bce0 | 6d 65 74 65 72 73 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 | meters..n=100.#.nb.bins..#.bin.p |
bd00 | 6f 73 69 74 69 6f 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 | ositions.x=np.arange(n,dtype=np. |
bd20 | 66 6c 6f 61 74 36 34 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f | float64)..#.Gaussian.distributio |
bd40 | 6e 73 0a 61 3d 67 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 | ns.a=gauss(n,m=n*.2,s=5).#.m=.me |
bd60 | 61 6e 2c 20 73 3d 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 | an,.s=.std.b=gauss(n,m=n*.6,s=10 |
bd80 | 29 0a 0a 23 20 6c 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 | )..#.loss.matrix.M=ot.dist(x.res |
bda0 | 68 61 70 65 28 28 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 | hape((n,1)),x.reshape((n,1))).M/ |
bdc0 | 3d 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 | =M.max()..#%%.plot.the.distribut |
bde0 | 69 6f 6e 73 0a 0a 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 | ions..pl.figure(1).pl.plot(x,a,' |
be00 | 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a | b',label='Source.distribution'). |
be20 | 70 6c 2e 70 6c 6f 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 | pl.plot(x,b,'r',label='Target.di |
be40 | 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 23 25 25 20 70 6c | stribution').pl.legend()..#%%.pl |
be60 | 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 | ot.distributions.and.loss.matrix |
be80 | 0a 0a 70 6c 2e 66 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 | ..pl.figure(2).ot.plot.plot1D_ma |
bea0 | 74 28 61 2c 62 2c 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 | t(a,b,M,'Cost.matrix.M')..#%%.EM |
bec0 | 44 0a 0a 47 30 3d 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 | D..G0=ot.emd(a,b,M)..pl.figure(3 |
bee0 | 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 30 2c 27 4f 54 20 | ).ot.plot.plot1D_mat(a,b,G0,'OT. |
bf00 | 6d 61 74 72 69 78 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 | matrix.G0')..#%%.Sinkhorn..lambd |
bf20 | 3d 31 65 2d 33 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 | =1e-3.Gs=ot.sinkhorn(a,b,M,lambd |
bf40 | 2c 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 34 29 0a 6f 74 2e | ,verbose=True)..pl.figure(4).ot. |
bf60 | 70 6c 6f 74 2e 70 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 | plot.plot1D_mat(a,b,Gs,'OT.matri |
bf80 | 78 20 53 69 6e 6b 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 | x.Sinkhorn')..#%%.Sinkhorn..lamb |
bfa0 | 64 3d 31 65 2d 34 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 | d=1e-4.Gss,log=ot.bregman.sinkho |
bfc0 | 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 76 65 72 62 6f 73 | rn_stabilized(a,b,M,lambd,verbos |
bfe0 | 65 3d 54 72 75 65 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 | e=True,log=True).Gss2,log2=ot.br |
c000 | 65 67 6d 61 6e 2e 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 | egman.sinkhorn_stabilized(a,b,M, |
c020 | 6c 61 6d 62 64 2c 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 | lambd,verbose=True,log=True,warm |
c040 | 73 74 61 72 74 3d 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 | start=log['warmstart'])..pl.figu |
c060 | 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 73 | re(5).ot.plot.plot1D_mat(a,b,Gss |
c080 | 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 27 | ,'OT.matrix.Sinkhorn.stabilized' |
c0a0 | 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 31 31 0a 47 73 73 | )..#%%.Sinkhorn..lambd=1e-11.Gss |
c0c0 | 3d 6f 74 2e 62 72 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 | =ot.bregman.sinkhorn_epsilon_sca |
c0e0 | 6c 69 6e 67 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 29 0a 0a | ling(a,b,M,lambd,verbose=True).. |
c100 | 70 6c 2e 66 69 67 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 | pl.figure(5).ot.plot.plot1D_mat( |
c120 | 61 2c 62 2c 47 73 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 | a,b,Gss,'OT.matrix.Sinkhorn.stab |
c140 | 69 6c 69 7a 65 64 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 | ilized').PK...........J.%....... |
c160 | 0a 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 4f 54 44 41 5f 63 | ...'...auto_examples/plot_OTDA_c |
c180 | 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d | olor_images.py#.-*-.coding:.utf- |
c1a0 | 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | 8.-*-.""".====================== |
c1c0 | 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 | ================================ |
c1e0 | 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 20 77 69 74 68 | ==.OT.for.domain.adaptation.with |
c200 | 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 0a 3d 3d 3d 3d | .image.color.adaptation.[6].==== |
c220 | 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 | ================================ |
c240 | 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 64 | ====================..[6].Ferrad |
c260 | 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 47 | ans,.S.,.Papadakis,.N.,.Peyre,.G |
c280 | 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 61 | .,.&.Aujol,.J..F..(2014)..Regula |
c2a0 | 72 69 7a 65 64 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 | rized.discrete.optimal.transport |
c2c0 | 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 63 69 65 6e 63 | ..SIAM.Journal.on.Imaging.Scienc |
c2e0 | 65 73 2c 20 37 28 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 | es,.7(3),.1853-1882.."""..import |
c300 | 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 64 69 6d 61 67 | .numpy.as.np.import.scipy.ndimag |
c320 | 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 70 79 6c 61 62 | e.as.spi.import.matplotlib.pylab |
c340 | 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 69 6e 67 20 69 | .as.pl.import.ot...#%%.Loading.i |
c360 | 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 74 61 2f 6f 63 | mages..I1=spi.imread('../data/oc |
c380 | 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 61 74 36 34 29 | ean_day.jpg').astype(np.float64) |
c3a0 | 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 2f 6f 63 65 61 | /256.I2=spi.imread('../data/ocea |
c3c0 | 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 |
c3e0 | 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 66 69 67 75 72 | )/256..#%%.Plot.images..pl.figur |
c400 | 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 69 6d 73 68 6f | e(1)..pl.subplot(1,2,1).pl.imsho |
c420 | 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 70 6c 2e 73 75 | w(I1).pl.title('Image.1')..pl.su |
c440 | 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 70 6c 2e 74 69 | bplot(1,2,2).pl.imshow(I2).pl.ti |
c460 | 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 23 25 25 20 49 | tle('Image.2')..pl.show()..#%%.I |
c480 | 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 20 67 65 6e 65 | mage.conversion.and.dataset.gene |
c4a0 | 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 22 22 22 43 6f | ration..def.im2mat(I):....."""Co |
c4c0 | 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 28 6f 6e 65 20 | nverts.and.image.to.matrix.(one. |
c4e0 | 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 72 6e 20 49 2e | pixel.per.line)""".....return.I. |
c500 | 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 5b 31 5d 2c 49 | reshape((I.shape[0]*I.shape[1],I |
c520 | 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 68 61 70 65 29 | .shape[2]))..def.mat2im(X,shape) |
c540 | 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 | :....."""Converts.back.a.matrix. |
c560 | 74 6f 20 61 6e 20 69 6d 61 67 65 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 | to.an.image""".....return.X.resh |
c580 | 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 32 3d 69 6d 32 | ape(shape)..X1=im2mat(I1).X2=im2 |
c5a0 | 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 3d 31 | mat(I2)..#.training.samples.nb=1 |
c5c0 | 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 58 31 2e 73 68 | 000.idx1=np.random.randint(X1.sh |
c5e0 | 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 72 61 6e 64 6f | ape[0],size=(nb,)).idx2=np.rando |
c600 | 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 28 6e 62 2c 29 | m.randint(X2.shape[0],size=(nb,) |
c620 | 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 2c 3a 5d 0a 0a | )..xs=X1[idx1,:].xt=X2[idx2,:].. |
c640 | 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 73 0a 0a 0a 70 | #%%.Plot.image.distributions...p |
c660 | 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 6c 6f 74 28 31 | l.figure(2,(10,5))..pl.subplot(1 |
c680 | 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 5b 3a 2c 32 5d | ,2,1).pl.scatter(xs[:,0],xs[:,2] |
c6a0 | 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 6c 2e 78 6c 61 | ,c=xs).pl.axis([0,1,0,1]).pl.xla |
c6c0 | 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 6c 2e | bel('Red').pl.ylabel('Blue').pl. |
c6e0 | 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 2c 32 | title('Image.1')..pl.subplot(1,2 |
c700 | 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 65 72 28 78 74 | ,2).#pl.imshow(I2).pl.scatter(xt |
c720 | 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 28 5b 30 2c 31 | [:,0],xt[:,2],c=xt).pl.axis([0,1 |
c740 | 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 79 6c 61 62 65 | ,0,1]).pl.xlabel('Red').pl.ylabe |
c760 | 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 27 29 0a 0a 70 | l('Blue').pl.title('Image.2')..p |
c780 | 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 74 61 74 69 6f | l.show()....#%%.domain.adaptatio |
c7a0 | 6e 20 62 65 74 77 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 | n.between.images..#.LP.problem.d |
c7c0 | 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 74 20 63 6c | a_emd=ot.da.OTDA().....#.init.cl |
c7e0 | 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 23 20 66 69 | ass.da_emd.fit(xs,xt).......#.fi |
c800 | 74 20 64 69 73 74 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 | t.distributions...#.sinkhorn.reg |
c820 | 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 6e 74 72 6f 70 | ularization.lambd=1e-1.da_entrop |
c840 | 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 6e 74 72 6f 70 | =ot.da.OTDA_sinkhorn().da_entrop |
c860 | 2e 66 69 74 28 78 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 | .fit(xs,xt,reg=lambd)....#%%.pre |
c880 | 64 69 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 69 6d 61 67 65 73 20 28 75 73 69 6e 67 20 6f 75 | diction.between.images.(using.ou |
c8a0 | 74 20 6f 66 20 73 61 6d 70 6c 65 20 70 72 65 64 69 63 74 69 6f 6e 20 61 73 20 69 6e 20 5b 36 5d | t.of.sample.prediction.as.in.[6] |
c8c0 | 29 0a 0a 58 31 74 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 | )..X1t=da_emd.predict(X1).X2t=da |
c8e0 | 5f 65 6d 64 2e 70 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 | _emd.predict(X2,-1)...X1te=da_en |
c900 | 74 72 6f 70 2e 70 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 | trop.predict(X1).X2te=da_entrop. |
c920 | 70 72 65 64 69 63 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 | predict(X2,-1)...def.minmax(I):. |
c940 | 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 78 69 6d 75 6d | ....return.np.minimum(np.maximum |
c960 | 28 49 2c 30 29 2c 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 | (I,0),1)..I1t=minmax(mat2im(X1t, |
c980 | 49 31 2e 73 68 61 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 | I1.shape)).I2t=minmax(mat2im(X2t |
c9a0 | 2c 49 32 2e 73 68 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 | ,I2.shape))..I1te=minmax(mat2im( |
c9c0 | 58 31 74 65 2c 49 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 | X1te,I1.shape)).I2te=minmax(mat2 |
c9e0 | 69 6d 28 58 32 74 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 | im(X2te,I2.shape))..#%%.plot.all |
ca00 | 20 69 6d 61 67 65 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 | .images..pl.figure(2,(10,8))..pl |
ca20 | 2e 73 75 62 70 6c 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 | .subplot(2,3,1)..pl.imshow(I1).p |
ca40 | 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 32 | l.title('Image.1')..pl.subplot(2 |
ca60 | 2c 33 2c 32 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 | ,3,2).pl.imshow(I1t).pl.title('I |
ca80 | 6d 61 67 65 20 31 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 | mage.1.Adapt')...pl.subplot(2,3, |
caa0 | 33 29 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 61 | 3).pl.imshow(I1te).pl.title('Ima |
cac0 | 67 65 20 31 20 41 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 | ge.1.Adapt.(reg)')..pl.subplot(2 |
cae0 | 2c 33 2c 34 29 0a 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 | ,3,4)..pl.imshow(I2).pl.title('I |
cb00 | 6d 61 67 65 20 32 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 | mage.2')..pl.subplot(2,3,5).pl.i |
cb20 | 6d 73 68 6f 77 28 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 | mshow(I2t).pl.title('Image.2.Ada |
cb40 | 70 74 27 29 0a 0a 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 | pt')...pl.subplot(2,3,6).pl.imsh |
cb60 | 6f 77 28 49 32 74 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 | ow(I2te).pl.title('Image.2.Adapt |
cb80 | 20 28 72 65 67 29 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 | .(reg)')..pl.show().PK.......... |
cba0 | e3 4a f7 ba 1e e3 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 | .J....m...m.../...auto_examples/ |
cbc0 | 70 6c 6f 74 5f 4f 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 | plot_OTDA_mapping_color_images.p |
cbe0 | 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d | y#.-*-.coding:.utf-8.-*-.""".=== |
cc00 | 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 | ================================ |
cc20 | 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 | ================================ |
cc40 | 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 64 6f 6d 61 69 6e 20 | =================.OT.for.domain. |
cc60 | 61 64 61 70 74 61 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 | adaptation.with.image.color.adap |
cc80 | 74 61 74 69 6f 6e 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 | tation.[6].with.mapping.estimati |
cca0 | 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].========================= |
ccc0 | 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 | ================================ |
cce0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5b 36 5d | ===========================..[6] |
cd00 | 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 | .Ferradans,.S.,.Papadakis,.N.,.P |
cd20 | 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e | eyre,.G.,.&.Aujol,.J..F..(2014). |
cd40 | 20 52 65 67 75 6c 61 72 69 7a 65 64 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 | .Regularized.....discrete.optima |
cd60 | 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 | l.transport..SIAM.Journal.on.Ima |
cd80 | 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 31 38 38 32 2e 0a | ging.Sciences,.7(3),.1853-1882.. |
cda0 | 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 | [8].M..Perrot,.N..Courty,.R..Fla |
cdc0 | 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 20 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d | mary,.A..Habrard,."Mapping.estim |
cde0 | 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 | ation.for.....discrete.optimal.t |
ce00 | 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 50 72 | ransport",.Neural.Information.Pr |
ce20 | 6f 63 65 73 73 69 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 | ocessing.Systems.(NIPS),.2016... |
ce40 | 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 20 73 | """..import.numpy.as.np.import.s |
ce60 | 63 69 70 79 2e 6e 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 | cipy.ndimage.as.spi.import.matpl |
ce80 | 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 0a 23 25 | otlib.pylab.as.pl.import.ot...#% |
cea0 | 25 20 4c 6f 61 64 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 | %.Loading.images..I1=spi.imread( |
cec0 | 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 | '../data/ocean_day.jpg').astype( |
cee0 | 6e 70 2e 66 6c 6f 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 | np.float64)/256.I2=spi.imread('. |
cf00 | 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 73 74 79 70 65 | ./data/ocean_sunset.jpg').astype |
cf20 | 28 6e 70 2e 66 6c 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 | (np.float64)/256..#%%.Plot.image |
cf40 | 73 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 31 2c 32 2c | s..pl.figure(1)..pl.subplot(1,2, |
cf60 | 31 29 0a 70 6c 2e 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 | 1).pl.imshow(I1).pl.title('Image |
cf80 | 20 31 27 29 0a 0a 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 | .1')..pl.subplot(1,2,2).pl.imsho |
cfa0 | 77 28 49 32 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 | w(I2).pl.title('Image.2')..pl.sh |
cfc0 | 6f 77 28 29 0a 0a 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 | ow()..#%%.Image.conversion.and.d |
cfe0 | 61 74 61 73 65 74 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 | ataset.generation..def.im2mat(I) |
d000 | 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d | :....."""Converts.and.image.to.m |
d020 | 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 22 22 22 0a 20 20 | atrix.(one.pixel.per.line)"""... |
d040 | 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 2a 49 | ..return.I.reshape((I.shape[0]*I |
d060 | 2e 73 68 61 70 65 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 | .shape[1],I.shape[2]))..def.mat2 |
d080 | 69 6d 28 58 2c 73 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 | im(X,shape):....."""Converts.bac |
d0a0 | 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 20 20 72 65 | k.a.matrix.to.an.image""".....re |
d0c0 | 74 75 72 6e 20 58 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 | turn.X.reshape(shape)..X1=im2mat |
d0e0 | 28 49 31 29 0a 58 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 | (I1).X2=im2mat(I2)..#.training.s |
d100 | 61 6d 70 6c 65 73 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 | amples.nb=1000.idx1=np.random.ra |
d120 | 6e 64 69 6e 74 28 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 | ndint(X1.shape[0],size=(nb,)).id |
d140 | 78 32 3d 6e 70 2e 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 | x2=np.random.randint(X2.shape[0] |
d160 | 2c 73 69 7a 65 3d 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 | ,size=(nb,))..xs=X1[idx1,:].xt=X |
d180 | 32 5b 69 64 78 32 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 | 2[idx2,:]..#%%.Plot.image.distri |
d1a0 | 62 75 74 69 6f 6e 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 | butions...pl.figure(2,(10,5))..p |
d1c0 | 6c 2e 73 75 62 70 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 | l.subplot(1,2,1).pl.scatter(xs[: |
d1e0 | 2c 30 5d 2c 78 73 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 | ,0],xs[:,2],c=xs).pl.axis([0,1,0 |
d200 | 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 79 6c 61 62 65 6c 28 | ,1]).pl.xlabel('Red').pl.ylabel( |
d220 | 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 2e | 'Blue').pl.title('Image.1')..pl. |
d240 | 73 75 62 70 6c 6f 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 | subplot(1,2,2).#pl.imshow(I2).pl |
d260 | 2e 73 63 61 74 74 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 | .scatter(xt[:,0],xt[:,2],c=xt).p |
d280 | 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 65 64 | l.axis([0,1,0,1]).pl.xlabel('Red |
d2a0 | 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 | ').pl.ylabel('Blue').pl.title('I |
d2c0 | 6d 61 67 65 20 32 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 | mage.2')..pl.show()....#%%.domai |
d2e0 | 6e 20 61 64 61 70 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 | n.adaptation.between.images.def. |
d300 | 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 6d 69 6e 69 6d 75 6d | minmax(I):.....return.np.minimum |
d320 | 28 6e 70 2e 6d 61 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 | (np.maximum(I,0),1).#.LP.problem |
d340 | 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 74 20 | .da_emd=ot.da.OTDA().....#.init. |
d360 | 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 23 20 | class.da_emd.fit(xs,xt).......#. |
d380 | 66 69 74 20 64 69 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 | fit.distributions..X1t=da_emd.pr |
d3a0 | 65 64 69 63 74 28 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 | edict(X1)..#.out.of.sample.I1t=m |
d3c0 | 69 6e 6d 61 78 28 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 | inmax(mat2im(X1t,I1.shape))..#.s |
d3e0 | 69 6e 6b 68 6f 72 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 | inkhorn.regularization.lambd=1e- |
d400 | 31 0a 64 61 5f 65 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 | 1.da_entrop=ot.da.OTDA_sinkhorn( |
d420 | 29 0a 64 61 5f 65 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 | ).da_entrop.fit(xs,xt,reg=lambd) |
d440 | 0a 0a 58 31 74 65 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 | ..X1te=da_entrop.predict(X1).I1t |
d460 | 65 3d 6d 69 6e 6d 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 | e=minmax(mat2im(X1te,I1.shape)). |
d480 | 0a 23 20 6c 69 6e 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 | .#.linear.mapping.estimation.eta |
d4a0 | 3d 31 65 2d 38 20 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 | =1e-8...#.quadratic.regularizati |
d4c0 | 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 20 20 23 20 77 | on.for.regression.mu=1e0.....#.w |
d4e0 | 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 0a 62 69 61 73 | eight.of.the.OT.linear.term.bias |
d500 | 3d 54 72 75 65 20 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 | =True..#.estimate.a.bias..ot_map |
d520 | 70 69 6e 67 3d 6f 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 | ping=ot.da.OTDA_mapping_linear() |
d540 | 0a 6f 74 5f 6d 61 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 | .ot_mapping.fit(xs,xt,mu=mu,eta= |
d560 | 65 74 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 32 30 2c 76 65 | eta,bias=bias,numItermax.=.20,ve |
d580 | 72 62 6f 73 65 3d 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 | rbose=True)..X1tl=ot_mapping.pre |
d5a0 | 64 69 63 74 28 58 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 | dict(X1).#.use.the.estimated.map |
d5c0 | 70 69 6e 67 0a 49 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 | ping.I1tl=minmax(mat2im(X1tl,I1. |
d5e0 | 73 68 61 70 65 29 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 | shape))..#.nonlinear.mapping.est |
d600 | 69 6d 61 74 69 6f 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 | imation.eta=1e-2...#.quadratic.r |
d620 | 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 0a 6d 75 3d | egularization.for.regression.mu= |
d640 | 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 69 6e 65 61 | 1e0.....#.weight.of.the.OT.linea |
d660 | 72 20 74 65 72 6d 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 | r.term.bias=False..#.estimate.a. |
d680 | 62 69 61 73 0a 73 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 | bias.sigma=1....#.sigma.bandwidt |
d6a0 | 68 20 66 6f 74 20 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 | h.fot.gaussian.kernel...ot_mappi |
d6c0 | 6e 67 5f 6b 65 72 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 | ng_kernel=ot.da.OTDA_mapping_ker |
d6e0 | 6e 65 6c 28 29 0a 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 | nel().ot_mapping_kernel.fit(xs,x |
d700 | 74 2c 6d 75 3d 6d 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 | t,mu=mu,eta=eta,sigma=sigma,bias |
d720 | 3d 62 69 61 73 2c 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 | =bias,numItermax.=.10,verbose=Tr |
d740 | 75 65 29 0a 0a 58 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 | ue)..X1tn=ot_mapping_kernel.pred |
d760 | 69 63 74 28 58 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 | ict(X1).#.use.the.estimated.mapp |
d780 | 69 6e 67 0a 49 31 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 | ing.I1tn=minmax(mat2im(X1tn,I1.s |
d7a0 | 68 61 70 65 29 29 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 | hape)).#%%.plot.images...pl.figu |
d7c0 | 72 65 28 32 2c 28 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 | re(2,(10,8))..pl.subplot(2,3,1). |
d7e0 | 0a 70 6c 2e 69 6d 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 | .pl.imshow(I1).pl.title('Im..1') |
d800 | 0a 0a 70 6c 2e 73 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 | ..pl.subplot(2,3,2)..pl.imshow(I |
d820 | 32 29 0a 70 6c 2e 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 | 2).pl.title('Im..2')...pl.subplo |
d840 | 74 28 32 2c 33 2c 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 | t(2,3,3).pl.imshow(I1t).pl.title |
d860 | 28 27 49 6d 2e 20 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 | ('Im..1.Interp.LP')..pl.subplot( |
d880 | 32 2c 33 2c 34 29 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 | 2,3,4).pl.imshow(I1te).pl.title( |
d8a0 | 27 49 6d 2e 20 31 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 | 'Im..1.Interp.Entrop')...pl.subp |
d8c0 | 6c 6f 74 28 32 2c 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 | lot(2,3,5).pl.imshow(I1tl).pl.ti |
d8e0 | 74 6c 65 28 27 49 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 | tle('Im..1.Linear.mapping')..pl. |
d900 | 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 31 74 6e 29 0a 70 | subplot(2,3,6).pl.imshow(I1tn).p |
d920 | 6c 2e 74 69 74 6c 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 | l.title('Im..1.nonlinear.mapping |
d940 | 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 cb 86 1e 4b 4a 1b d0 65 | ')..pl.show().PK...........KJ..e |
d960 | 5a 0f 00 00 5a 0f 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 | Z...Z...'...auto_examples/plot_o |
d980 | 74 64 61 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a | tda_color_images.py#.-*-.coding: |
d9a0 | 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 3d | .utf-8.-*-.""".================= |
d9c0 | 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 | ================================ |
d9e0 | 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 74 69 6f 6e | =======.OT.for.domain.adaptation |
da00 | 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 20 5b 36 5d | .with.image.color.adaptation.[6] |
da20 | 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 | .=============================== |
da40 | 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 54 68 69 73 20 | =========================..This. |
da60 | 65 78 61 6d 70 6c 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 | example.presents.a.way.of.transf |
da80 | 65 72 72 69 6e 67 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 | erring.colors.between.two.image. |
daa0 | 77 69 74 68 20 4f 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 | with.Optimal.Transport.as.introd |
dac0 | 75 63 65 64 20 69 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 | uced.in.[6]..[6].Ferradans,.S.,. |
dae0 | 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 75 6a 6f | Papadakis,.N.,.Peyre,.G.,.&.Aujo |
db00 | 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 0a 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 | l,.J..F..(2014)..Regularized.dis |
db20 | 63 72 65 74 65 20 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 | crete.optimal.transport..SIAM.Jo |
db40 | 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 33 29 2c | urnal.on.Imaging.Sciences,.7(3), |
db60 | 20 31 38 35 33 2d 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 | .1853-1882.."""..#.Authors:.Remi |
db80 | 20 46 6c 61 6d 61 72 79 20 3c 72 65 6d 69 2e 66 6c 61 6d 61 72 79 40 75 6e 69 63 65 2e 66 72 3e | .Flamary.<remi.flamary@unice.fr> |
dba0 | 0a 23 20 20 20 20 20 20 20 20 20 20 53 74 61 6e 69 73 6c 61 73 20 43 68 61 6d 62 6f 6e 20 3c 73 | .#..........Stanislas.Chambon.<s |
dbc0 | 74 61 6e 2e 63 68 61 6d 62 6f 6e 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 23 0a 23 20 4c 69 63 65 6e | tan.chambon@gmail.com>.#.#.Licen |
dbe0 | 73 65 3a 20 4d 49 54 20 4c 69 63 65 6e 73 65 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 | se:.MIT.License..import.numpy.as |
dc00 | 20 6e 70 0a 66 72 6f 6d 20 73 63 69 70 79 20 69 6d 70 6f 72 74 20 6e 64 69 6d 61 67 65 0a 69 6d | .np.from.scipy.import.ndimage.im |
dc20 | 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 |
dc40 | 72 74 20 6f 74 0a 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 | rt.ot...r.=.np.random.RandomStat |
dc60 | 65 28 34 32 29 0a 0a 0a 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f | e(42)...def.im2mat(I):....."""Co |
dc80 | 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 28 6f 6e 65 20 | nverts.and.image.to.matrix.(one. |
dca0 | 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 72 6e 20 49 2e | pixel.per.line)""".....return.I. |
dcc0 | 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 20 2a 20 49 2e 73 68 61 70 65 5b 31 5d | reshape((I.shape[0].*.I.shape[1] |
dce0 | 2c 20 49 2e 73 68 61 70 65 5b 32 5d 29 29 0a 0a 0a 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 20 73 | ,.I.shape[2]))...def.mat2im(X,.s |
dd00 | 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 |
dd20 | 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 |
dd40 | 2e 72 65 73 68 61 70 65 28 73 68 61 70 65 29 0a 0a 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a | .reshape(shape)...def.minmax(I): |
dd60 | 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 63 6c 69 70 28 49 2c 20 30 2c 20 31 29 0a 0a 0a 23 | .....return.np.clip(I,.0,.1)...# |
dd80 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
dda0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
ddc0 | 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 23 23 | #############.#.generate.data.## |
dde0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
de00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
de20 | 23 23 23 23 23 23 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 | ############..#.Loading.images.I |
de40 | 31 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 | 1.=.ndimage.imread('../data/ocea |
de60 | 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 61 74 36 34 29 20 2f | n_day.jpg').astype(np.float64)./ |
de80 | 20 32 35 36 0a 49 32 20 3d 20 6e 64 69 6d 61 67 65 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 | .256.I2.=.ndimage.imread('../dat |
dea0 | 61 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 | a/ocean_sunset.jpg').astype(np.f |
dec0 | 6c 6f 61 74 36 34 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 | loat64)./.256..X1.=.im2mat(I1).X |
dee0 | 32 20 3d 20 69 6d 32 6d 61 74 28 49 32 29 0a 0a 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c | 2.=.im2mat(I2)..#.training.sampl |
df00 | 65 73 0a 6e 62 20 3d 20 31 30 30 30 0a 69 64 78 31 20 3d 20 72 2e 72 61 6e 64 69 6e 74 28 58 31 | es.nb.=.1000.idx1.=.r.randint(X1 |
df20 | 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 69 64 78 32 20 3d 20 72 2e | .shape[0],.size=(nb,)).idx2.=.r. |
df40 | 72 61 6e 64 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 20 73 69 7a 65 3d 28 6e 62 2c 29 29 | randint(X2.shape[0],.size=(nb,)) |
df60 | 0a 0a 58 73 20 3d 20 58 31 5b 69 64 78 31 2c 20 3a 5d 0a 58 74 20 3d 20 58 32 5b 69 64 78 32 2c | ..Xs.=.X1[idx1,.:].Xt.=.X2[idx2, |
df80 | 20 3a 5d 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 | .:]...########################## |
dfa0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
dfc0 | 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 |
dfe0 | 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 |
e000 | 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.############# |
e020 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e040 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e060 | 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 61 | #..#.EMDTransport.ot_emd.=.ot.da |
e080 | 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 73 | .EMDTransport().ot_emd.fit(Xs=Xs |
e0a0 | 2c 20 58 74 3d 58 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 | ,.Xt=Xt)..#.SinkhornTransport.ot |
e0c0 | 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 73 70 | _sinkhorn.=.ot.da.SinkhornTransp |
e0e0 | 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 74 28 | ort(reg_e=1e-1).ot_sinkhorn.fit( |
e100 | 58 73 3d 58 73 2c 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 | Xs=Xs,.Xt=Xt)..#.prediction.betw |
e120 | 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 61 6d 70 6c 65 20 | een.images.(using.out.of.sample. |
e140 | 70 72 65 64 69 63 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 | prediction.as.in.[6]).transp_Xs_ |
e160 | 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 31 29 0a 74 72 | emd.=.ot_emd.transform(Xs=X1).tr |
e180 | 61 6e 73 70 5f 58 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 | ansp_Xt_emd.=.ot_emd.inverse_tra |
e1a0 | 6e 73 66 6f 72 6d 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 | nsform(Xt=X2)..transp_Xs_sinkhor |
e1c0 | 6e 20 3d 20 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 | n.=.ot_emd.transform(Xs=X1).tran |
e1e0 | 73 70 5f 58 74 5f 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 | sp_Xt_sinkhorn.=.ot_emd.inverse_ |
e200 | 74 72 61 6e 73 66 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 | transform(Xt=X2)..I1t.=.minmax(m |
e220 | 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 61 70 65 29 29 0a | at2im(transp_Xs_emd,.I1.shape)). |
e240 | 49 32 74 20 3d 20 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 74 72 61 6e 73 70 5f 58 74 5f 65 6d | I2t.=.minmax(mat2im(transp_Xt_em |
e260 | 64 2c 20 49 32 2e 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 | d,.I2.shape))..I1te.=.minmax(mat |
e280 | 32 69 6d 28 74 72 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 | 2im(transp_Xs_sinkhorn,.I1.shape |
e2a0 | 29 29 0a 49 32 74 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 | )).I2te.=.minmax(mat2im(transp_X |
e2c0 | 74 5f 73 69 6e 6b 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 | t_sinkhorn,.I2.shape))...####### |
e2e0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e300 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e320 | 23 23 23 23 23 23 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 | #######.#.plot.original.image.## |
e340 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e360 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e380 | 23 23 23 23 23 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 | ############..pl.figure(1,.figsi |
e3a0 | 7a 65 3d 28 36 2e 34 2c 20 33 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 20 32 2c 20 31 | ze=(6.4,.3))..pl.subplot(1,.2,.1 |
e3c0 | 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 0a 70 | ).pl.imshow(I1).pl.axis('off').p |
e3e0 | 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 |
e400 | 2c 20 32 2c 20 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 61 78 69 73 28 27 6f | ,.2,.2).pl.imshow(I2).pl.axis('o |
e420 | 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 0a 23 23 23 23 23 | ff').pl.title('Image.2')...##### |
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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e480 | 23 23 23 23 23 23 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 | #########.#.scatter.plot.of.colo |
e4a0 | 72 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 23 23 23 23 23 23 | rs.############################# |
e4c0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e4e0 | 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 28 32 2c 20 | #################..pl.figure(2,. |
e500 | 66 69 67 73 69 7a 65 3d 28 36 2e 34 2c 20 33 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c | figsize=(6.4,.3))..pl.subplot(1, |
e520 | 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 58 73 5b 3a | .2,.1).pl.scatter(Xs[:,.0],.Xs[: |
e540 | 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 2c 20 31 5d | ,.2],.c=Xs).pl.axis([0,.1,.0,.1] |
e560 | 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 6c | ).pl.xlabel('Red').pl.ylabel('Bl |
e580 | 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 2e 73 75 62 | ue').pl.title('Image.1')..pl.sub |
e5a0 | 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 3a 2c 20 30 | plot(1,.2,.2).pl.scatter(Xt[:,.0 |
e5c0 | 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 30 2c 20 31 | ],.Xt[:,.2],.c=Xt).pl.axis([0,.1 |
e5e0 | 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 2e 79 6c 61 | ,.0,.1]).pl.xlabel('Red').pl.yla |
e600 | 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 27 29 0a | bel('Blue').pl.title('Image.2'). |
e620 | 70 6c 2e 74 69 67 68 74 5f 6c 61 79 6f 75 74 28 29 0a 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 | pl.tight_layout()...############ |
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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
e680 | 23 23 0a 23 20 70 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 | ##.#.plot.new.images.########### |
e6a0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
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 0a 0a 70 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 | ###..pl.figure(3,.figsize=(8,.4) |
e700 | 29 0a 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 | )..pl.subplot(2,.3,.1).pl.imshow |
e720 | 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 65 28 27 49 6d | (I1).pl.axis('off').pl.title('Im |
e740 | 61 67 65 20 31 27 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 | age.1')..pl.subplot(2,.3,.2).pl. |
e760 | 69 6d 73 68 6f 77 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 | imshow(I1t).pl.axis('off').pl.ti |
e780 | 74 6c 65 28 27 49 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 | tle('Image.1.Adapt')..pl.subplot |
e7a0 | 28 32 2c 20 33 2c 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 | (2,.3,.3).pl.imshow(I1te).pl.axi |
e7c0 | 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 20 41 64 61 70 74 | s('off').pl.title('Image.1.Adapt |
e7e0 | 20 28 72 65 67 29 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 | .(reg)')..pl.subplot(2,.3,.4).pl |
e800 | 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 6c 2e 74 69 | .imshow(I2).pl.axis('off').pl.ti |
e820 | 74 6c 65 28 27 49 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 | tle('Image.2')..pl.subplot(2,.3, |
e840 | 20 35 29 0a 70 6c 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 | .5).pl.imshow(I2t).pl.axis('off' |
e860 | 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 70 6c 2e | ).pl.title('Image.2.Adapt')..pl. |
e880 | 73 75 62 70 6c 6f 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 | subplot(2,.3,.6).pl.imshow(I2te) |
e8a0 | 0a 70 6c 2e 61 78 69 73 28 27 6f 66 66 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 | .pl.axis('off').pl.title('Image. |
e8c0 | 32 20 41 64 61 70 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 | 2.Adapt.(reg)').pl.tight_layout( |
e8e0 | 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 50 4b 01 02 14 03 14 00 00 00 00 00 cb 86 1e 4b ba bc 41 | )..pl.show().PK.............K..A |
e900 | 39 c9 08 00 00 c9 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 | 9..........................auto_ |
e920 | 65 78 61 6d 70 6c 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 | examples/plot_WDA.pyPK.......... |
e940 | a9 83 e3 4a e7 a1 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 | ...J..F........."............... |
e960 | 00 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 6d 61 70 70 69 6e | ..auto_examples/plot_OTDA_mappin |
e980 | 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 cb 86 1e 4b ac 48 87 7e b4 05 00 00 b4 05 00 00 | g.pyPK.............K.H.~........ |
e9a0 | 21 00 00 00 00 00 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 | !.................auto_examples/ |
e9c0 | 70 6c 6f 74 5f 6f 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 | plot_optim_OTreg.pyPK........... |
e9e0 | 83 e3 4a f2 c1 a7 29 f1 09 00 00 f1 09 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 c8 1b 00 | ..J...)........"................ |
ea00 | 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 6c 61 73 73 65 73 | .auto_examples/plot_OTDA_classes |
ea20 | 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 34 87 1e 4b d0 88 31 48 54 15 00 00 54 15 00 00 1d | .pyPK..........4..K..1HT...T.... |
ea40 | 00 00 00 00 00 00 00 00 00 00 00 b4 81 f9 25 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 | ..............%..auto_examples/p |
ea60 | 6c 6f 74 5f 6f 74 64 61 5f 64 32 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 cb 86 1e 4b 1e a6 | lot_otda_d2.pyPK.............K.. |
ea80 | 15 2a 43 04 00 00 43 04 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 b4 81 88 3b 00 00 61 75 74 6f | .*C...C..................;..auto |
eaa0 | 5f 65 78 61 6d 70 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 | _examples/plot_OT_1D.pyPK....... |
eac0 | 00 00 00 32 82 e3 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 | ...2..JX........................ |
eae0 | 81 04 40 00 00 61 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 | ..@..auto_examples/plot_OT_conv. |
eb00 | 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 cb 86 1e 4b fc 6c a8 1a 46 0b 00 00 46 0b 00 00 23 00 | pyPK.............K.l..F...F...#. |
eb20 | 00 00 00 00 00 00 00 00 00 00 b4 81 d6 50 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c | .............P..auto_examples/pl |
eb40 | 6f 74 5f 62 61 72 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 cb | ot_barycenter_1D.pyPK........... |
eb60 | 86 1e 4b b7 26 0b b3 8b 11 00 00 8b 11 00 00 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 5d 5c 00 | ..K.&..........".............]\. |
eb80 | 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 6c 61 73 73 65 73 | .auto_examples/plot_otda_classes |
eba0 | 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 34 87 1e 4b 2c a6 a3 c4 4a 11 00 00 4a 11 00 00 30 | .pyPK..........4..K,...J...J...0 |
ebc0 | 00 00 00 00 00 00 00 00 00 00 00 b4 81 28 6e 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 | .............(n..auto_examples/p |
ebe0 | 6c 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 73 5f 69 6d 61 67 65 73 2e 70 | lot_otda_mapping_colors_images.p |
ec00 | 79 50 4b 01 02 14 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 | yPK..........j{.I%...........(.. |
ec20 | 00 00 00 00 00 00 00 00 00 b4 81 c0 7f 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d | ...............auto_examples/dem |
ec40 | 6f 5f 4f 54 5f 32 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 | o_OT_2D_sampleslarge.pyPK....... |
ec60 | 00 00 00 cb 86 1e 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 | ......K...|........!............ |
ec80 | 81 22 86 00 00 61 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 | ."...auto_examples/plot_OT_L1_vs |
eca0 | 5f 4c 32 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 cb 86 1e 4b 7b 03 bf 32 03 07 00 00 03 07 | _L2.pyPK.............K{..2...... |
ecc0 | 00 00 23 00 00 00 00 00 00 00 00 00 00 00 b4 81 24 92 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 | ..#.............$...auto_example |
ece0 | 73 2f 70 6c 6f 74 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 | s/plot_OT_2D_samples.pyPK....... |
ed00 | 00 00 00 a9 83 e3 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 | ......J..B1..................... |
ed20 | 81 68 99 00 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 32 44 2e | .h...auto_examples/plot_OTDA_2D. |
ed40 | 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 34 87 1e 4b d9 cf 46 53 c4 10 00 00 c4 10 00 00 22 00 | pyPK..........4..K..FS........". |
ed60 | 00 00 00 00 00 00 00 00 00 00 b4 81 d1 a3 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c | ................auto_examples/pl |
ed80 | 6f 74 5f 6f 74 64 61 5f 6d 61 70 70 69 6e 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 cb 86 | ot_otda_mapping.pyPK............ |
eda0 | 1e 4b 7a 65 86 67 c9 06 00 00 c9 06 00 00 21 00 00 00 00 00 00 00 00 00 00 00 b4 81 d5 b4 00 00 | .Kze.g........!................. |
edc0 | 61 75 74 6f 5f 65 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 | auto_examples/plot_compute_emd.p |
ede0 | 79 50 4b 01 02 14 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 | yPK..........j{.I.@.i........... |
ee00 | 00 00 00 00 00 00 00 00 00 b4 81 dd bb 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d | ...............auto_examples/dem |
ee20 | 6f 5f 4f 54 5f 31 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 | o_OT_1D_test.pyPK.............J. |
ee40 | 25 9f a1 06 0a 00 00 06 0a 00 00 27 00 00 00 00 00 00 00 00 00 00 00 b4 81 49 c1 00 00 61 75 74 | %..........'.............I...aut |
ee60 | 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 6d 61 67 65 | o_examples/plot_OTDA_color_image |
ee80 | 73 2e 70 79 50 4b 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 | s.pyPK.............J....m...m... |
eea0 | 2f 00 00 00 00 00 00 00 00 00 00 00 b4 81 94 cb 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f | /.................auto_examples/ |
eec0 | 70 6c 6f 74 5f 4f 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 | plot_OTDA_mapping_color_images.p |
eee0 | 79 50 4b 01 02 14 03 14 00 00 00 00 00 cb 86 1e 4b 4a 1b d0 65 5a 0f 00 00 5a 0f 00 00 27 00 00 | yPK.............KJ..eZ...Z...'.. |
ef00 | 00 00 00 00 00 00 00 00 00 b4 81 4e d9 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f | ...........N...auto_examples/plo |
ef20 | 74 5f 6f 74 64 61 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 | t_otda_color_images.pyPK........ |
ef40 | 14 00 49 06 00 00 ed e8 00 00 00 00 | ..I......... |