summaryrefslogtreecommitdiff
path: root/docs/source/auto_examples/auto_examples_python.zip
blob: 6e73f21cfe81f27a49a49e03fabac1534e94e903 (plain)
ofshex dumpascii
0000 50 4b 03 04 14 00 00 00 00 00 97 7b 82 49 e7 a1 46 a7 95 0c 00 00 95 0c 00 00 22 00 00 00 61 75 PK.........{.I..F........."...au
0020 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
0040 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.-*-.""".====
0060 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
0080 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
00a0 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].====
00c0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
00e0 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
0100 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,."
0120 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
0140 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
0160 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
0180 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
01a0 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
01c0 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
01e0 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
0200 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
0220 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
0240 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.
0260 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
0280 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.
02a0 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
02c0 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
02e0 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.
0300 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[
0320 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
0340 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(
0360 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=
0380 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
03a0 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]
03c0 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
03e0 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
0400 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
0420 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.
0440 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
0460 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
0480 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
04a0 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
04c0 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
04e0 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
0500 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
0520 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=
0540 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
0560 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
0580 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.
05a0 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
05c0 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
05e0 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=
0600 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
0620 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[:
0640 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
0660 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
0680 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
06a0 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
06c0 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
06e0 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[:
0700 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
0720 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("
0740 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.
0760 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...#
0780 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
07a0 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
07c0 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..#
07e0 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
0800 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
0820 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
0840 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
0860 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
0880 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
08a0 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
08c0 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.
08e0 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
0900 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()...#
0920 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
0940 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
0960 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
0980 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
09a0 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
09c0 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
09e0 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
0a00 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
0a20 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
0a40 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
0a60 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
0a80 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
0aa0 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
0ac0 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
0ae0 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
0b00 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)"
0b20 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(
0b40 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',
0b60 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)
0b80 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
0ba0 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
0bc0 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
0be0 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
0c00 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[:
0c20 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
0c40 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.
0c60 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
0c80 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
0ca0 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
0cc0 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 d9 ..mapping.(kernel)").PK.........
0ce0 7b 82 49 f2 d2 41 6e 06 05 00 00 06 05 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 {.I..An........!...auto_examples
0d00 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
0d20 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.-*-.""".================
0d40 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
0d60 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.==========
0d80 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 ========================..."""..
0da0 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
0dc0 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 23 25 tlib.pylab.as.pl.import.ot....#%
0de0 25 20 70 61 72 61 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 %.parameters..n=100.#.nb.bins..#
0e00 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 .bin.positions.x=np.arange(n,dty
0e20 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 64 69 73 74 72 pe=np.float64)..#.Gaussian.distr
0e40 69 62 75 74 69 6f 6e 73 0a 61 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 ibutions.a=ot.datasets.get_1D_ga
0e60 75 73 73 28 6e 2c 6d 3d 32 30 2c 73 3d 35 29 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 uss(n,m=20,s=5).#.m=.mean,.s=.st
0e80 64 0a 62 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 6d d.b=ot.datasets.get_1D_gauss(n,m
0ea0 3d 36 30 2c 73 3d 31 30 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 =60,s=10)..#.loss.matrix.M=ot.di
0ec0 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 2c 78 2e 72 65 73 68 61 70 65 28 28 6e st(x.reshape((n,1)),x.reshape((n
0ee0 2c 31 29 29 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 ,1))).M/=M.max()..#%%.EMD..G0=ot
0f00 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 6f 74 2e 70 6c 6f .emd(a,b,M)..pl.figure(3).ot.plo
0f20 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 30 2c 27 4f 54 20 6d 61 74 72 69 78 20 47 t.plot1D_mat(a,b,G0,'OT.matrix.G
0f40 30 27 29 0a 0a 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 0')..#%%.Example.with.Frobenius.
0f60 6e 6f 72 6d 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 norm.regularization..def.f(G):.r
0f80 65 74 75 72 6e 20 30 2e 35 2a 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 0a 64 65 66 20 64 66 28 47 29 eturn.0.5*np.sum(G**2).def.df(G)
0fa0 3a 20 72 65 74 75 72 6e 20 47 0a 0a 72 65 67 3d 31 65 2d 31 0a 0a 47 6c 32 3d 6f 74 2e 6f 70 74 :.return.G..reg=1e-1..Gl2=ot.opt
0fc0 69 6d 2e 63 67 28 61 2c 62 2c 4d 2c 72 65 67 2c 66 2c 64 66 2c 76 65 72 62 6f 73 65 3d 54 72 75 im.cg(a,b,M,reg,f,df,verbose=Tru
0fe0 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 74 31 44 5f e)..pl.figure(3).ot.plot.plot1D_
1000 6d 61 74 28 61 2c 62 2c 47 6c 32 2c 27 4f 54 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 mat(a,b,Gl2,'OT.matrix.Frob..reg
1020 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 6f 70 69 63 20 72 65 ')..#%%.Example.with.entropic.re
1040 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 65 74 75 72 6e 20 6e gularization..def.f(G):.return.n
1060 70 2e 73 75 6d 28 47 2a 6e 70 2e 6c 6f 67 28 47 29 29 0a 64 65 66 20 64 66 28 47 29 3a 20 72 65 p.sum(G*np.log(G)).def.df(G):.re
1080 74 75 72 6e 20 6e 70 2e 6c 6f 67 28 47 29 2b 31 0a 0a 72 65 67 3d 31 65 2d 33 0a 0a 47 65 3d 6f turn.np.log(G)+1..reg=1e-3..Ge=o
10a0 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 62 2c 4d 2c 72 65 67 2c 66 2c 64 66 2c 76 65 72 62 6f 73 t.optim.cg(a,b,M,reg,f,df,verbos
10c0 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c e=True)..pl.figure(4).ot.plot.pl
10e0 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 65 2c 27 4f 54 20 6d 61 74 72 69 78 20 45 6e 74 72 6f ot1D_mat(a,b,Ge,'OT.matrix.Entro
1100 70 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 46 72 6f 62 65 p..reg')..#%%.Example.with.Frobe
1120 6e 69 75 73 20 6e 6f 72 6d 20 2b 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 nius.norm.+.entropic.regularizat
1140 69 6f 6e 20 77 69 74 68 20 67 63 67 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 65 74 75 72 6e 20 30 ion.with.gcg..def.f(G):.return.0
1160 2e 35 2a 6e 70 2e 73 75 6d 28 47 2a 2a 32 29 0a 64 65 66 20 64 66 28 47 29 3a 20 72 65 74 75 72 .5*np.sum(G**2).def.df(G):.retur
1180 6e 20 47 0a 0a 72 65 67 31 3d 31 65 2d 31 0a 72 65 67 32 3d 31 65 2d 31 0a 0a 47 65 6c 32 3d 6f n.G..reg1=1e-1.reg2=1e-1..Gel2=o
11a0 74 2e 6f 70 74 69 6d 2e 67 63 67 28 61 2c 62 2c 4d 2c 72 65 67 31 2c 72 65 67 32 2c 66 2c 64 66 t.optim.gcg(a,b,M,reg1,reg2,f,df
11c0 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 35 29 0a 6f 74 2e ,verbose=True)..pl.figure(5).ot.
11e0 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 65 6c 32 2c 27 4f 54 20 65 6e 74 plot.plot1D_mat(a,b,Gel2,'OT.ent
1200 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 50 4b 03 04 14 00 ropic.+.matrix.Frob..reg')PK....
1220 00 00 00 00 97 7b 82 49 f2 c1 a7 29 f1 09 00 00 f1 09 00 00 22 00 00 00 61 75 74 6f 5f 65 78 61 .....{.I...)........"...auto_exa
1240 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6c 61 73 73 65 73 2e 70 79 23 20 2d 2a 2d 20 mples/plot_OTDA_classes.py#.-*-.
1260 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d coding:.utf-8.-*-.""".==========
1280 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 61 64 61 ==============.OT.for.domain.ada
12a0 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 3d 3d 3d ptation.========================
12c0 0a 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 .."""..import.matplotlib.pylab.a
12e0 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 s.pl.import.ot.....#%%.parameter
1300 73 0a 0a 6e 3d 31 35 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 20 69 6e 20 73 6f 75 72 63 65 20 s..n=150.#.nb.samples.in.source.
1320 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 0a 0a 78 73 2c 79 73 3d 6f 74 2e 64 61 and.target.datasets..xs,ys=ot.da
1340 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 tasets.get_data_classif('3gauss'
1360 2c 6e 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 ,n).xt,yt=ot.datasets.get_data_c
1380 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 32 27 2c 6e 29 0a 0a 0a 0a 0a 23 25 25 20 70 6c 6f 74 lassif('3gauss2',n).....#%%.plot
13a0 20 73 61 6d 70 6c 65 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 .samples..pl.figure(1)..pl.subpl
13c0 6f 74 28 32 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 ot(2,2,1).pl.scatter(xs[:,0],xs[
13e0 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 53 6f 75 72 :,1],c=ys,marker='+',label='Sour
1400 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c ce.samples').pl.legend(loc=0).pl
1420 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a .title('Source..distributions').
1440 0a 70 6c 2e 73 75 62 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 .pl.subplot(2,2,2).pl.scatter(xt
1460 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
1480 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 6e 64 28 bel='Target.samples').pl.legend(
14a0 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 74 61 72 67 65 74 20 20 64 69 73 74 72 69 62 loc=0).pl.title('target..distrib
14c0 75 74 69 6f 6e 73 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 utions')...#%%.OT.estimation..#.
14e0 4c 50 20 70 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 44 41 28 29 20 20 LP.problem.da_emd=ot.da.OTDA()..
1500 20 20 20 23 20 69 6e 69 74 20 63 6c 61 73 73 0a 64 61 5f 65 6d 64 2e 66 69 74 28 78 73 2c 78 74 ...#.init.class.da_emd.fit(xs,xt
1520 29 20 20 20 20 20 20 20 23 20 66 69 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 78 73 74 30 ).......#.fit.distributions.xst0
1540 3d 64 61 5f 65 6d 64 2e 69 6e 74 65 72 70 28 29 20 20 20 20 23 20 69 6e 74 65 72 70 6f 6c 61 74 =da_emd.interp()....#.interpolat
1560 69 6f 6e 20 6f 66 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 0a 0a 0a 23 20 73 69 6e 6b 68 6f ion.of.source.samples...#.sinkho
1580 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 31 0a 64 61 5f rn.regularization.lambd=1e-1.da_
15a0 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 29 0a 64 61 5f entrop=ot.da.OTDA_sinkhorn().da_
15c0 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 0a 78 73 74 73 entrop.fit(xs,xt,reg=lambd).xsts
15e0 3d 64 61 5f 65 6e 74 72 6f 70 2e 69 6e 74 65 72 70 28 29 0a 0a 23 20 6e 6f 6e 2d 63 6f 6e 76 65 =da_entrop.interp()..#.non-conve
1600 78 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 72 65 67 x.Group.lasso.regularization.reg
1620 3d 31 65 2d 31 0a 65 74 61 3d 31 65 30 0a 64 61 5f 6c 70 6c 31 3d 6f 74 2e 64 61 2e 4f 54 44 41 =1e-1.eta=1e0.da_lpl1=ot.da.OTDA
1640 5f 6c 70 6c 31 28 29 0a 64 61 5f 6c 70 6c 31 2e 66 69 74 28 78 73 2c 79 73 2c 78 74 2c 72 65 67 _lpl1().da_lpl1.fit(xs,ys,xt,reg
1660 3d 72 65 67 2c 65 74 61 3d 65 74 61 29 0a 78 73 74 67 3d 64 61 5f 6c 70 6c 31 2e 69 6e 74 65 72 =reg,eta=eta).xstg=da_lpl1.inter
1680 70 28 29 0a 0a 0a 23 20 54 72 75 65 20 47 72 6f 75 70 20 6c 61 73 73 6f 20 72 65 67 75 6c 61 72 p()...#.True.Group.lasso.regular
16a0 69 7a 61 74 69 6f 6e 0a 72 65 67 3d 31 65 2d 31 0a 65 74 61 3d 32 65 30 0a 64 61 5f 6c 31 6c 32 ization.reg=1e-1.eta=2e0.da_l1l2
16c0 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6c 31 6c 32 28 29 0a 64 61 5f 6c 31 6c 32 2e 66 69 74 28 78 =ot.da.OTDA_l1l2().da_l1l2.fit(x
16e0 73 2c 79 73 2c 78 74 2c 72 65 67 3d 72 65 67 2c 65 74 61 3d 65 74 61 2c 6e 75 6d 49 74 65 72 6d s,ys,xt,reg=reg,eta=eta,numIterm
1700 61 78 3d 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 78 73 74 67 6c 3d 64 61 5f 6c 31 6c ax=20,verbose=True).xstgl=da_l1l
1720 32 2e 69 6e 74 65 72 70 28 29 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 69 6e 74 65 72 70 6f 6c 61 74 2.interp()...#%%.plot.interpolat
1740 65 64 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 28 31 ed.source.samples.pl.figure(4,(1
1760 35 2c 38 29 29 0a 0a 70 61 72 61 6d 5f 69 6d 67 3d 7b 27 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 5,8))..param_img={'interpolation
1780 27 3a 27 6e 65 61 72 65 73 74 27 2c 27 63 6d 61 70 27 3a 27 6a 65 74 27 7d 0a 0a 70 6c 2e 73 75 ':'nearest','cmap':'jet'}..pl.su
17a0 62 70 6c 6f 74 28 32 2c 34 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 65 6d 64 2e 47 2c bplot(2,4,1).pl.imshow(da_emd.G,
17c0 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 **param_img).pl.title('OT.matrix
17e0 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 ')...pl.subplot(2,4,2).pl.imshow
1800 28 64 61 5f 65 6e 74 72 6f 70 2e 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 (da_entrop.G,**param_img).pl.tit
1820 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 le('OT.matrix.sinkhorn')..pl.sub
1840 70 6c 6f 74 28 32 2c 34 2c 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 6c 70 6c 31 2e 47 2c plot(2,4,3).pl.imshow(da_lpl1.G,
1860 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 **param_img).pl.title('OT.matrix
1880 20 6e 6f 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 .non-convex.Group.Lasso')..pl.su
18a0 62 70 6c 6f 74 28 32 2c 34 2c 34 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 64 61 5f 6c 31 6c 32 2e 47 bplot(2,4,4).pl.imshow(da_l1l2.G
18c0 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 ,**param_img).pl.title('OT.matri
18e0 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 x.Group.Lasso')...pl.subplot(2,4
1900 2c 35 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 ,5).pl.scatter(xt[:,0],xt[:,1],c
1920 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
1940 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 ples',alpha=0.3).pl.scatter(xst0
1960 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 27 2b 27 2c [:,0],xst0[:,1],c=ys,marker='+',
1980 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e label='Transp.samples',s=30).pl.
19a0 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 65 67 65 6e title('Interp.samples').pl.legen
19c0 64 28 6c 6f 63 3d 30 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 34 2c 36 29 0a 70 6c 2e 73 d(loc=0)..pl.subplot(2,4,6).pl.s
19e0 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b catter(xt[:,0],xt[:,1],c=yt,mark
1a00 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c er='o',label='Target.samples',al
1a20 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 73 5b 3a 2c 30 5d 2c 78 73 pha=0.3).pl.scatter(xsts[:,0],xs
1a40 74 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 ts[:,1],c=ys,marker='+',label='T
1a60 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 ransp.samples',s=30).pl.title('I
1a80 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e 73 75 62 nterp.samples.Sinkhorn')..pl.sub
1aa0 70 6c 6f 74 28 32 2c 34 2c 37 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 plot(2,4,7).pl.scatter(xt[:,0],x
1ac0 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
1ae0 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 6c 2e 73 63 61 74 rget.samples',alpha=0.3).pl.scat
1b00 74 65 72 28 78 73 74 67 5b 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 ter(xstg[:,0],xstg[:,1],c=ys,mar
1b20 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 ker='+',label='Transp.samples',s
1b40 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 6e 6f =30).pl.title('Interp.samples.no
1b60 6e 2d 63 6f 6e 76 65 78 20 47 72 6f 75 70 20 4c 61 73 73 6f 27 29 0a 0a 70 6c 2e 73 75 62 70 6c n-convex.Group.Lasso')..pl.subpl
1b80 6f 74 28 32 2c 34 2c 38 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,8).pl.scatter(xt[:,0],xt[
1ba0 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
1bc0 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
1be0 72 28 78 73 74 67 6c 5b 3a 2c 30 5d 2c 78 73 74 67 6c 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 r(xstgl[:,0],xstgl[:,1],c=ys,mar
1c00 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c 73 ker='+',label='Transp.samples',s
1c20 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 72 =30).pl.title('Interp.samples.Gr
1c40 6f 75 70 20 4c 61 73 73 6f 27 29 50 4b 03 04 14 00 00 00 00 00 d7 7b 82 49 a6 c0 9c 1d 82 03 00 oup.Lasso')PK.........{.I.......
1c60 00 82 03 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 .........auto_examples/plot_OT_1
1c80 44 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a D.py#.-*-.coding:.utf-8.-*-.""".
1ca0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 6f 70 74 69 6d 61 6c 20 ====================.1D.optimal.
1cc0 74 72 61 6e 73 70 6f 72 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a transport.====================..
1ce0 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 75 @author:.rflamary."""..import.nu
1d00 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 61 mpy.as.np.import.matplotlib.pyla
1d20 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 b.as.pl.import.ot.from.ot.datase
1d40 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 0a ts.import.get_1D_gauss.as.gauss.
1d60 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 30 30 20 23 20 6e 62 20 62 69 6e ..#%%.parameters..n=100.#.nb.bin
1d80 73 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e s..#.bin.positions.x=np.arange(n
1da0 2c 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 64 ,dtype=np.float64)..#.Gaussian.d
1dc0 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 61 3d 67 61 75 73 73 28 6e 2c 6d 3d 32 30 2c 73 3d 35 29 istributions.a=gauss(n,m=20,s=5)
1de0 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 3d 67 61 75 73 73 28 6e 2c 6d 3d 36 .#.m=.mean,.s=.std.b=gauss(n,m=6
1e00 30 2c 73 3d 31 30 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 0,s=10)..#.loss.matrix.M=ot.dist
1e20 28 78 2e 72 65 73 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 (x.reshape((n,1)),x.reshape((n,1
1e40 29 29 29 0a 4d 2f 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 ))).M/=M.max()..#%%.plot.the.dis
1e60 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 70 6c 6f 74 tributions..pl.figure(1).pl.plot
1e80 28 78 2c 61 2c 27 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 (x,a,'b',label='Source.distribut
1ea0 69 6f 6e 27 29 0a 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 ion').pl.plot(x,b,'r',label='Tar
1ec0 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 0a get.distribution').pl.legend()..
1ee0 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 20 #%%.plot.distributions.and.loss.
1f00 6d 61 74 72 69 78 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 matrix..pl.figure(2).ot.plot.plo
1f20 74 31 44 5f 6d 61 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 t1D_mat(a,b,M,'Cost.matrix.M')..
1f40 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 29 0a 0a 70 6c 2e 66 69 #%%.EMD..G0=ot.emd(a,b,M)..pl.fi
1f60 67 75 72 65 28 33 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 gure(3).ot.plot.plot1D_mat(a,b,G
1f80 30 2c 27 4f 54 20 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 0,'OT.matrix.G0')..#%%.Sinkhorn.
1fa0 0a 6c 61 6d 62 64 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 .lambd=1e-3.Gs=ot.sinkhorn(a,b,M
1fc0 2c 6c 61 6d 62 64 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c ,lambd)..pl.figure(4).ot.plot.pl
1fe0 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 ot1D_mat(a,b,Gs,'OT.matrix.Sinkh
2000 6f 72 6e 27 29 0a 50 4b 03 04 14 00 00 00 00 00 d9 7b 82 49 d8 dc 52 b3 62 0a 00 00 62 0a 00 00 orn').PK.........{.I..R.b...b...
2020 23 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 #...auto_examples/plot_barycente
2040 72 5f 31 44 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 r_1D.py#.-*-.coding:.utf-8.-*-."
2060 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "".=============================
2080 3d 0a 31 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e 74 65 72 20 64 65 6d 6f =.1D.Wasserstein.barycenter.demo
20a0 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 0a .==============================.
20c0 0a 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 ..@author:.rflamary."""..import.
20e0 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 numpy.as.np.import.matplotlib.py
2100 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 6d 70 6c 5f 74 6f 6f lab.as.pl.import.ot.from.mpl_too
2120 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 73 33 44 20 23 6e 65 63 lkits.mplot3d.import.Axes3D.#nec
2140 65 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 essary.for.3d.plot.even.if.not.u
2160 73 65 64 0a 66 72 6f 6d 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 sed.from.matplotlib.collections.
2180 69 6d 70 6f 72 74 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 0a 0a 0a 23 25 25 20 70 61 72 61 import.PolyCollection...#%%.para
21a0 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
21c0 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.
21e0 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
2200 6e 73 0a 61 31 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e ns.a1=ot.datasets.get_1D_gauss(n
2220 2c 6d 3d 32 30 2c 73 3d 35 29 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 61 32 3d ,m=20,s=5).#.m=.mean,.s=.std.a2=
2240 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 31 44 5f 67 61 75 73 73 28 6e 2c 6d 3d 36 30 2c ot.datasets.get_1D_gauss(n,m=60,
2260 73 3d 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 s=8)..#.creating.matrix.A.contai
2280 6e 69 6e 67 20 61 6c 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 41 3d 6e 70 2e 76 73 74 61 ning.all.distributions.A=np.vsta
22a0 63 6b 28 28 61 31 2c 61 32 29 29 2e 54 0a 6e 62 64 3d 41 2e 73 68 61 70 65 5b 31 5d 0a 0a 23 20 ck((a1,a2)).T.nbd=A.shape[1]..#.
22c0 6c 6f 73 73 20 6d 61 74 72 69 78 20 2b 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 0a 4d 3d 6f 74 loss.matrix.+.normalization.M=ot
22e0 2e 75 74 69 6c 73 2e 64 69 73 74 30 28 6e 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 .utils.dist0(n).M/=M.max()..#%%.
2300 70 6c 6f 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 plot.the.distributions..pl.figur
2320 65 28 31 29 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 62 64 29 3a 0a 20 20 20 20 70 6c e(1).for.i.in.range(nbd):.....pl
2340 2e 70 6c 6f 74 28 78 2c 41 5b 3a 2c 69 5d 29 0a 70 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 .plot(x,A[:,i]).pl.title('Distri
2360 62 75 74 69 6f 6e 73 27 29 0a 0a 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 butions')..#%%.barycenter.comput
2380 61 74 69 6f 6e 0a 0a 61 6c 70 68 61 3d 30 2e 32 20 23 20 30 3c 3d 61 6c 70 68 61 3c 3d 31 0a 77 ation..alpha=0.2.#.0<=alpha<=1.w
23a0 65 69 67 68 74 73 3d 6e 70 2e 61 72 72 61 79 28 5b 31 2d 61 6c 70 68 61 2c 61 6c 70 68 61 5d 29 eights=np.array([1-alpha,alpha])
23c0 0a 0a 23 20 6c 32 62 61 72 79 0a 62 61 72 79 5f 6c 32 3d 41 2e 64 6f 74 28 77 65 69 67 68 74 73 ..#.l2bary.bary_l2=A.dot(weights
23e0 29 0a 0a 23 20 77 61 73 73 65 72 73 74 65 69 6e 0a 72 65 67 3d 31 65 2d 33 0a 62 61 72 79 5f 77 )..#.wasserstein.reg=1e-3.bary_w
2400 61 73 73 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 4d 2c 72 65 ass=ot.bregman.barycenter(A,M,re
2420 67 2c 77 65 69 67 68 74 73 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 6c 66 28 g,weights)..pl.figure(2).pl.clf(
2440 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 31 2c 31 29 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e ).pl.subplot(2,1,1).for.i.in.ran
2460 67 65 28 6e 62 64 29 3a 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 2c 41 5b 3a 2c 69 5d 29 0a 70 ge(nbd):.....pl.plot(x,A[:,i]).p
2480 6c 2e 74 69 74 6c 65 28 27 44 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 l.title('Distributions')..pl.sub
24a0 70 6c 6f 74 28 32 2c 31 2c 32 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 62 61 72 79 5f 6c 32 2c 27 72 plot(2,1,2).pl.plot(x,bary_l2,'r
24c0 27 2c 6c 61 62 65 6c 3d 27 6c 32 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 62 61 72 79 5f 77 61 73 ',label='l2').pl.plot(x,bary_was
24e0 73 2c 27 67 27 2c 6c 61 62 65 6c 3d 27 57 61 73 73 65 72 73 74 65 69 6e 27 29 0a 70 6c 2e 6c 65 s,'g',label='Wasserstein').pl.le
2500 67 65 6e 64 28 29 0a 70 6c 2e 74 69 74 6c 65 28 27 42 61 72 79 63 65 6e 74 65 72 73 27 29 0a 0a gend().pl.title('Barycenters')..
2520 0a 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 .#%%.barycenter.interpolation..n
2540 62 61 6c 70 68 61 3d 31 31 0a 61 6c 70 68 61 6c 69 73 74 3d 6e 70 2e 6c 69 6e 73 70 61 63 65 28 balpha=11.alphalist=np.linspace(
2560 30 2c 31 2c 6e 62 61 6c 70 68 61 29 0a 0a 0a 42 5f 6c 32 3d 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 0,1,nbalpha)...B_l2=np.zeros((n,
2580 6e 62 61 6c 70 68 61 29 29 0a 0a 42 5f 77 61 73 73 3d 6e 70 2e 63 6f 70 79 28 42 5f 6c 32 29 0a nbalpha))..B_wass=np.copy(B_l2).
25a0 0a 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 30 2c 6e 62 61 6c 70 68 61 29 3a 0a 20 20 20 20 .for.i.in.range(0,nbalpha):.....
25c0 61 6c 70 68 61 3d 61 6c 70 68 61 6c 69 73 74 5b 69 5d 0a 20 20 20 20 77 65 69 67 68 74 73 3d 6e alpha=alphalist[i].....weights=n
25e0 70 2e 61 72 72 61 79 28 5b 31 2d 61 6c 70 68 61 2c 61 6c 70 68 61 5d 29 0a 20 20 20 20 42 5f 6c p.array([1-alpha,alpha]).....B_l
2600 32 5b 3a 2c 69 5d 3d 41 2e 64 6f 74 28 77 65 69 67 68 74 73 29 0a 20 20 20 20 42 5f 77 61 73 73 2[:,i]=A.dot(weights).....B_wass
2620 5b 3a 2c 69 5d 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 62 61 72 79 63 65 6e 74 65 72 28 41 2c 4d 2c [:,i]=ot.bregman.barycenter(A,M,
2640 72 65 67 2c 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 reg,weights)..#%%.plot.interpola
2660 74 69 6f 6e 0a 0a 70 6c 2e 66 69 67 75 72 65 28 33 2c 28 31 30 2c 35 29 29 0a 0a 23 70 6c 2e 73 tion..pl.figure(3,(10,5))..#pl.s
2680 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a 63 6d 61 70 3d 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 ubplot(1,2,1).cmap=pl.cm.get_cma
26a0 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 3d 20 61 6c 70 p('viridis').verts.=.[].zs.=.alp
26c0 68 61 6c 69 73 74 0a 66 6f 72 20 69 2c 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a halist.for.i,z.in.enumerate(zs):
26e0 0a 20 20 20 20 79 73 20 3d 20 42 5f 6c 32 5b 3a 2c 69 5d 0a 20 20 20 20 76 65 72 74 73 2e 61 70 .....ys.=.B_l2[:,i].....verts.ap
2700 70 65 6e 64 28 6c 69 73 74 28 7a 69 70 28 78 2c 20 79 73 29 29 29 0a 0a 61 78 20 3d 20 70 6c 2e pend(list(zip(x,.ys)))..ax.=.pl.
2720 67 63 66 28 29 2e 67 63 61 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0a 0a 70 6f 6c 79 gcf().gca(projection='3d')..poly
2740 20 3d 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 66 61 63 65 63 6f 6c 6f .=.PolyCollection(verts,facecolo
2760 72 73 3d 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 6c 69 73 74 5d 29 rs=[cmap(a).for.a.in.alphalist])
2780 0a 70 6f 6c 79 2e 73 65 74 5f 61 6c 70 68 61 28 30 2e 37 29 0a 61 78 2e 61 64 64 5f 63 6f 6c 6c .poly.set_alpha(0.7).ax.add_coll
27a0 65 63 74 69 6f 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 0a ection3d(poly,.zs=zs,.zdir='y').
27c0 0a 61 78 2e 73 65 74 5f 78 6c 61 62 65 6c 28 27 78 27 29 0a 61 78 2e 73 65 74 5f 78 6c 69 6d 33 .ax.set_xlabel('x').ax.set_xlim3
27e0 64 28 30 2c 20 6e 29 0a 61 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 61 6c 70 68 61 24 d(0,.n).ax.set_ylabel('$\\alpha$
2800 27 29 0a 61 78 2e 73 65 74 5f 79 6c 69 6d 33 64 28 30 2c 31 29 0a 61 78 2e 73 65 74 5f 7a 6c 61 ').ax.set_ylim3d(0,1).ax.set_zla
2820 62 65 6c 28 27 27 29 0a 61 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 2e 6d 61 bel('').ax.set_zlim3d(0,.B_l2.ma
2840 78 28 29 2a 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 x()*1.01).pl.title('Barycenter.i
2860 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 77 69 74 68 20 6c 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 nterpolation.with.l2')..pl.show(
2880 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 2c 28 31 30 2c 35 29 29 0a 0a 23 70 6c 2e 73 75 62 70 )..pl.figure(4,(10,5))..#pl.subp
28a0 6c 6f 74 28 31 2c 32 2c 31 29 0a 63 6d 61 70 3d 70 6c 2e 63 6d 2e 67 65 74 5f 63 6d 61 70 28 27 lot(1,2,1).cmap=pl.cm.get_cmap('
28c0 76 69 72 69 64 69 73 27 29 0a 76 65 72 74 73 20 3d 20 5b 5d 0a 7a 73 20 3d 20 61 6c 70 68 61 6c viridis').verts.=.[].zs.=.alphal
28e0 69 73 74 0a 66 6f 72 20 69 2c 7a 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 7a 73 29 3a 0a 20 20 ist.for.i,z.in.enumerate(zs):...
2900 20 20 79 73 20 3d 20 42 5f 77 61 73 73 5b 3a 2c 69 5d 0a 20 20 20 20 76 65 72 74 73 2e 61 70 70 ..ys.=.B_wass[:,i].....verts.app
2920 65 6e 64 28 6c 69 73 74 28 7a 69 70 28 78 2c 20 79 73 29 29 29 0a 0a 61 78 20 3d 20 70 6c 2e 67 end(list(zip(x,.ys)))..ax.=.pl.g
2940 63 66 28 29 2e 67 63 61 28 70 72 6f 6a 65 63 74 69 6f 6e 3d 27 33 64 27 29 0a 0a 70 6f 6c 79 20 cf().gca(projection='3d')..poly.
2960 3d 20 50 6f 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 76 65 72 74 73 2c 66 61 63 65 63 6f 6c 6f 72 =.PolyCollection(verts,facecolor
2980 73 3d 5b 63 6d 61 70 28 61 29 20 66 6f 72 20 61 20 69 6e 20 61 6c 70 68 61 6c 69 73 74 5d 29 0a s=[cmap(a).for.a.in.alphalist]).
29a0 70 6f 6c 79 2e 73 65 74 5f 61 6c 70 68 61 28 30 2e 37 29 0a 61 78 2e 61 64 64 5f 63 6f 6c 6c 65 poly.set_alpha(0.7).ax.add_colle
29c0 63 74 69 6f 6e 33 64 28 70 6f 6c 79 2c 20 7a 73 3d 7a 73 2c 20 7a 64 69 72 3d 27 79 27 29 0a 0a ction3d(poly,.zs=zs,.zdir='y')..
29e0 61 78 2e 73 65 74 5f 78 6c 61 62 65 6c 28 27 78 27 29 0a 61 78 2e 73 65 74 5f 78 6c 69 6d 33 64 ax.set_xlabel('x').ax.set_xlim3d
2a00 28 30 2c 20 6e 29 0a 61 78 2e 73 65 74 5f 79 6c 61 62 65 6c 28 27 24 5c 5c 61 6c 70 68 61 24 27 (0,.n).ax.set_ylabel('$\\alpha$'
2a20 29 0a 61 78 2e 73 65 74 5f 79 6c 69 6d 33 64 28 30 2c 31 29 0a 61 78 2e 73 65 74 5f 7a 6c 61 62 ).ax.set_ylim3d(0,1).ax.set_zlab
2a40 65 6c 28 27 27 29 0a 61 78 2e 73 65 74 5f 7a 6c 69 6d 33 64 28 30 2c 20 42 5f 6c 32 2e 6d 61 78 el('').ax.set_zlim3d(0,.B_l2.max
2a60 28 29 2a 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 6e ()*1.01).pl.title('Barycenter.in
2a80 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 0a terpolation.with.Wasserstein')..
2aa0 70 6c 2e 73 68 6f 77 28 29 50 4b 03 04 14 00 00 00 00 00 6a 7b 82 49 25 c9 d6 13 1c 06 00 00 1c pl.show()PK........j{.I%........
2ac0 06 00 00 28 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 32 44 5f ...(...auto_examples/demo_OT_2D_
2ae0 73 61 6d 70 6c 65 73 6c 61 72 67 65 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 sampleslarge.py#.-*-.coding:.utf
2b00 2d 38 20 2d 2a 2d 0a 22 22 22 0a 44 65 6d 6f 20 66 6f 72 20 32 44 20 4f 70 74 69 6d 61 6c 20 74 -8.-*-.""".Demo.for.2D.Optimal.t
2b20 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 74 72 ransport.between.empirical.distr
2b40 69 62 75 74 69 6f 6e 73 0a 0a 40 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a ibutions..@author:.rflamary.""".
2b60 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 6c .import.numpy.as.np.import.matpl
2b80 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 23 25 25 otlib.pylab.as.pl.import.ot..#%%
2ba0 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 0a .parameters.and.data.generation.
2bc0 0a 6e 3d 35 30 30 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0a 0a 6d 75 5f 73 3d 6e 70 2e 61 72 .n=5000.#.nb.samples..mu_s=np.ar
2be0 72 61 79 28 5b 30 2c 30 5d 29 0a 63 6f 76 5f 73 3d 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 30 5d ray([0,0]).cov_s=np.array([[1,0]
2c00 2c 5b 30 2c 31 5d 5d 29 0a 0a 6d 75 5f 74 3d 6e 70 2e 61 72 72 61 79 28 5b 34 2c 34 5d 29 0a 63 ,[0,1]])..mu_t=np.array([4,4]).c
2c20 6f 76 5f 74 3d 6e 70 2e 61 72 72 61 79 28 5b 5b 31 2c 2d 2e 38 5d 2c 5b 2d 2e 38 2c 31 5d 5d 29 ov_t=np.array([[1,-.8],[-.8,1]])
2c40 0a 0a 78 73 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f ..xs=ot.datasets.get_2D_samples_
2c60 67 61 75 73 73 28 6e 2c 6d 75 5f 73 2c 63 6f 76 5f 73 29 0a 78 74 3d 6f 74 2e 64 61 74 61 73 65 gauss(n,mu_s,cov_s).xt=ot.datase
2c80 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 75 5f 74 2c 63 ts.get_2D_samples_gauss(n,mu_t,c
2ca0 6f 76 5f 74 29 0a 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 ov_t)..a,b.=.ot.unif(n),ot.unif(
2cc0 6e 29 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d n).#.uniform.distribution.on.sam
2ce0 70 6c 65 73 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 73 ples..#.loss.matrix.M=ot.dist(xs
2d00 2c 78 74 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 ,xt).M/=M.max()..#%%.plot.sample
2d20 73 0a 0a 23 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 s..#pl.figure(1).#pl.plot(xs[:,0
2d40 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 61 6d ],xs[:,1],'+b',label='Source.sam
2d60 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 5d 2c ples').#pl.plot(xt[:,0],xt[:,1],
2d80 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 70 6c 'xr',label='Target.samples').#pl
2da0 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 53 6f 75 72 63 65 .legend(loc=0).#pl.title('Source
2dc0 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 23 0a 23 70 .and.traget.distributions').#.#p
2de0 6c 2e 66 69 67 75 72 65 28 32 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 69 6e 74 65 72 70 6f l.figure(2).#pl.imshow(M,interpo
2e00 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 28 27 43 6f 73 lation='nearest').#pl.title('Cos
2e20 74 20 6d 61 74 72 69 78 20 4d 27 29 0a 23 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 2e 65 t.matrix.M').#..#%%.EMD..G0=ot.e
2e40 6d 64 28 61 2c 62 2c 4d 29 0a 0a 23 70 6c 2e 66 69 67 75 72 65 28 33 29 0a 23 70 6c 2e 69 6d 73 md(a,b,M)..#pl.figure(3).#pl.ims
2e60 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a how(G0,interpolation='nearest').
2e80 23 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 23 0a 23 70 6c 2e #pl.title('OT.matrix.G0').#.#pl.
2ea0 66 69 67 75 72 65 28 34 29 0a 23 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 figure(4).#ot.plot.plot2D_sample
2ec0 73 5f 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 23 70 6c 2e s_mat(xs,xt,G0,c=[.5,.5,1]).#pl.
2ee0 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d plot(xs[:,0],xs[:,1],'+b',label=
2f00 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 'Source.samples').#pl.plot(xt[:,
2f20 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 0],xt[:,1],'xr',label='Target.sa
2f40 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 23 70 6c 2e 74 69 mples').#pl.legend(loc=0).#pl.ti
2f60 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 77 69 74 68 20 73 61 6d 70 6c 65 73 27 29 0a 0a 0a tle('OT.matrix.with.samples')...
2f80 23 25 25 20 73 69 6e 6b 68 6f 72 6e 0a 0a 23 20 72 65 67 20 74 65 72 6d 0a 6c 61 6d 62 64 3d 35 #%%.sinkhorn..#.reg.term.lambd=5
2fa0 65 2d 33 0a 0a 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c 61 6d 62 64 29 e-3..Gs=ot.sinkhorn(a,b,M,lambd)
2fc0 0a 0a 23 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 23 70 6c 2e 69 6d 73 68 6f 77 28 47 73 2c 69 6e ..#pl.figure(5).#pl.imshow(Gs,in
2fe0 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
3000 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 0a 23 0a 23 70 6c 2e 66 69 67 ('OT.matrix.sinkhorn').#.#pl.fig
3020 75 72 65 28 36 29 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 ure(6).#ot.plot.plot2D_samples_m
3040 61 74 28 78 73 2c 78 74 2c 47 73 2c 63 6f 6c 6f 72 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 23 70 6c at(xs,xt,Gs,color=[.5,.5,1]).#pl
3060 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c .plot(xs[:,0],xs[:,1],'+b',label
3080 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a ='Source.samples').#pl.plot(xt[:
30a0 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 ,0],xt[:,1],'xr',label='Target.s
30c0 61 6d 70 6c 65 73 27 29 0a 23 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 23 70 6c 2e 74 amples').#pl.legend(loc=0).#pl.t
30e0 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 77 69 74 68 20 73 61 itle('OT.matrix.Sinkhorn.with.sa
3100 6d 70 6c 65 73 27 29 0a 23 0a 0a 50 4b 03 04 14 00 00 00 00 00 d8 7b 82 49 97 6c c6 14 5a 06 00 mples').#..PK.........{.I.l..Z..
3120 00 5a 06 00 00 23 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 32 .Z...#...auto_examples/plot_OT_2
3140 44 5f 73 61 6d 70 6c 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 D_samples.py#.-*-.coding:.utf-8.
3160 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d -*-.""".========================
3180 3d 3d 3d 3d 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 32 44 20 ============================.2D.
31a0 4f 70 74 69 6d 61 6c 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 Optimal.transport.between.empiri
31c0 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d cal.distributions.==============
31e0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
3200 3d 3d 3d 3d 3d 3d 0a 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 ======..@author:.rflamary."""..i
3220 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
3240 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
3260 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 6e arameters.and.data.generation..n
3280 3d 32 30 20 23 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 =20.#.nb.samples..mu_s=np.array(
32a0 5b 30 2c 30 5d 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 [0,0]).cov_s=np.array([[1,0],[0,
32c0 31 5d 5d 29 0a 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 1]])..mu_t=np.array([4,4]).cov_t
32e0 3d 6e 70 2e 61 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 =np.array([[1,-.8],[-.8,1]])..xs
3300 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 =ot.datasets.get_2D_samples_gaus
3320 73 28 6e 2c 6d 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 s(n,mu_s,cov_s).xt=ot.datasets.g
3340 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e 2c 6d 75 5f 74 2c 63 6f 76 5f 74 et_2D_samples_gauss(n,mu_t,cov_t
3360 29 0a 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 20 23 )..a,b.=.ot.unif(n),ot.unif(n).#
3380 20 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 .uniform.distribution.on.samples
33a0 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 73 2c 78 74 29 ..#.loss.matrix.M=ot.dist(xs,xt)
33c0 0a 4d 2f 3d 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 .M/=M.max()..#%%.plot.samples..p
33e0 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 30 5d 2c 78 73 5b 3a l.figure(1).pl.plot(xs[:,0],xs[:
3400 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 ,1],'+b',label='Source.samples')
3420 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 .pl.plot(xt[:,0],xt[:,1],'xr',la
3440 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 6e 64 28 bel='Target.samples').pl.legend(
3460 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 72 61 67 loc=0).pl.title('Source.and.trag
3480 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 et.distributions')..pl.figure(2)
34a0 0a 70 6c 2e 69 6d 73 68 6f 77 28 4d 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 .pl.imshow(M,interpolation='near
34c0 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 20 4d 27 29 0a est').pl.title('Cost.matrix.M').
34e0 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 0a 0a 70 6c 2e ..#%%.EMD..G0=ot.emd(a,b,M)..pl.
3500 66 69 67 75 72 65 28 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 47 30 2c 69 6e 74 65 72 70 6f 6c 61 figure(3).pl.imshow(G0,interpola
3520 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 20 6d 61 74 tion='nearest').pl.title('OT.mat
3540 72 69 78 20 47 30 27 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 rix.G0')..pl.figure(4).ot.plot.p
3560 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 30 2c 63 3d 5b 2e 35 lot2D_samples_mat(xs,xt,G0,c=[.5
3580 2c 2e 35 2c 31 5d 29 0a 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c ,.5,1]).pl.plot(xs[:,0],xs[:,1],
35a0 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 70 6c 2e '+b',label='Source.samples').pl.
35c0 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 6c 3d plot(xt[:,0],xt[:,1],'xr',label=
35e0 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=
3600 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
3620 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
3640 0a 6c 61 6d 62 64 3d 35 65 2d 33 0a 0a 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c .lambd=5e-3..Gs=ot.sinkhorn(a,b,
3660 4d 2c 6c 61 6d 62 64 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 70 6c 2e 69 6d 73 68 6f 77 M,lambd)..pl.figure(5).pl.imshow
3680 28 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 (Gs,interpolation='nearest').pl.
36a0 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 20 73 69 6e 6b 68 6f 72 6e 27 29 0a 0a 70 6c 2e title('OT.matrix.sinkhorn')..pl.
36c0 66 69 67 75 72 65 28 36 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 figure(6).ot.plot.plot2D_samples
36e0 5f 6d 61 74 28 78 73 2c 78 74 2c 47 73 2c 63 6f 6c 6f 72 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 70 _mat(xs,xt,Gs,color=[.5,.5,1]).p
3700 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 l.plot(xs[:,0],xs[:,1],'+b',labe
3720 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a l='Source.samples').pl.plot(xt[:
3740 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 ,0],xt[:,1],'xr',label='Target.s
3760 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 74 amples').pl.legend(loc=0).pl.tit
3780 6c 65 28 27 4f 54 20 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 le('OT.matrix.Sinkhorn.with.samp
37a0 6c 65 73 27 29 0a 50 4b 03 04 14 00 00 00 00 00 97 7b 82 49 ec af 42 31 2e 0a 00 00 2e 0a 00 00 les').PK.........{.I..B1........
37c0 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 2e 70 ....auto_examples/plot_OTDA_2D.p
37e0 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.-*-.""".===
3800 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 ===========================.OT.f
3820 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 3d 3d or.empirical.distributions.=====
3840 3d 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 =========================.."""..
3860 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
3880 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 23 25 tlib.pylab.as.pl.import.ot....#%
38a0 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 0a 78 %.parameters..n=150.#.nb.bins..x
38c0 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 69 s,ys=ot.datasets.get_data_classi
38e0 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 73 2e f('3gauss',n).xt,yt=ot.datasets.
3900 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 0a 61 get_data_classif('3gauss2',n)..a
3920 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 6f 73 ,b.=.ot.unif(n),ot.unif(n).#.los
3940 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 4d 2e s.matrix.M=ot.dist(xs,xt).#M/=M.
3960 6d 61 78 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 75 max()..#%%.plot.samples..pl.figu
3980 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 61 74 re(1)..pl.subplot(2,2,1).pl.scat
39a0 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 3d ter(xs[:,0],xs[:,1],c=ys,marker=
39c0 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 6c '+',label='Source.samples').pl.l
39e0 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 20 64 egend(loc=0).pl.title('Source..d
3a00 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 2c 32 istributions')..pl.subplot(2,2,2
3a20 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 ).pl.scatter(xt[:,0],xt[:,1],c=y
3a40 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
3a60 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 es').pl.legend(loc=0).pl.title('
3a80 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 67 75 target..distributions')..pl.figu
3aa0 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 6e 3d re(2).pl.imshow(M,interpolation=
3ac0 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 43 6f 73 74 20 6d 61 74 72 69 78 'nearest').pl.title('Cost.matrix
3ae0 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 44 0a .M')...#%%.OT.estimation..#.EMD.
3b00 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 61 6d G0=ot.emd(a,b,M)..#.sinkhorn.lam
3b20 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 61 6d bd=1e-1.Gs=ot.sinkhorn(a,b,M,lam
3b40 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 74 69 bd)...#.Group.lasso.regularizati
3b60 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 69 6e on.reg=1e-1.eta=1e0.Gg=ot.da.sin
3b80 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 6e 74 khorn_lpl1_mm(a,ys.astype(np.int
3ba0 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 69 63 ),b,M,reg,eta)...#%%.visu.matric
3bc0 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 2c 33 es..pl.figure(3)..pl.subplot(2,3
3be0 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 3d 27 ,1).pl.imshow(G0,interpolation='
3c00 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 27 29 nearest').pl.title('OT.matrix.')
3c20 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 47 73 ..pl.subplot(2,3,2).pl.imshow(Gs
3c40 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 69 74 ,interpolation='nearest').pl.tit
3c60 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 75 62 le('OT.matrix.Sinkhorn')..pl.sub
3c80 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 70 6f plot(2,3,3).pl.imshow(Gg,interpo
3ca0 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 20 6d lation='nearest').pl.title('OT.m
3cc0 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 74 28 atrix.Group.lasso')..pl.subplot(
3ce0 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 6d 61 2,3,4).ot.plot.plot2D_samples_ma
3d00 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 74 74 t(xs,xt,G0,c=[.5,.5,1]).pl.scatt
3d20 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='
3d40 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 73 63 +',label='Source.samples').pl.sc
3d60 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 atter(xt[:,0],xt[:,1],c=yt,marke
3d80 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 0a 0a r='o',label='Target.samples')...
3da0 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 32 44 pl.subplot(2,3,5).ot.plot.plot2D
3dc0 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 2c 31 _samples_mat(xs,xt,Gs,c=[.5,.5,1
3de0 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 63 3d ]).pl.scatter(xs[:,0],xs[:,1],c=
3e00 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
3e20 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]
3e40 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
3e60 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 2e 70 amples')..pl.subplot(2,3,6).ot.p
3e80 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 67 2c lot.plot2D_samples_mat(xs,xt,Gg,
3ea0 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 5d 2c c=[.5,.5,1]).pl.scatter(xs[:,0],
3ec0 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 27 53 xs[:,1],c=ys,marker='+',label='S
3ee0 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 3a 2c ource.samples').pl.scatter(xt[:,
3f00 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 6c 0],xt[:,1],c=yt,marker='o',label
3f20 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 20 69 ='Target.samples')..#%%.sample.i
3f40 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 29 0a nterpolation..xst0=n*G0.dot(xt).
3f60 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 74 28 xsts=n*Gs.dot(xt).xstg=n*Gg.dot(
3f80 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 2c 33 xt)..pl.figure(4).pl.subplot(2,3
3fa0 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 31 5d ,1)...pl.scatter(xt[:,0],xt[:,1]
3fc0 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
3fe0 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 78 73 amples',alpha=0.5).pl.scatter(xs
4000 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 27 2b t0[:,0],xst0[:,1],c=ys,marker='+
4020 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 0a 70 ',label='Transp.samples',s=30).p
4040 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 65 67 l.title('Interp.samples').pl.leg
4060 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 0a 0a end(loc=0)..pl.subplot(2,3,2)...
4080 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 2c pl.scatter(xt[:,0],xt[:,1],c=yt,
40a0 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 73 marker='o',label='Target.samples
40c0 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 2c 30 ',alpha=0.5).pl.scatter(xsts[:,0
40e0 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 62 65 ],xsts[:,1],c=ys,marker='+',labe
4100 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 74 6c l='Transp.samples',s=30).pl.titl
4120 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 70 6c e('Interp.samples.Sinkhorn')..pl
4140 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 5b 3a .subplot(2,3,3)..pl.scatter(xt[:
4160 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
4180 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 70 6c l='Target.samples',alpha=0.5).pl
41a0 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 3d 79 .scatter(xstg[:,0],xstg[:,1],c=y
41c0 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 6c s,marker='+',label='Transp.sampl
41e0 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 6c es',s=30).pl.title('Interp.sampl
4200 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 6a 7b 82 49 d4 40 d8 es.Grouplasso')PK........j{.I.@.
4220 69 2e 05 00 00 2e 05 00 00 20 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f i............auto_examples/demo_
4240 4f 54 5f 31 44 5f 74 65 73 74 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 OT_1D_test.py#.-*-.coding:.utf-8
4260 20 2d 2a 2d 0a 22 22 22 0a 44 65 6d 6f 20 66 6f 72 20 31 44 20 6f 70 74 69 6d 61 6c 20 74 72 61 .-*-.""".Demo.for.1D.optimal.tra
4280 6e 73 70 6f 72 74 0a 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 nsport..@author:.rflamary."""..i
42a0 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
42c0 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f lib.pylab.as.pl.import.ot.from.o
42e0 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 t.datasets.import.get_1D_gauss.a
4300 73 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 3d 31 30 30 20 s.gauss...#%%.parameters..n=100.
4320 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 3d 6e 70 2e #.nb.bins..#.bin.positions.x=np.
4340 61 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 23 20 47 61 arange(n,dtype=np.float64)..#.Ga
4360 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 61 3d 67 61 75 73 73 28 6e 2c 6d ussian.distributions.a=gauss(n,m
4380 3d 6e 2a 2e 32 2c 73 3d 35 29 20 23 20 6d 3d 20 6d 65 61 6e 2c 20 73 3d 20 73 74 64 0a 62 3d 67 =n*.2,s=5).#.m=.mean,.s=.std.b=g
43a0 61 75 73 73 28 6e 2c 6d 3d 6e 2a 2e 36 2c 73 3d 31 30 29 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 auss(n,m=n*.6,s=10)..#.loss.matr
43c0 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 2c 78 2e ix.M=ot.dist(x.reshape((n,1)),x.
43e0 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 0a 23 25 25 20 reshape((n,1))).M/=M.max()..#%%.
4400 70 6c 6f 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 plot.the.distributions..pl.figur
4420 65 28 31 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 61 2c 27 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 e(1).pl.plot(x,a,'b',label='Sour
4440 63 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 2c 62 2c 27 72 ce.distribution').pl.plot(x,b,'r
4460 27 2c 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 27 29 0a 70 ',label='Target.distribution').p
4480 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 23 25 25 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f l.legend()..#%%.plot.distributio
44a0 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 ns.and.loss.matrix..pl.figure(2)
44c0 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 4d 2c 27 43 6f 73 74 20 .ot.plot.plot1D_mat(a,b,M,'Cost.
44e0 6d 61 74 72 69 78 20 4d 27 29 0a 0a 23 25 25 20 45 4d 44 0a 0a 47 30 3d 6f 74 2e 65 6d 64 28 61 matrix.M')..#%%.EMD..G0=ot.emd(a
4500 2c 62 2c 4d 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 74 ,b,M)..pl.figure(3).ot.plot.plot
4520 31 44 5f 6d 61 74 28 61 2c 62 2c 47 30 2c 27 4f 54 20 6d 61 74 72 69 78 20 47 30 27 29 0a 0a 23 1D_mat(a,b,G0,'OT.matrix.G0')..#
4540 25 25 20 53 69 6e 6b 68 6f 72 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 33 0a 47 73 3d 6f 74 2e 73 69 %%.Sinkhorn..lambd=1e-3.Gs=ot.si
4560 6e 6b 68 6f 72 6e 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 nkhorn(a,b,M,lambd,verbose=True)
4580 0a 0a 70 6c 2e 66 69 67 75 72 65 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 ..pl.figure(4).ot.plot.plot1D_ma
45a0 74 28 61 2c 62 2c 47 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 0a t(a,b,Gs,'OT.matrix.Sinkhorn')..
45c0 23 25 25 20 53 69 6e 6b 68 6f 72 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 34 0a 47 73 73 2c 6c 6f 67 #%%.Sinkhorn..lambd=1e-4.Gss,log
45e0 3d 6f 74 2e 62 72 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 =ot.bregman.sinkhorn_stabilized(
4600 61 2c 62 2c 4d 2c 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 a,b,M,lambd,verbose=True,log=Tru
4620 65 29 0a 47 73 73 32 2c 6c 6f 67 32 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e e).Gss2,log2=ot.bregman.sinkhorn
4640 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 65 3d _stabilized(a,b,M,lambd,verbose=
4660 54 72 75 65 2c 6c 6f 67 3d 54 72 75 65 2c 77 61 72 6d 73 74 61 72 74 3d 6c 6f 67 5b 27 77 61 72 True,log=True,warmstart=log['war
4680 6d 73 74 61 72 74 27 5d 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 6f 74 2e 70 6c 6f 74 2e mstart'])..pl.figure(5).ot.plot.
46a0 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 73 2c 27 4f 54 20 6d 61 74 72 69 78 20 53 69 plot1D_mat(a,b,Gss,'OT.matrix.Si
46c0 6e 6b 68 6f 72 6e 20 73 74 61 62 69 6c 69 7a 65 64 27 29 0a 0a 23 25 25 20 53 69 6e 6b 68 6f 72 nkhorn.stabilized')..#%%.Sinkhor
46e0 6e 0a 0a 6c 61 6d 62 64 3d 31 65 2d 31 31 0a 47 73 73 3d 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 n..lambd=1e-11.Gss=ot.bregman.si
4700 6e 6b 68 6f 72 6e 5f 65 70 73 69 6c 6f 6e 5f 73 63 61 6c 69 6e 67 28 61 2c 62 2c 4d 2c 6c 61 6d nkhorn_epsilon_scaling(a,b,M,lam
4720 62 64 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 35 29 0a 6f bd,verbose=True)..pl.figure(5).o
4740 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 73 2c 27 4f 54 20 6d 61 t.plot.plot1D_mat(a,b,Gss,'OT.ma
4760 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 20 73 74 61 62 69 6c 69 7a 65 64 27 29 0a 50 4b 03 04 14 trix.Sinkhorn.stabilized').PK...
4780 00 00 00 00 00 97 7b 82 49 a5 25 9f a1 06 0a 00 00 06 0a 00 00 27 00 00 00 61 75 74 6f 5f 65 78 ......{.I.%..........'...auto_ex
47a0 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 73 2e 70 79 amples/plot_OTDA_color_images.py
47c0 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.-*-.""".====
47e0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
4800 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 ====================.OT.for.doma
4820 69 6e 20 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 in.adaptation.with.image.color.a
4840 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d daptation.[6].==================
4860 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
4880 3d 3d 3d 3d 3d 3d 0a 0a 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 61 70 61 64 ======..[6].Ferradans,.S.,.Papad
48a0 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e akis,.N.,.Peyre,.G.,.&.Aujol,.J.
48c0 20 46 2e 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 20 64 69 73 63 72 65 74 65 .F..(2014)..Regularized.discrete
48e0 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d 20 4a 6f 75 72 6e 61 6c .optimal.transport..SIAM.Journal
4900 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 20 31 38 35 33 .on.Imaging.Sciences,.7(3),.1853
4920 2d 31 38 38 32 2e 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 -1882.."""..import.numpy.as.np.i
4940 6d 70 6f 72 74 20 73 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 mport.scipy.ndimage.as.spi.impor
4960 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 t.matplotlib.pylab.as.pl.import.
4980 6f 74 0a 0a 0a 23 25 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 ot...#%%.Loading.images..I1=spi.
49a0 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e imread('../data/ocean_day.jpg').
49c0 61 73 74 79 70 65 28 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 astype(np.float64)/256.I2=spi.im
49e0 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 70 67 27 29 read('../data/ocean_sunset.jpg')
4a00 2e 61 73 74 79 70 65 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 .astype(np.float64)/256..#%%.Plo
4a20 74 20 69 6d 61 67 65 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 t.images..pl.figure(1)..pl.subpl
4a40 6f 74 28 31 2c 32 2c 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 ot(1,2,1).pl.imshow(I1).pl.title
4a60 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 2c 32 29 0a 70 ('Image.1')..pl.subplot(1,2,2).p
4a80 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 l.imshow(I2).pl.title('Image.2')
4aa0 0a 0a 70 6c 2e 73 68 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 ..pl.show()..#%%.Image.conversio
4ac0 6e 20 61 6e 64 20 64 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 n.and.dataset.generation..def.im
4ae0 32 6d 61 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 2mat(I):....."""Converts.and.ima
4b00 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 ge.to.matrix.(one.pixel.per.line
4b20 29 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 )""".....return.I.reshape((I.sha
4b40 70 65 5b 30 5d 2a 49 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 pe[0]*I.shape[1],I.shape[2]))..d
4b60 65 66 20 6d 61 74 32 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 ef.mat2im(X,shape):....."""Conve
4b80 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 22 22 22 rts.back.a.matrix.to.an.image"""
4ba0 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 0a 58 31 .....return.X.reshape(shape)..X1
4bc0 3d 69 6d 32 6d 61 74 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 =im2mat(I1).X2=im2mat(I2)..#.tra
4be0 69 6e 69 6e 67 20 73 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 ining.samples.nb=1000.idx1=np.ra
4c00 6e 64 6f 6d 2e 72 61 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 ndom.randint(X1.shape[0],size=(n
4c20 62 2c 29 29 0a 69 64 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 b,)).idx2=np.random.randint(X2.s
4c40 68 61 70 65 5b 30 5d 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 hape[0],size=(nb,))..xs=X1[idx1,
4c60 3a 5d 0a 78 74 3d 58 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 :].xt=X2[idx2,:]..#%%.Plot.image
4c80 20 64 69 73 74 72 69 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 .distributions...pl.figure(2,(10
4ca0 2c 35 29 29 0a 0a 70 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 ,5))..pl.subplot(1,2,1).pl.scatt
4cc0 65 72 28 78 73 5b 3a 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 er(xs[:,0],xs[:,2],c=xs).pl.axis
4ce0 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e ([0,1,0,1]).pl.xlabel('Red').pl.
4d00 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
4d20 27 29 0a 0a 70 6c 2e 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 ')..pl.subplot(1,2,2).#pl.imshow
4d40 28 49 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 32 5d 2c (I2).pl.scatter(xt[:,0],xt[:,2],
4d60 63 3d 78 74 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 62 c=xt).pl.axis([0,1,0,1]).pl.xlab
4d80 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 el('Red').pl.ylabel('Blue').pl.t
4da0 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 0a 0a 23 25 itle('Image.2')..pl.show()....#%
4dc0 25 20 64 6f 6d 61 69 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 %.domain.adaptation.between.imag
4de0 65 73 0a 0a 23 20 4c 50 20 70 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 4f 54 es..#.LP.problem.da_emd=ot.da.OT
4e00 44 41 28 29 20 20 20 20 20 23 20 69 6e 69 74 20 63 6c 61 73 73 0a 64 61 5f 65 6d 64 2e 66 69 74 DA().....#.init.class.da_emd.fit
4e20 28 78 73 2c 78 74 29 20 20 20 20 20 20 20 23 20 66 69 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e (xs,xt).......#.fit.distribution
4e40 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 6c 61 s...#.sinkhorn.regularization.la
4e60 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 73 69 mbd=1e-1.da_entrop=ot.da.OTDA_si
4e80 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 65 67 nkhorn().da_entrop.fit(xs,xt,reg
4ea0 3d 6c 61 6d 62 64 29 0a 0a 0a 0a 23 25 25 20 70 72 65 64 69 63 74 69 6f 6e 20 62 65 74 77 65 65 =lambd)....#%%.prediction.betwee
4ec0 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 70 72 n.images.(using.out.of.sample.pr
4ee0 65 64 69 63 74 69 6f 6e 20 61 73 20 69 6e 20 5b 36 5d 29 0a 0a 58 31 74 3d 64 61 5f 65 6d 64 2e ediction.as.in.[6])..X1t=da_emd.
4f00 70 72 65 64 69 63 74 28 58 31 29 0a 58 32 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 predict(X1).X2t=da_emd.predict(X
4f20 32 2c 2d 31 29 0a 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 2,-1)...X1te=da_entrop.predict(X
4f40 31 29 0a 58 32 74 65 3d 64 61 5f 65 6e 74 72 6f 70 2e 70 72 65 64 69 63 74 28 58 32 2c 2d 31 29 1).X2te=da_entrop.predict(X2,-1)
4f60 0a 0a 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e ...def.minmax(I):.....return.np.
4f80 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 78 69 6d 75 6d 28 49 2c 30 29 2c 31 29 0a 0a 49 31 74 3d minimum(np.maximum(I,0),1)..I1t=
4fa0 6d 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 49 32 74 minmax(mat2im(X1t,I1.shape)).I2t
4fc0 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 32 74 2c 49 32 2e 73 68 61 70 65 29 29 0a 0a 49 =minmax(mat2im(X2t,I2.shape))..I
4fe0 31 74 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 1te=minmax(mat2im(X1te,I1.shape)
5000 29 0a 49 32 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 32 74 65 2c 49 32 2e 73 68 61 ).I2te=minmax(mat2im(X2te,I2.sha
5020 70 65 29 29 0a 0a 23 25 25 20 70 6c 6f 74 20 61 6c 6c 20 69 6d 61 67 65 73 0a 0a 70 6c 2e 66 69 pe))..#%%.plot.all.images..pl.fi
5040 67 75 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 gure(2,(10,8))..pl.subplot(2,3,1
5060 29 0a 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 )..pl.imshow(I1).pl.title('Image
5080 20 31 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 .1')..pl.subplot(2,3,2).pl.imsho
50a0 77 28 49 31 74 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 27 29 w(I1t).pl.title('Image.1.Adapt')
50c0 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 33 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 ...pl.subplot(2,3,3).pl.imshow(I
50e0 31 74 65 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 20 28 72 65 1te).pl.title('Image.1.Adapt.(re
5100 67 29 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 0a 0a 70 6c 2e 69 6d 73 68 g)')..pl.subplot(2,3,4)..pl.imsh
5120 6f 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 ow(I2).pl.title('Image.2')..pl.s
5140 75 62 70 6c 6f 74 28 32 2c 33 2c 35 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 29 0a 70 6c 2e ubplot(2,3,5).pl.imshow(I2t).pl.
5160 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 title('Image.2.Adapt')...pl.subp
5180 6c 6f 74 28 32 2c 33 2c 36 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 74 65 29 0a 70 6c 2e 74 69 lot(2,3,6).pl.imshow(I2te).pl.ti
51a0 74 6c 65 28 27 49 6d 61 67 65 20 32 20 41 64 61 70 74 20 28 72 65 67 29 27 29 0a 0a 70 6c 2e 73 tle('Image.2.Adapt.(reg)')..pl.s
51c0 68 6f 77 28 29 0a 50 4b 03 04 14 00 00 00 00 00 97 7b 82 49 f7 ba 1e e3 6d 0d 00 00 6d 0d 00 00 how().PK.........{.I....m...m...
51e0 2f 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 6d 61 70 70 /...auto_examples/plot_OTDA_mapp
5200 69 6e 67 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 ing_color_images.py#.-*-.coding:
5220 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.-*-.""".=================
5240 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
5260 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
5280 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 77 69 74 ===.OT.for.domain.adaptation.wit
52a0 68 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 20 77 69 74 h.image.color.adaptation.[6].wit
52c0 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 3d 3d 3d h.mapping.estimation.[8].=======
52e0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
5300 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================================
5320 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e =============..[6].Ferradans,.S.
5340 2c 20 50 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 ,.Papadakis,.N.,.Peyre,.G.,.&.Au
5360 6a 6f 6c 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 0a 20 jol,.J..F..(2014)..Regularized..
5380 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 2e 20 53 ...discrete.optimal.transport..S
53a0 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 65 73 2c IAM.Journal.on.Imaging.Sciences,
53c0 20 37 28 33 29 2c 20 31 38 35 33 2d 31 38 38 32 2e 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c .7(3),.1853-1882..[8].M..Perrot,
53e0 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 .N..Courty,.R..Flamary,.A..Habra
5400 72 64 2c 20 22 4d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20 rd,."Mapping.estimation.for.....
5420 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 75 discrete.optimal.transport",.Neu
5440 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
5460 6d 73 20 28 4e 49 50 53 29 2c 20 32 30 31 36 2e 0a 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 ms.(NIPS),.2016..."""..import.nu
5480 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 65 20 61 mpy.as.np.import.scipy.ndimage.a
54a0 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 20 61 73 s.spi.import.matplotlib.pylab.as
54c0 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 6d 61 67 .pl.import.ot...#%%.Loading.imag
54e0 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 65 61 6e es..I1=spi.imread('../data/ocean
5500 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 2f 32 35 _day.jpg').astype(np.float64)/25
5520 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 6e 5f 73 6.I2=spi.imread('../data/ocean_s
5540 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 29 2f 32 unset.jpg').astype(np.float64)/2
5560 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 65 28 31 56..#%%.Plot.images..pl.figure(1
5580 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 77 28 49 )..pl.subplot(1,2,1).pl.imshow(I
55a0 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 62 70 6c 1).pl.title('Image.1')..pl.subpl
55c0 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 74 6c 65 ot(1,2,2).pl.imshow(I2).pl.title
55e0 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 6d 61 67 ('Image.2')..pl.show()..#%%.Imag
5600 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 72 61 74 e.conversion.and.dataset.generat
5620 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 6e 76 65 ion..def.im2mat(I):....."""Conve
5640 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 70 69 78 rts.and.image.to.matrix.(one.pix
5660 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 72 65 73 el.per.line)""".....return.I.res
5680 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 2e 73 68 hape((I.shape[0]*I.shape[1],I.sh
56a0 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 3a 0a 20 ape[2]))..def.mat2im(X,shape):..
56c0 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 ..."""Converts.back.a.matrix.to.
56e0 61 6e 20 69 6d 61 67 65 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 an.image""".....return.X.reshape
5700 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 6d 61 74 (shape)..X1=im2mat(I1).X2=im2mat
5720 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 30 30 30 (I2)..#.training.samples.nb=1000
5740 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 61 70 65 .idx1=np.random.randint(X1.shape
5760 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 6d 2e 72 [0],size=(nb,)).idx2=np.random.r
5780 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 29 0a 0a andint(X2.shape[0],size=(nb,))..
57a0 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 23 25 25 xs=X1[idx1,:].xt=X2[idx2,:]..#%%
57c0 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 6c 2e 66 .Plot.image.distributions...pl.f
57e0 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 2c 32 2c igure(2,(10,5))..pl.subplot(1,2,
5800 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 2c 63 3d 1).pl.scatter(xs[:,0],xs[:,2],c=
5820 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 62 65 6c xs).pl.axis([0,1,0,1]).pl.xlabel
5840 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 69 74 ('Red').pl.ylabel('Blue').pl.tit
5860 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 2c 32 29 le('Image.1')..pl.subplot(1,2,2)
5880 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 5b 3a 2c .#pl.imshow(I2).pl.scatter(xt[:,
58a0 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 2c 30 2c 0],xt[:,2],c=xt).pl.axis([0,1,0,
58c0 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 27 1]).pl.xlabel('Red').pl.ylabel('
58e0 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 6c 2e 73 Blue').pl.title('Image.2')..pl.s
5900 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 6e 20 62 how()....#%%.domain.adaptation.b
5920 65 74 77 65 65 6e 20 69 6d 61 67 65 73 0a 64 65 66 20 6d 69 6e 6d 61 78 28 49 29 3a 0a 20 20 20 etween.images.def.minmax(I):....
5940 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 28 49 2c .return.np.minimum(np.maximum(I,
5960 30 29 2c 31 29 0a 23 20 4c 50 20 70 72 6f 62 6c 65 6d 0a 64 61 5f 65 6d 64 3d 6f 74 2e 64 61 2e 0),1).#.LP.problem.da_emd=ot.da.
5980 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 5f 65 6d 64 2e 66 OTDA().....#.init.class.da_emd.f
59a0 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 72 69 62 75 74 69 it(xs,xt).......#.fit.distributi
59c0 6f 6e 73 0a 0a 58 31 74 3d 64 61 5f 65 6d 64 2e 70 72 65 64 69 63 74 28 58 31 29 20 20 23 20 6f ons..X1t=da_emd.predict(X1)..#.o
59e0 75 74 20 6f 66 20 73 61 6d 70 6c 65 0a 49 31 74 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 ut.of.sample.I1t=minmax(mat2im(X
5a00 31 74 2c 49 31 2e 73 68 61 70 65 29 29 0a 0a 23 20 73 69 6e 6b 68 6f 72 6e 20 72 65 67 75 6c 61 1t,I1.shape))..#.sinkhorn.regula
5a20 72 69 7a 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 61 5f 65 6e 74 72 6f 70 3d 6f 74 rization.lambd=1e-1.da_entrop=ot
5a40 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 5f 65 6e 74 72 6f 70 2e 66 69 .da.OTDA_sinkhorn().da_entrop.fi
5a60 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 0a 0a 58 31 74 65 3d 64 61 5f 65 6e 74 72 t(xs,xt,reg=lambd)..X1te=da_entr
5a80 6f 70 2e 70 72 65 64 69 63 74 28 58 31 29 0a 49 31 74 65 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 op.predict(X1).I1te=minmax(mat2i
5aa0 6d 28 58 31 74 65 2c 49 31 2e 73 68 61 70 65 29 29 0a 0a 23 20 6c 69 6e 65 61 72 20 6d 61 70 70 m(X1te,I1.shape))..#.linear.mapp
5ac0 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 0a 65 74 61 3d 31 65 2d 38 20 20 20 23 20 71 75 61 64 ing.estimation.eta=1e-8...#.quad
5ae0 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 67 72 65 73 73 ratic.regularization.for.regress
5b00 69 6f 6e 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 ion.mu=1e0.....#.weight.of.the.O
5b20 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 20 65 73 74 69 6d T.linear.term.bias=True..#.estim
5b40 61 74 65 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 ate.a.bias..ot_mapping=ot.da.OTD
5b60 41 5f 6d 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 A_mapping_linear().ot_mapping.fi
5b80 74 28 78 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 t(xs,xt,mu=mu,eta=eta,bias=bias,
5ba0 6e 75 6d 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 58 numItermax.=.20,verbose=True)..X
5bc0 31 74 6c 3d 6f 74 5f 6d 61 70 70 69 6e 67 2e 70 72 65 64 69 63 74 28 58 31 29 20 23 20 75 73 65 1tl=ot_mapping.predict(X1).#.use
5be0 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 0a 49 31 74 6c 3d 6d 69 6e 6d .the.estimated.mapping.I1tl=minm
5c00 61 78 28 6d 61 74 32 69 6d 28 58 31 74 6c 2c 49 31 2e 73 68 61 70 65 29 29 0a 0a 23 20 6e 6f 6e ax(mat2im(X1tl,I1.shape))..#.non
5c20 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 3d 31 65 linear.mapping.estimation.eta=1e
5c40 2d 32 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 6f 6e 20 -2...#.quadratic.regularization.
5c60 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 65 69 67 for.regression.mu=1e0.....#.weig
5c80 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 3d 46 61 ht.of.the.OT.linear.term.bias=Fa
5ca0 6c 73 65 20 20 23 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 lse..#.estimate.a.bias.sigma=1..
5cc0 20 20 23 20 73 69 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 ..#.sigma.bandwidth.fot.gaussian
5ce0 20 6b 65 72 6e 65 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 .kernel...ot_mapping_kernel=ot.d
5d00 61 2e 4f 54 44 41 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 a.OTDA_mapping_kernel().ot_mappi
5d20 6e 67 5f 6b 65 72 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 ng_kernel.fit(xs,xt,mu=mu,eta=et
5d40 61 2c 73 69 67 6d 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 a,sigma=sigma,bias=bias,numIterm
5d60 61 78 20 3d 20 31 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 58 31 74 6e 3d 6f 74 5f 6d ax.=.10,verbose=True)..X1tn=ot_m
5d80 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 70 72 65 64 69 63 74 28 58 31 29 20 23 20 75 73 65 20 apping_kernel.predict(X1).#.use.
5da0 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6d 61 70 70 69 6e 67 0a 49 31 74 6e 3d 6d 69 6e 6d 61 the.estimated.mapping.I1tn=minma
5dc0 78 28 6d 61 74 32 69 6d 28 58 31 74 6e 2c 49 31 2e 73 68 61 70 65 29 29 0a 23 25 25 20 70 6c 6f x(mat2im(X1tn,I1.shape)).#%%.plo
5de0 74 20 69 6d 61 67 65 73 0a 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 31 30 2c 38 29 29 0a 0a t.images...pl.figure(2,(10,8))..
5e00 70 6c 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 pl.subplot(2,3,1)..pl.imshow(I1)
5e20 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 .pl.title('Im..1')..pl.subplot(2
5e40 2c 33 2c 32 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,2)..pl.imshow(I2).pl.title('I
5e60 6d 2e 20 32 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 33 29 0a 70 6c 2e 69 6d m..2')...pl.subplot(2,3,3).pl.im
5e80 73 68 6f 77 28 49 31 74 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 49 6e 74 65 72 70 show(I1t).pl.title('Im..1.Interp
5ea0 20 4c 50 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 34 29 0a 70 6c 2e 69 6d 73 68 .LP')..pl.subplot(2,3,4).pl.imsh
5ec0 6f 77 28 49 31 74 65 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 49 6e 74 65 72 70 20 ow(I1te).pl.title('Im..1.Interp.
5ee0 45 6e 74 72 6f 70 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 35 29 0a 70 6c 2e Entrop')...pl.subplot(2,3,5).pl.
5f00 69 6d 73 68 6f 77 28 49 31 74 6c 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 20 4c 69 6e imshow(I1tl).pl.title('Im..1.Lin
5f20 65 61 72 20 6d 61 70 70 69 6e 67 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 36 29 ear.mapping')..pl.subplot(2,3,6)
5f40 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 74 6e 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 2e 20 31 .pl.imshow(I1tn).pl.title('Im..1
5f60 20 6e 6f 6e 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a .nonlinear.mapping')..pl.show().
5f80 50 4b 01 02 14 03 14 00 00 00 00 00 97 7b 82 49 e7 a1 46 a7 95 0c 00 00 95 0c 00 00 22 00 00 00 PK...........{.I..F........."...
5fa0 00 00 00 00 00 00 00 00 b4 81 00 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 ..............auto_examples/plot
5fc0 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 d9 7b 82 49 _OTDA_mapping.pyPK...........{.I
5fe0 f2 d2 41 6e 06 05 00 00 06 05 00 00 21 00 00 00 00 00 00 00 00 00 00 00 b4 81 d5 0c 00 00 61 75 ..An........!.................au
6000 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 70 74 69 6d 5f 4f 54 72 65 67 2e 70 79 50 to_examples/plot_optim_OTreg.pyP
6020 4b 01 02 14 03 14 00 00 00 00 00 97 7b 82 49 f2 c1 a7 29 f1 09 00 00 f1 09 00 00 22 00 00 00 00 K...........{.I...)........"....
6040 00 00 00 00 00 00 00 b4 81 1a 12 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f .............auto_examples/plot_
6060 4f 54 44 41 5f 63 6c 61 73 73 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 d7 7b 82 49 a6 OTDA_classes.pyPK...........{.I.
6080 c0 9c 1d 82 03 00 00 82 03 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 b4 81 4b 1c 00 00 61 75 74 .........................K...aut
60a0 6f 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 o_examples/plot_OT_1D.pyPK......
60c0 00 00 00 00 d9 7b 82 49 d8 dc 52 b3 62 0a 00 00 62 0a 00 00 23 00 00 00 00 00 00 00 00 00 00 00 .....{.I..R.b...b...#...........
60e0 b4 81 06 20 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 62 61 72 79 63 65 6e ......auto_examples/plot_barycen
6100 74 65 72 5f 31 44 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 6a 7b 82 49 25 c9 d6 13 1c 06 00 ter_1D.pyPK..........j{.I%......
6120 00 1c 06 00 00 28 00 00 00 00 00 00 00 00 00 00 00 b4 81 a9 2a 00 00 61 75 74 6f 5f 65 78 61 6d .....(..............*..auto_exam
6140 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 6c 61 72 67 65 2e 70 79 50 ples/demo_OT_2D_sampleslarge.pyP
6160 4b 01 02 14 03 14 00 00 00 00 00 d8 7b 82 49 97 6c c6 14 5a 06 00 00 5a 06 00 00 23 00 00 00 00 K...........{.I.l..Z...Z...#....
6180 00 00 00 00 00 00 00 b4 81 0b 31 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f ..........1..auto_examples/plot_
61a0 4f 54 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 97 7b 82 49 OT_2D_samples.pyPK...........{.I
61c0 ec af 42 31 2e 0a 00 00 2e 0a 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 b4 81 a6 37 00 00 61 75 ..B1.......................7..au
61e0 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 32 44 2e 70 79 50 4b 01 02 14 to_examples/plot_OTDA_2D.pyPK...
6200 03 14 00 00 00 00 00 6a 7b 82 49 d4 40 d8 69 2e 05 00 00 2e 05 00 00 20 00 00 00 00 00 00 00 00 .......j{.I.@.i.................
6220 00 00 00 b4 81 0f 42 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 31 ......B..auto_examples/demo_OT_1
6240 44 5f 74 65 73 74 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 97 7b 82 49 a5 25 9f a1 06 0a 00 D_test.pyPK...........{.I.%.....
6260 00 06 0a 00 00 27 00 00 00 00 00 00 00 00 00 00 00 b4 81 7b 47 00 00 61 75 74 6f 5f 65 78 61 6d .....'.............{G..auto_exam
6280 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b ples/plot_OTDA_color_images.pyPK
62a0 01 02 14 03 14 00 00 00 00 00 97 7b 82 49 f7 ba 1e e3 6d 0d 00 00 6d 0d 00 00 2f 00 00 00 00 00 ...........{.I....m...m.../.....
62c0 00 00 00 00 00 00 b4 81 c6 51 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f .........Q..auto_examples/plot_O
62e0 54 44 41 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b 05 06 00 TDA_mapping_color_images.pyPK...
6300 00 00 00 0b 00 0b 00 7b 03 00 00 80 5f 00 00 00 00 .......{...._....