ofs | hex dump | ascii |
---|
0000 | 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a 2f 8a 49 ca a0 04 00 00 a0 04 00 00 19 00 00 00 61 75 | PK...........J/.I.............au |
0020 | 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 57 44 41 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 | to_examples/plot_WDA.py#.-*-.cod |
0040 | 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ing:.utf-8.-*-.""".============= |
0060 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 57 61 73 73 65 72 73 74 65 69 6e | ====================.Wasserstein |
0080 | 20 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 41 6e 61 6c 79 73 69 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d | .Discriminant.Analysis.========= |
00a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 40 61 75 74 68 6f | ========================..@autho |
00c0 | 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 | r:.rflamary."""..import.numpy.as |
00e0 | 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 |
0100 | 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 65 74 73 20 69 6d 70 | l.import.ot.from.ot.datasets.imp |
0120 | 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 66 72 6f 6d 20 6f | ort.get_1D_gauss.as.gauss.from.o |
0140 | 74 2e 64 72 20 69 6d 70 6f 72 74 20 77 64 61 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 | t.dr.import.wda...#%%.parameters |
0160 | 0a 0a 6e 3d 31 30 30 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 | ..n=1000.#.nb.samples.in.source. |
0180 | 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 0a 6e 7a 3d 30 2e 32 0a 78 73 2c 79 73 | and.target.datasets.nz=0.2.xs,ys |
01a0 | 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 | =ot.datasets.get_data_classif('3 |
01c0 | 67 61 75 73 73 27 2c 6e 2c 6e 7a 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 | gauss',n,nz).xt,yt=ot.datasets.g |
01e0 | 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 27 2c 6e 2c 6e 7a 29 0a 0a | et_data_classif('3gauss',n,nz).. |
0200 | 6e 62 6e 6f 69 73 65 3d 38 0a 0a 78 73 3d 6e 70 2e 68 73 74 61 63 6b 28 28 78 73 2c 6e 70 2e 72 | nbnoise=8..xs=np.hstack((xs,np.r |
0220 | 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 6e 62 6e 6f 69 73 65 29 29 29 0a 78 74 3d 6e 70 2e 68 | andom.randn(n,nbnoise))).xt=np.h |
0240 | 73 74 61 63 6b 28 28 78 74 2c 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 6e 28 6e 2c 6e 62 6e 6f | stack((xt,np.random.randn(n,nbno |
0260 | 69 73 65 29 29 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 | ise)))..#%%.plot.samples..pl.fig |
0280 | 75 72 65 28 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 | ure(1)...pl.scatter(xt[:,0],xt[: |
02a0 | 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 | ,1],c=ys,marker='+',label='Sourc |
02c0 | 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 2e | e.samples').pl.legend(loc=0).pl. |
02e0 | 74 69 74 6c 65 28 27 44 69 73 63 72 69 6d 69 6e 61 6e 74 20 64 69 6d 65 6e 73 69 6f 6e 73 27 29 | title('Discriminant.dimensions') |
0300 | 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f | ...#%%.plot.distributions.and.lo |
0320 | 73 73 20 6d 61 74 72 69 78 0a 70 3d 32 0a 72 65 67 3d 31 0a 6b 3d 31 30 0a 6d 61 78 69 74 65 72 | ss.matrix.p=2.reg=1.k=10.maxiter |
0340 | 3d 31 30 30 0a 0a 50 2c 70 72 6f 6a 20 3d 20 77 64 61 28 78 73 2c 79 73 2c 70 2c 72 65 67 2c 6b | =100..P,proj.=.wda(xs,ys,p,reg,k |
0360 | 2c 6d 61 78 69 74 65 72 3d 6d 61 78 69 74 65 72 29 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 | ,maxiter=maxiter)..#%%.plot.samp |
0380 | 6c 65 73 0a 0a 78 73 70 3d 70 72 6f 6a 28 78 73 29 0a 78 74 70 3d 70 72 6f 6a 28 78 74 29 0a 0a | les..xsp=proj(xs).xtp=proj(xt).. |
03a0 | 70 6c 2e 66 69 67 75 72 65 28 31 2c 28 31 30 2c 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 | pl.figure(1,(10,5))..pl.subplot( |
03c0 | 31 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 70 5b 3a 2c 30 5d 2c 78 73 70 5b 3a | 1,2,1).pl.scatter(xsp[:,0],xsp[: |
03e0 | 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 50 72 6f 6a 65 | ,1],c=ys,marker='+',label='Proje |
0400 | 63 74 65 64 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a | cted.samples').pl.legend(loc=0). |
0420 | 70 6c 2e 74 69 74 6c 65 28 27 50 72 6f 6a 65 63 74 65 64 20 74 72 61 69 6e 69 6e 67 20 73 61 6d | pl.title('Projected.training.sam |
0440 | 70 6c 65 73 27 29 0a 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 0a 70 6c 2e 73 63 | ples')...pl.subplot(1,2,2).pl.sc |
0460 | 61 74 74 65 72 28 78 74 70 5b 3a 2c 30 5d 2c 78 74 70 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 | atter(xtp[:,0],xtp[:,1],c=ys,mar |
0480 | 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 50 72 6f 6a 65 63 74 65 64 20 73 61 6d 70 6c 65 73 | ker='+',label='Projected.samples |
04a0 | 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 50 72 | ').pl.legend(loc=0).pl.title('Pr |
04c0 | 6f 6a 65 63 74 65 64 20 74 65 73 74 20 73 61 6d 70 6c 65 73 27 29 0a 50 4b 03 04 14 00 00 00 00 | ojected.test.samples').PK....... |
04e0 | 00 a9 83 e3 4a e7 a1 46 a7 95 0c 00 00 95 0c 00 00 22 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c | ....J..F........."...auto_exampl |
0500 | 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 | es/plot_OTDA_mapping.py#.-*-.cod |
0520 | 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ing:.utf-8.-*-.""".============= |
0540 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
0560 | 3d 3d 0a 4f 54 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 20 64 6f 6d | ==.OT.mapping.estimation.for.dom |
0580 | 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 38 5d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ain.adaptation.[8].============= |
05a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
05c0 | 3d 3d 0a 0a 5b 38 5d 20 4d 2e 20 50 65 72 72 6f 74 2c 20 4e 2e 20 43 6f 75 72 74 79 2c 20 52 2e | ==..[8].M..Perrot,.N..Courty,.R. |
05e0 | 20 46 6c 61 6d 61 72 79 2c 20 41 2e 20 48 61 62 72 61 72 64 2c 20 22 4d 61 70 70 69 6e 67 20 65 | .Flamary,.A..Habrard,."Mapping.e |
0600 | 73 74 69 6d 61 74 69 6f 6e 20 66 6f 72 0a 20 20 20 20 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d | stimation.for.....discrete.optim |
0620 | 61 6c 20 74 72 61 6e 73 70 6f 72 74 22 2c 20 4e 65 75 72 61 6c 20 49 6e 66 6f 72 6d 61 74 69 6f | al.transport",.Neural.Informatio |
0640 | 6e 20 50 72 6f 63 65 73 73 69 6e 67 20 53 79 73 74 65 6d 73 20 28 4e 49 50 53 29 2c 20 32 30 31 | n.Processing.Systems.(NIPS),.201 |
0660 | 36 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 6d 70 6f 72 | 6.."""..import.numpy.as.np.impor |
0680 | 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. |
06a0 | 6f 74 0a 0a 0a 0a 23 25 25 20 64 61 74 61 73 65 74 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 6e 70 | ot....#%%.dataset.generation..np |
06c0 | 2e 72 61 6e 64 6f 6d 2e 73 65 65 64 28 30 29 20 23 20 6d 61 6b 65 73 20 65 78 61 6d 70 6c 65 20 | .random.seed(0).#.makes.example. |
06e0 | 72 65 70 72 6f 64 75 63 69 62 6c 65 0a 0a 6e 3d 31 30 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 | reproducible..n=100.#.nb.samples |
0700 | 20 69 6e 20 73 6f 75 72 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 61 74 61 73 65 74 73 0a 74 | .in.source.and.target.datasets.t |
0720 | 68 65 74 61 3d 32 2a 6e 70 2e 70 69 2f 32 30 0a 6e 7a 3d 30 2e 31 0a 78 73 2c 79 73 3d 6f 74 2e | heta=2*np.pi/20.nz=0.1.xs,ys=ot. |
0740 | 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 |
0760 | 72 6f 74 27 2c 6e 2c 6e 7a 3d 6e 7a 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e | rot',n,nz=nz).xt,yt=ot.datasets. |
0780 | 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 67 61 75 73 73 72 6f 74 27 2c 6e 2c 74 68 | get_data_classif('gaussrot',n,th |
07a0 | 65 74 61 3d 74 68 65 74 61 2c 6e 7a 3d 6e 7a 29 0a 0a 23 20 6f 6e 65 20 6f 66 20 74 68 65 20 74 | eta=theta,nz=nz)..#.one.of.the.t |
07c0 | 61 72 67 65 74 20 6d 6f 64 65 20 63 68 61 6e 67 65 73 20 69 74 73 20 76 61 72 69 61 6e 63 65 20 | arget.mode.changes.its.variance. |
07e0 | 28 6e 6f 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 29 0a 78 74 5b 79 74 3d 3d 32 5d 2a 3d 33 | (no.linear.mapping).xt[yt==2]*=3 |
0800 | 0a 78 74 3d 78 74 2b 34 0a 0a 0a 23 25 25 20 70 6c 6f 74 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e | .xt=xt+4...#%%.plot.samples..pl. |
0820 | 66 69 67 75 72 65 28 31 2c 28 38 2c 35 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 0a 70 6c 2e 73 63 61 | figure(1,(8,5)).pl.clf()..pl.sca |
0840 | 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 | tter(xs[:,0],xs[:,1],c=ys,marker |
0860 | 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e | ='+',label='Source.samples').pl. |
0880 | 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 | scatter(xt[:,0],xt[:,1],c=yt,mar |
08a0 | 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a | ker='o',label='Target.samples'). |
08c0 | 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 | .pl.legend(loc=0).pl.title('Sour |
08e0 | 63 65 20 61 6e 64 20 74 61 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 0a | ce.and.target.distributions')... |
0900 | 0a 23 25 25 20 4f 54 20 6c 69 6e 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f | .#%%.OT.linear.mapping.estimatio |
0920 | 6e 0a 0a 65 74 61 3d 31 65 2d 38 20 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 | n..eta=1e-8...#.quadratic.regula |
0940 | 72 69 7a 61 74 69 6f 6e 20 66 6f 72 20 72 65 67 72 65 73 73 69 6f 6e 0a 6d 75 3d 31 65 30 20 20 | rization.for.regression.mu=1e0.. |
0960 | 20 20 20 23 20 77 65 69 67 68 74 20 6f 66 20 74 68 65 20 4f 54 20 6c 69 6e 65 61 72 20 74 65 72 | ...#.weight.of.the.OT.linear.ter |
0980 | 6d 0a 62 69 61 73 3d 54 72 75 65 20 20 23 20 65 73 74 69 6d 61 74 65 20 61 20 62 69 61 73 0a 0a | m.bias=True..#.estimate.a.bias.. |
09a0 | 6f 74 5f 6d 61 70 70 69 6e 67 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 6c 69 | ot_mapping=ot.da.OTDA_mapping_li |
09c0 | 6e 65 61 72 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 2e 66 69 74 28 78 73 2c 78 74 2c 6d 75 3d 6d | near().ot_mapping.fit(xs,xt,mu=m |
09e0 | 75 2c 65 74 61 3d 65 74 61 2c 62 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d | u,eta=eta,bias=bias,numItermax.= |
0a00 | 20 32 30 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 78 73 74 3d 6f 74 5f 6d 61 70 70 69 6e | .20,verbose=True)..xst=ot_mappin |
0a20 | 67 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d 61 74 65 | g.predict(xs).#.use.the.estimate |
0a40 | 64 20 6d 61 70 70 69 6e 67 0a 78 73 74 30 3d 6f 74 5f 6d 61 70 70 69 6e 67 2e 69 6e 74 65 72 70 | d.mapping.xst0=ot_mapping.interp |
0a60 | 28 29 20 20 20 23 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 | ()...#.use.barycentric.mapping.. |
0a80 | 0a 70 6c 2e 66 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 | .pl.figure(2,(10,7)).pl.clf().pl |
0aa0 | 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c | .subplot(2,2,1).pl.scatter(xt[:, |
0ac0 | 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 |
0ae0 | 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 33 29 0a 70 6c 2e 73 | ='Target.samples',alpha=.3).pl.s |
0b00 | 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c | catter(xst0[:,0],xst0[:,1],c=ys, |
0b20 | 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 | marker='+',label='barycentric.ma |
0b40 | 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 62 61 72 79 63 65 6e 74 72 69 63 20 6d 61 | pping').pl.title("barycentric.ma |
0b60 | 70 70 69 6e 67 22 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e 73 63 | pping")..pl.subplot(2,2,2).pl.sc |
0b80 | 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 |
0ba0 | 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 70 | r='o',label='Target.samples',alp |
0bc0 | 68 61 3d 2e 33 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 5b 3a 2c 30 5d 2c 78 73 74 5b 3a | ha=.3).pl.scatter(xst[:,0],xst[: |
0be0 | 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 65 61 72 6e | ,1],c=ys,marker='+',label='Learn |
0c00 | 65 64 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 4c 65 61 72 6e 65 64 20 6d | ed.mapping').pl.title("Learned.m |
0c20 | 61 70 70 69 6e 67 22 29 0a 0a 0a 0a 23 25 25 20 4b 65 72 6e 65 6c 20 6d 61 70 70 69 6e 67 20 65 | apping")....#%%.Kernel.mapping.e |
0c40 | 73 74 69 6d 61 74 69 6f 6e 0a 0a 65 74 61 3d 31 65 2d 35 20 20 20 23 20 71 75 61 64 72 61 74 69 | stimation..eta=1e-5...#.quadrati |
0c60 | 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 0a | c.regularization.for.regression. |
0c80 | 6d 75 3d 31 65 2d 31 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=1e-1.....#.weight.of.the.OT.l |
0ca0 | 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 |
0cc0 | 20 61 20 62 69 61 73 0a 73 69 67 6d 61 3d 31 20 20 20 20 23 20 73 69 67 6d 61 20 62 61 6e 64 77 | .a.bias.sigma=1....#.sigma.bandw |
0ce0 | 69 64 74 68 20 66 6f 74 20 67 61 75 73 73 69 61 6e 20 6b 65 72 6e 65 6c 0a 0a 0a 6f 74 5f 6d 61 | idth.fot.gaussian.kernel...ot_ma |
0d00 | 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f | pping_kernel=ot.da.OTDA_mapping_ |
0d20 | 6b 65 72 6e 65 6c 28 29 0a 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 72 6e 65 6c 2e 66 69 74 28 78 | kernel().ot_mapping_kernel.fit(x |
0d40 | 73 2c 78 74 2c 6d 75 3d 6d 75 2c 65 74 61 3d 65 74 61 2c 73 69 67 6d 61 3d 73 69 67 6d 61 2c 62 | s,xt,mu=mu,eta=eta,sigma=sigma,b |
0d60 | 69 61 73 3d 62 69 61 73 2c 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 2c 76 65 72 62 6f 73 65 | ias=bias,numItermax.=.10,verbose |
0d80 | 3d 54 72 75 65 29 0a 0a 78 73 74 5f 6b 65 72 6e 65 6c 3d 6f 74 5f 6d 61 70 70 69 6e 67 5f 6b 65 | =True)..xst_kernel=ot_mapping_ke |
0da0 | 72 6e 65 6c 2e 70 72 65 64 69 63 74 28 78 73 29 20 23 20 75 73 65 20 74 68 65 20 65 73 74 69 6d | rnel.predict(xs).#.use.the.estim |
0dc0 | 61 74 65 64 20 6d 61 70 70 69 6e 67 0a 78 73 74 30 5f 6b 65 72 6e 65 6c 3d 6f 74 5f 6d 61 70 70 | ated.mapping.xst0_kernel=ot_mapp |
0de0 | 69 6e 67 5f 6b 65 72 6e 65 6c 2e 69 6e 74 65 72 70 28 29 20 20 20 23 20 75 73 65 20 62 61 72 79 | ing_kernel.interp()...#.use.bary |
0e00 | 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 0a 0a 0a 23 25 25 20 50 6c 6f 74 74 69 6e 67 20 74 | centric.mapping...#%%.Plotting.t |
0e20 | 68 65 20 6d 61 70 70 65 64 20 73 61 6d 70 6c 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 2c 28 | he.mapped.samples..pl.figure(2,( |
0e40 | 31 30 2c 37 29 29 0a 70 6c 2e 63 6c 66 28 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 | 10,7)).pl.clf().pl.subplot(2,2,1 |
0e60 | 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 |
0e80 | 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 |
0ea0 | 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 30 5b 3a 2c | es',alpha=.2).pl.scatter(xst0[:, |
0ec0 | 30 5d 2c 78 73 74 30 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 | 0],xst0[:,1],c=ys,marker='+',lab |
0ee0 | 65 6c 3d 27 4d 61 70 70 65 64 20 73 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 74 | el='Mapped.source.samples').pl.t |
0f00 | 69 74 6c 65 28 22 42 61 72 79 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 22 29 0a 70 | itle("Bary..mapping.(linear)").p |
0f20 | 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c | l.legend(loc=0)..pl.subplot(2,2, |
0f40 | 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 3d | 2).pl.scatter(xt[:,0],xt[:,1],c= |
0f60 | 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 70 | yt,marker='o',label='Target.samp |
0f80 | 6c 65 73 27 2c 61 6c 70 68 61 3d 2e 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 73 74 5b 3a 2c | les',alpha=.2).pl.scatter(xst[:, |
0fa0 | 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 65 | 0],xst[:,1],c=ys,marker='+',labe |
0fc0 | 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 45 | l='Learned.mapping').pl.title("E |
0fe0 | 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 20 28 6c 69 6e 65 61 72 29 22 29 0a 0a 70 6c 2e 73 75 62 | stim..mapping.(linear)")..pl.sub |
1000 | 70 6c 6f 74 28 32 2c 32 2c 33 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,3).pl.scatter(xt[:,0],x |
1020 | 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 |
1040 | 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 |
1060 | 65 72 28 78 73 74 30 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 30 5f 6b 65 72 6e 65 6c 5b | er(xst0_kernel[:,0],xst0_kernel[ |
1080 | 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 62 61 72 79 | :,1],c=ys,marker='+',label='bary |
10a0 | 63 65 6e 74 72 69 63 20 6d 61 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 42 61 72 79 | centric.mapping').pl.title("Bary |
10c0 | 2e 20 6d 61 70 70 69 6e 67 20 28 6b 65 72 6e 65 6c 29 22 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 | ..mapping.(kernel)")..pl.subplot |
10e0 | 28 32 2c 32 2c 34 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 | (2,2,4).pl.scatter(xt[:,0],xt[:, |
1100 | 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 | 1],c=yt,marker='o',label='Target |
1120 | 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 72 28 78 | .samples',alpha=.2).pl.scatter(x |
1140 | 73 74 5f 6b 65 72 6e 65 6c 5b 3a 2c 30 5d 2c 78 73 74 5f 6b 65 72 6e 65 6c 5b 3a 2c 31 5d 2c 63 | st_kernel[:,0],xst_kernel[:,1],c |
1160 | 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 4c 65 61 72 6e 65 64 20 6d 61 | =ys,marker='+',label='Learned.ma |
1180 | 70 70 69 6e 67 27 29 0a 70 6c 2e 74 69 74 6c 65 28 22 45 73 74 69 6d 2e 20 6d 61 70 70 69 6e 67 | pping').pl.title("Estim..mapping |
11a0 | 20 28 6b 65 72 6e 65 6c 29 22 29 0a 50 4b 03 04 14 00 00 00 00 00 aa 83 e3 4a 75 a6 3a ed 10 05 | .(kernel)").PK...........Ju.:... |
11c0 | 00 00 10 05 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 6f 70 74 | ......!...auto_examples/plot_opt |
11e0 | 69 6d 5f 4f 54 72 65 67 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d | im_OTreg.py#.-*-.coding:.utf-8.- |
1200 | 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | *-.""".========================= |
1220 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 65 67 75 6c 61 72 69 7a 65 64 20 4f 54 20 77 69 74 68 20 67 65 | =========.Regularized.OT.with.ge |
1240 | 6e 65 72 69 63 20 73 6f 6c 76 65 72 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | neric.solver.=================== |
1260 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 | ===============..."""..import.nu |
1280 | 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 |
12a0 | 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 | b.as.pl.import.ot....#%%.paramet |
12c0 | 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 6f 73 69 | ers..n=100.#.nb.bins..#.bin.posi |
12e0 | 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 66 6c 6f | tions.x=np.arange(n,dtype=np.flo |
1300 | 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 6e 73 0a | at64)..#.Gaussian.distributions. |
1320 | 61 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 3d 32 | a=ot.datasets.get_1D_gauss(n,m=2 |
1340 | 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 62 3d 6f 74 2e 64 61 | 0,s=5).#.m=.mean,.s=.std.b=ot.da |
1360 | 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 73 3d 31 30 29 | tasets.get_1D_gauss(n,m=60,s=10) |
1380 | 0a 0a 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 4d 3d 6f 74 2e 64 69 73 74 28 78 2e 72 65 73 68 | ..#.loss.matrix.M=ot.dist(x.resh |
13a0 | 61 70 65 28 28 6e 2c 31 29 29 2c 78 2e 72 65 73 68 61 70 65 28 28 6e 2c 31 29 29 29 0a 4d 2f 3d | ape((n,1)),x.reshape((n,1))).M/= |
13c0 | 4d 2e 6d 61 78 28 29 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 | M.max()..#%%.EMD..G0=ot.emd(a,b, |
13e0 | 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 31 44 5f | M)..pl.figure(3).ot.plot.plot1D_ |
1400 | 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 25 25 20 | mat(a,b,G0,'OT.matrix.G0')..#%%. |
1420 | 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d 20 72 65 67 75 | Example.with.Frobenius.norm.regu |
1440 | 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 30 2e 35 | larization..def.f(G):.return.0.5 |
1460 | 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 6e 20 | *np.sum(G**2).def.df(G):.return. |
1480 | 47 0a 0a 72 65 67 3d 31 65 2d 31 0a 0a 47 6c 32 3d 6f 74 2e 6f 70 74 69 6d 2e 63 67 28 61 2c 62 | G..reg=1e-1..Gl2=ot.optim.cg(a,b |
14a0 | 2c 4d 2c 72 65 67 2c 66 2c 64 66 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 | ,M,reg,f,df,verbose=True)..pl.fi |
14c0 | 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 |
14e0 | 6c 32 2c 27 4f 54 20 6d 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 0a 0a 23 25 25 20 45 | l2,'OT.matrix.Frob..reg')..#%%.E |
1500 | 78 61 6d 70 6c 65 20 77 69 74 68 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 | xample.with.entropic.regularizat |
1520 | 69 6f 6e 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 65 74 75 72 6e 20 6e 70 2e 73 75 6d 28 47 2a 6e | ion..def.f(G):.return.np.sum(G*n |
1540 | 70 2e 6c 6f 67 28 47 29 29 0a 64 65 66 20 64 66 28 47 29 3a 20 72 65 74 75 72 6e 20 6e 70 2e 6c | p.log(G)).def.df(G):.return.np.l |
1560 | 6f 67 28 47 29 2b 31 0a 0a 72 65 67 3d 31 65 2d 33 0a 0a 47 65 3d 6f 74 2e 6f 70 74 69 6d 2e 63 | og(G)+1..reg=1e-3..Ge=ot.optim.c |
1580 | 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 65 29 0a 0a | g(a,b,M,reg,f,df,verbose=True).. |
15a0 | 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 74 28 | pl.figure(4).ot.plot.plot1D_mat( |
15c0 | 61 2c 62 2c 47 65 2c 27 4f 54 20 6d 61 74 72 69 78 20 45 6e 74 72 6f 70 2e 20 72 65 67 27 29 0a | a,b,Ge,'OT.matrix.Entrop..reg'). |
15e0 | 0a 23 25 25 20 45 78 61 6d 70 6c 65 20 77 69 74 68 20 46 72 6f 62 65 6e 69 75 73 20 6e 6f 72 6d | .#%%.Example.with.Frobenius.norm |
1600 | 20 2b 20 65 6e 74 72 6f 70 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 77 69 74 68 20 | .+.entropic.regularization.with. |
1620 | 67 63 67 0a 0a 64 65 66 20 66 28 47 29 3a 20 72 65 74 75 72 6e 20 30 2e 35 2a 6e 70 2e 73 75 6d | gcg..def.f(G):.return.0.5*np.sum |
1640 | 28 47 2a 2a 32 29 0a 64 65 66 20 64 66 28 47 29 3a 20 72 65 74 75 72 6e 20 47 0a 0a 72 65 67 31 | (G**2).def.df(G):.return.G..reg1 |
1660 | 3d 31 65 2d 33 0a 72 65 67 32 3d 31 65 2d 31 0a 0a 47 65 6c 32 3d 6f 74 2e 6f 70 74 69 6d 2e 67 | =1e-3.reg2=1e-1..Gel2=ot.optim.g |
1680 | 63 67 28 61 2c 62 2c 4d 2c 72 65 67 31 2c 72 65 67 32 2c 66 2c 64 66 2c 76 65 72 62 6f 73 65 3d | cg(a,b,M,reg1,reg2,f,df,verbose= |
16a0 | 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 35 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 | True)..pl.figure(5).ot.plot.plot |
16c0 | 31 44 5f 6d 61 74 28 61 2c 62 2c 47 65 6c 32 2c 27 4f 54 20 65 6e 74 72 6f 70 69 63 20 2b 20 6d | 1D_mat(a,b,Gel2,'OT.entropic.+.m |
16e0 | 61 74 72 69 78 20 46 72 6f 62 2e 20 72 65 67 27 29 0a 70 6c 2e 73 68 6f 77 28 29 50 4b 03 04 14 | atrix.Frob..reg').pl.show()PK... |
1700 | 00 00 00 00 00 a9 83 e3 4a f2 c1 a7 29 f1 09 00 00 f1 09 00 00 22 00 00 00 61 75 74 6f 5f 65 78 | ........J...)........"...auto_ex |
1720 | 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6c 61 73 73 65 73 2e 70 79 23 20 2d 2a 2d | amples/plot_OTDA_classes.py#.-*- |
1740 | 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d | .coding:.utf-8.-*-.""".========= |
1760 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 | ===============.OT.for.domain.ad |
1780 | 61 70 74 61 74 69 6f 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | aptation.======================= |
17a0 | 3d 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 | =.."""..import.matplotlib.pylab. |
17c0 | 61 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 | as.pl.import.ot.....#%%.paramete |
17e0 | 72 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 | rs..n=150.#.nb.samples.in.source |
1800 | 20 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 | .and.target.datasets..xs,ys=ot.d |
1820 | 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f 63 6c 61 73 73 69 66 28 27 33 67 61 75 73 73 | atasets.get_data_classif('3gauss |
1840 | 27 2c 6e 29 0a 78 74 2c 79 74 3d 6f 74 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 64 61 74 61 5f | ',n).xt,yt=ot.datasets.get_data_ |
1860 | 63 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 | classif('3gauss2',n).....#%%.plo |
1880 | 74 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 | t.samples..pl.figure(1)..pl.subp |
18a0 | 6c 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 | lot(2,2,1).pl.scatter(xs[:,0],xs |
18c0 | 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 6f 75 | [:,1],c=ys,marker='+',label='Sou |
18e0 | 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 | rce.samples').pl.legend(loc=0).p |
1900 | 6c 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 | l.title('Source..distributions') |
1920 | 0a 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 | ..pl.subplot(2,2,2).pl.scatter(x |
1940 | 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c | t[:,0],xt[:,1],c=yt,marker='o',l |
1960 | 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 | abel='Target.samples').pl.legend |
1980 | 28 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 | (loc=0).pl.title('target..distri |
19a0 | 62 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 | butions')...#%%.OT.estimation..# |
19c0 | 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 44 41 28 29 20 | .LP.problem.da_emd=ot.da.OTDA(). |
19e0 | 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 28 78 73 2c 78 | ....#.init.class.da_emd.fit(xs,x |
1a00 | 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 73 0a 78 73 74 | t).......#.fit.distributions.xst |
1a20 | 30 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 | 0=da_emd.interp()....#.interpola |
1a40 | 74 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 | tion.of.source.samples...#.sinkh |
1a60 | 6f 72 6e 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 61 | orn.regularization.lambd=1e-1.da |
1a80 | 5f 65 6e 74 72 6f 70 3d 6f 74 2e 64 61 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 | _entrop=ot.da.OTDA_sinkhorn().da |
1aa0 | 5f 65 6e 74 72 6f 70 2e 66 69 74 28 78 73 2c 78 74 2c 72 65 67 3d 6c 61 6d 62 64 29 0a 78 73 74 | _entrop.fit(xs,xt,reg=lambd).xst |
1ac0 | 73 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 | s=da_entrop.interp()..#.non-conv |
1ae0 | 65 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 | ex.Group.lasso.regularization.re |
1b00 | 67 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 | g=1e-1.eta=1e0.da_lpl1=ot.da.OTD |
1b20 | 41 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 | A_lpl1().da_lpl1.fit(xs,ys,xt,re |
1b40 | 67 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 | g=reg,eta=eta).xstg=da_lpl1.inte |
1b60 | 72 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 | rp()...#.True.Group.lasso.regula |
1b80 | 72 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 | rization.reg=1e-1.eta=2e0.da_l1l |
1ba0 | 32 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 | 2=ot.da.OTDA_l1l2().da_l1l2.fit( |
1bc0 | 78 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 | xs,ys,xt,reg=reg,eta=eta,numIter |
1be0 | 6d 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 | max=20,verbose=True).xstgl=da_l1 |
1c00 | 6c 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 | l2.interp()...#%%.plot.interpola |
1c20 | 74 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 | ted.source.samples.pl.figure(4,( |
1c40 | 31 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 | 15,8))..param_img={'interpolatio |
1c60 | 6e 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 | n':'nearest','cmap':'jet'}..pl.s |
1c80 | 75 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 | ubplot(2,4,1).pl.imshow(da_emd.G |
1ca0 | 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 |
1cc0 | 78 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 | x')...pl.subplot(2,4,2).pl.imsho |
1ce0 | 77 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 | w(da_entrop.G,**param_img).pl.ti |
1d00 | 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 73 75 | tle('OT.matrix.sinkhorn')..pl.su |
1d20 | 62 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 | bplot(2,4,3).pl.imshow(da_lpl1.G |
1d40 | 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 |
1d60 | 78 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 | x.non-convex.Group.Lasso')..pl.s |
1d80 | 75 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 | ubplot(2,4,4).pl.imshow(da_l1l2. |
1da0 | 47 2c 2a 2a 70 61 72 61 6d 5f 69 6d 67 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 | G,**param_img).pl.title('OT.matr |
1dc0 | 69 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 | ix.Group.Lasso')...pl.subplot(2, |
1de0 | 34 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 | 4,5).pl.scatter(xt[:,0],xt[:,1], |
1e00 | 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 61 | c=yt,marker='o',label='Target.sa |
1e20 | 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 72 28 78 73 74 | mples',alpha=0.3).pl.scatter(xst |
1e40 | 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 27 | 0[:,0],xst0[:,1],c=ys,marker='+' |
1e60 | 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 6c | ,label='Transp.samples',s=30).pl |
1e80 | 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 65 | .title('Interp.samples').pl.lege |
1ea0 | 6e 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 | nd(loc=0)..pl.subplot(2,4,6).pl. |
1ec0 | 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 | scatter(xt[:,0],xt[:,1],c=yt,mar |
1ee0 | 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 | ker='o',label='Target.samples',a |
1f00 | 6c 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 | lpha=0.3).pl.scatter(xsts[:,0],x |
1f20 | 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 6c 3d 27 | sts[:,1],c=ys,marker='+',label=' |
1f40 | 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 65 28 27 | Transp.samples',s=30).pl.title(' |
1f60 | 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 2e 73 75 | Interp.samples.Sinkhorn')..pl.su |
1f80 | 62 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 | bplot(2,4,7).pl.scatter(xt[:,0], |
1fa0 | 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 | xt[:,1],c=yt,marker='o',label='T |
1fc0 | 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 6c 70 68 61 3d 30 2e 33 29 0a 70 6c 2e 73 63 61 | arget.samples',alpha=0.3).pl.sca |
1fe0 | 74 74 65 72 28 78 73 74 67 5b 3a 2c 30 5d 2c 78 73 74 67 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 | tter(xstg[:,0],xstg[:,1],c=ys,ma |
2000 | 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c | rker='+',label='Transp.samples', |
2020 | 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 6e | s=30).pl.title('Interp.samples.n |
2040 | 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 62 70 | on-convex.Group.Lasso')..pl.subp |
2060 | 6c 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 | lot(2,4,8).pl.scatter(xt[:,0],xt |
2080 | 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 |
20a0 | 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 74 | get.samples',alpha=0.3).pl.scatt |
20c0 | 65 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 | er(xstgl[:,0],xstgl[:,1],c=ys,ma |
20e0 | 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 54 72 61 6e 73 70 20 73 61 6d 70 6c 65 73 27 2c | rker='+',label='Transp.samples', |
2100 | 73 3d 33 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6e 74 65 72 70 20 73 61 6d 70 6c 65 73 20 47 | s=30).pl.title('Interp.samples.G |
2120 | 72 6f 75 70 20 4c 61 73 73 6f 27 29 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a 58 62 bb 42 8f 03 | roup.Lasso')PK...........JXb.B.. |
2140 | 00 00 8f 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 | ..........auto_examples/plot_OT_ |
2160 | 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 22 22 | 1D.py#.-*-.coding:.utf-8.-*-.""" |
2180 | 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 6f 70 74 69 6d 61 6c | .====================.1D.optimal |
21a0 | 20 74 72 61 6e 73 70 6f 72 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a | .transport.====================. |
21c0 | 0a 40 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e | .@author:.rflamary."""..import.n |
21e0 | 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c | umpy.as.np.import.matplotlib.pyl |
2200 | 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 61 74 61 73 | ab.as.pl.import.ot.from.ot.datas |
2220 | 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 61 75 73 73 | ets.import.get_1D_gauss.as.gauss |
2240 | 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 23 20 6e 62 20 62 69 | ...#%%.parameters..n=100.#.nb.bi |
2260 | 6e 73 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 | ns..#.bin.positions.x=np.arange( |
2280 | 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 75 73 73 69 61 6e 20 | n,dtype=np.float64)..#.Gaussian. |
22a0 | 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 3d 32 30 2c 73 3d 35 | distributions.a=gauss(n,m=20,s=5 |
22c0 | 29 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 | ).#.m=.mean,.s=.std.b=gauss(n,m= |
22e0 | 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 73 | 60,s=10)..#.loss.matrix.M=ot.dis |
2300 | 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 2c | t(x.reshape((n,1)),x.reshape((n, |
2320 | 31 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 | 1))).M/=M.max()..#%%.plot.the.di |
2340 | 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 70 6c 6f | stributions..pl.figure(1).pl.plo |
2360 | 74 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 | t(x,a,'b',label='Source.distribu |
2380 | 74 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 | tion').pl.plot(x,b,'r',label='Ta |
23a0 | 72 67 65 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a | rget.distribution').pl.legend(). |
23c0 | 0a 23 25 25 20 70 6c 6f 74 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 | .#%%.plot.distributions.and.loss |
23e0 | 20 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 | .matrix..pl.figure(2).ot.plot.pl |
2400 | 6f 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 | ot1D_mat(a,b,M,'Cost.matrix.M'). |
2420 | 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 66 | .#%%.EMD..G0=ot.emd(a,b,M)..pl.f |
2440 | 69 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 | igure(3).ot.plot.plot1D_mat(a,b, |
2460 | 47 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 | G0,'OT.matrix.G0')..#%%.Sinkhorn |
2480 | 0a 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 | ..lambd=1e-3.Gs=ot.sinkhorn(a,b, |
24a0 | 4d 2c 6c 61 6d 62 64 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 29 0a 0a 70 6c 2e 66 69 67 75 72 65 | M,lambd,verbose=True)..pl.figure |
24c0 | 28 34 29 0a 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 31 44 5f 6d 61 74 28 61 2c 62 2c 47 73 2c 27 4f | (4).ot.plot.plot1D_mat(a,b,Gs,'O |
24e0 | 54 20 6d 61 74 72 69 78 20 53 69 6e 6b 68 6f 72 6e 27 29 0a 50 4b 03 04 14 00 00 00 00 00 32 82 | T.matrix.Sinkhorn').PK........2. |
2500 | e3 4a 58 1b a1 c7 97 10 00 00 97 10 00 00 1d 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f | .JX...............auto_examples/ |
2520 | 70 6c 6f 74 5f 4f 54 5f 63 6f 6e 76 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 | plot_OT_conv.py#.-*-.coding:.utf |
2540 | 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | -8.-*-.""".===================== |
2560 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 57 61 73 73 65 72 73 74 65 69 6e 20 62 61 72 79 63 65 6e | =========.1D.Wasserstein.barycen |
2580 | 74 65 72 20 64 65 6d 6f 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ter.demo.======================= |
25a0 | 3d 3d 3d 3d 3d 3d 3d 0a 0a 0a 40 61 75 74 68 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a | =======...@author:.rflamary.""". |
25c0 | 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 |
25e0 | 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 66 72 6f 6d | otlib.pylab.as.pl.import.ot.from |
2600 | 20 6d 70 6c 5f 74 6f 6f 6c 6b 69 74 73 2e 6d 70 6c 6f 74 33 64 20 69 6d 70 6f 72 74 20 41 78 65 | .mpl_toolkits.mplot3d.import.Axe |
2620 | 73 33 44 20 23 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 33 64 20 70 6c 6f 74 20 65 76 65 6e 20 | s3D.#necessary.for.3d.plot.even. |
2640 | 69 66 20 6e 6f 74 20 75 73 65 64 0a 69 6d 70 6f 72 74 20 73 63 69 70 79 20 61 73 20 73 70 0a 69 | if.not.used.import.scipy.as.sp.i |
2660 | 6d 70 6f 72 74 20 73 63 69 70 79 2e 73 69 67 6e 61 6c 20 61 73 20 73 70 73 0a 23 25 25 20 70 61 | mport.scipy.signal.as.sps.#%%.pa |
2680 | 72 61 6d 65 74 65 72 73 0a 0a 6e 3d 31 30 20 23 20 6e 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 | rameters..n=10.#.nb.bins..#.bin. |
26a0 | 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 70 65 3d 6e 70 | positions.x=np.arange(n,dtype=np |
26c0 | 2e 66 6c 6f 61 74 36 34 29 0a 0a 78 78 2c 79 79 3d 6e 70 2e 6d 65 73 68 67 72 69 64 28 78 2c 78 | .float64)..xx,yy=np.meshgrid(x,x |
26e0 | 29 0a 0a 0a 78 70 6f 73 3d 6e 70 2e 68 73 74 61 63 6b 28 28 78 78 2e 72 65 73 68 61 70 65 28 2d | )...xpos=np.hstack((xx.reshape(- |
2700 | 31 2c 31 29 2c 79 79 2e 72 65 73 68 61 70 65 28 2d 31 2c 31 29 29 29 0a 0a 4d 3d 6f 74 2e 64 69 | 1,1),yy.reshape(-1,1)))..M=ot.di |
2720 | 73 74 28 78 70 6f 73 29 0a 0a 0a 49 30 3d 28 28 78 78 2d 35 29 2a 2a 32 2b 28 79 79 2d 35 29 2a | st(xpos)...I0=((xx-5)**2+(yy-5)* |
2740 | 2a 32 3c 33 2a 2a 32 29 2a 31 2e 30 0a 49 31 3d 28 28 78 78 2d 37 29 2a 2a 32 2b 28 79 79 2d 37 | *2<3**2)*1.0.I1=((xx-7)**2+(yy-7 |
2760 | 29 2a 2a 32 3c 33 2a 2a 32 29 2a 31 2e 30 0a 0a 49 30 2f 3d 49 30 2e 73 75 6d 28 29 0a 49 31 2f | )**2<3**2)*1.0..I0/=I0.sum().I1/ |
2780 | 3d 49 31 2e 73 75 6d 28 29 0a 0a 69 30 3d 49 30 2e 72 61 76 65 6c 28 29 0a 69 31 3d 49 31 2e 72 | =I1.sum()..i0=I0.ravel().i1=I1.r |
27a0 | 61 76 65 6c 28 29 0a 0a 4d 3d 4d 5b 69 30 3e 30 2c 3a 5d 5b 3a 2c 69 31 3e 30 5d 2e 63 6f 70 79 | avel()..M=M[i0>0,:][:,i1>0].copy |
27c0 | 28 29 0a 69 30 3d 69 30 5b 69 30 3e 30 5d 0a 69 31 3d 69 31 5b 69 31 3e 30 5d 0a 49 74 6f 74 3d | ().i0=i0[i0>0].i1=i1[i1>0].Itot= |
27e0 | 6e 70 2e 63 6f 6e 63 61 74 65 6e 61 74 65 28 28 49 30 5b 3a 2c 3a 2c 6e 70 2e 6e 65 77 61 78 69 | np.concatenate((I0[:,:,np.newaxi |
2800 | 73 5d 2c 49 31 5b 3a 2c 3a 2c 6e 70 2e 6e 65 77 61 78 69 73 5d 29 2c 32 29 0a 0a 0a 23 25 25 20 | s],I1[:,:,np.newaxis]),2)...#%%. |
2820 | 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 |
2840 | 65 28 31 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 | e(1).pl.subplot(2,2,1).pl.imshow |
2860 | 28 49 30 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 | (I0).pl.subplot(2,2,2).pl.imshow |
2880 | 28 49 31 29 0a 0a 0a 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 63 6f 6d 70 75 74 61 74 69 6f | (I1)...#%%.barycenter.computatio |
28a0 | 6e 0a 0a 61 6c 70 68 61 3d 30 2e 35 20 23 20 30 3c 3d 61 6c 70 68 61 3c 3d 31 0a 77 65 69 67 68 | n..alpha=0.5.#.0<=alpha<=1.weigh |
28c0 | 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 0a 0a 0a 64 | ts=np.array([1-alpha,alpha])...d |
28e0 | 65 66 20 63 6f 6e 76 32 28 49 2c 6b 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 73 70 2e 6e 64 69 | ef.conv2(I,k):.....return.sp.ndi |
2900 | 6d 61 67 65 2e 63 6f 6e 76 6f 6c 76 65 31 64 28 73 70 2e 6e 64 69 6d 61 67 65 2e 63 6f 6e 76 6f | mage.convolve1d(sp.ndimage.convo |
2920 | 6c 76 65 31 64 28 49 2c 6b 2c 61 78 69 73 3d 31 29 2c 6b 2c 61 78 69 73 3d 30 29 0a 0a 64 65 66 | lve1d(I,k,axis=1),k,axis=0)..def |
2940 | 20 63 6f 6e 76 32 6e 28 49 2c 6b 29 3a 0a 20 20 20 20 72 65 73 3d 6e 70 2e 7a 65 72 6f 73 5f 6c | .conv2n(I,k):.....res=np.zeros_l |
2960 | 69 6b 65 28 49 29 0a 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 49 2e 73 68 61 70 | ike(I).....for.i.in.range(I.shap |
2980 | 65 5b 32 5d 29 3a 0a 20 20 20 20 20 20 20 20 72 65 73 5b 3a 2c 3a 2c 69 5d 3d 63 6f 6e 76 32 28 | e[2]):.........res[:,:,i]=conv2( |
29a0 | 49 5b 3a 2c 3a 2c 69 5d 2c 6b 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 0a 0a 0a 64 65 66 | I[:,:,i],k).....return.res...def |
29c0 | 20 67 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 67 2c 74 68 72 3d 31 65 2d 31 36 2c 77 6d 61 78 | .get_1Dkernel(reg,thr=1e-16,wmax |
29e0 | 3d 31 30 32 34 29 3a 0a 20 20 20 20 77 3d 6d 61 78 28 6d 69 6e 28 77 6d 61 78 2c 32 2a 69 6e 74 | =1024):.....w=max(min(wmax,2*int |
2a00 | 28 28 2d 6e 70 2e 6c 6f 67 28 74 68 72 29 2a 72 65 67 29 2a 2a 28 2e 35 29 29 29 2c 33 29 0a 20 | ((-np.log(thr)*reg)**(.5))),3).. |
2a20 | 20 20 20 78 3d 6e 70 2e 61 72 61 6e 67 65 28 77 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 | ...x=np.arange(w,dtype=np.float6 |
2a40 | 34 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6e 70 2e 65 78 70 28 2d 28 28 78 2d 77 2f 32 29 2a 2a | 4).....return.np.exp(-((x-w/2)** |
2a60 | 32 29 2f 72 65 67 29 0a 20 20 20 20 0a 74 68 72 3d 31 65 2d 31 36 0a 72 65 67 3d 31 65 30 0a 0a | 2)/reg)......thr=1e-16.reg=1e0.. |
2a80 | 6b 3d 67 65 74 5f 31 44 6b 65 72 6e 65 6c 28 72 65 67 29 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 | k=get_1Dkernel(reg).pl.figure(2) |
2aa0 | 0a 70 6c 2e 70 6c 6f 74 28 6b 29 0a 0a 49 30 35 3d 63 6f 6e 76 32 28 49 30 2c 6b 29 0a 0a 70 6c | .pl.plot(k)..I05=conv2(I0,k)..pl |
2ac0 | 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e | .figure(1).pl.subplot(2,2,1).pl. |
2ae0 | 69 6d 73 68 6f 77 28 49 30 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 6c 2e | imshow(I0).pl.subplot(2,2,2).pl. |
2b00 | 69 6d 73 68 6f 77 28 49 30 35 29 0a 0a 23 25 25 0a 0a 47 3d 6f 74 2e 65 6d 64 28 69 30 2c 69 31 | imshow(I05)..#%%..G=ot.emd(i0,i1 |
2b20 | 2c 4d 29 0a 72 30 3d 6e 70 2e 73 75 6d 28 4d 2a 47 29 0a 0a 72 65 67 3d 31 65 2d 31 0a 47 73 3d | ,M).r0=np.sum(M*G)..reg=1e-1.Gs= |
2b40 | 6f 74 2e 62 72 65 67 6d 61 6e 2e 73 69 6e 6b 68 6f 72 6e 5f 6b 6e 6f 70 70 28 69 30 2c 69 31 2c | ot.bregman.sinkhorn_knopp(i0,i1, |
2b60 | 4d 2c 72 65 67 3d 72 65 67 29 0a 72 73 3d 6e 70 2e 73 75 6d 28 4d 2a 47 73 29 0a 0a 23 25 25 0a | M,reg=reg).rs=np.sum(M*Gs)..#%%. |
2b80 | 0a 64 65 66 20 6d 79 6c 6f 67 28 75 29 3a 0a 20 20 20 20 74 6d 70 3d 6e 70 2e 6c 6f 67 28 75 29 | .def.mylog(u):.....tmp=np.log(u) |
2ba0 | 0a 20 20 20 20 74 6d 70 5b 6e 70 2e 69 73 6e 61 6e 28 74 6d 70 29 5d 3d 30 0a 20 20 20 20 72 65 | .....tmp[np.isnan(tmp)]=0.....re |
2bc0 | 74 75 72 6e 20 74 6d 70 0a 0a 64 65 66 20 73 69 6e 6b 68 6f 72 6e 5f 63 6f 6e 76 28 61 2c 62 2c | turn.tmp..def.sinkhorn_conv(a,b, |
2be0 | 20 72 65 67 2c 20 6e 75 6d 49 74 65 72 6d 61 78 20 3d 20 31 30 30 30 2c 20 73 74 6f 70 54 68 72 | .reg,.numItermax.=.1000,.stopThr |
2c00 | 3d 31 65 2d 39 2c 20 76 65 72 62 6f 73 65 3d 46 61 6c 73 65 2c 20 6c 6f 67 3d 46 61 6c 73 65 2c | =1e-9,.verbose=False,.log=False, |
2c20 | 2a 2a 6b 77 61 72 67 73 29 3a 0a 0a 0a 20 20 20 20 61 3d 6e 70 2e 61 73 61 72 72 61 79 28 61 2c | **kwargs):.......a=np.asarray(a, |
2c40 | 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 20 20 20 20 62 3d 6e 70 2e 61 73 61 72 72 | dtype=np.float64).....b=np.asarr |
2c60 | 61 79 28 62 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 0a 20 20 20 20 20 20 20 20 0a | ay(b,dtype=np.float64).......... |
2c80 | 20 20 20 20 0a 20 20 20 20 69 66 20 6c 65 6e 28 62 2e 73 68 61 70 65 29 3e 32 3a 0a 20 20 20 20 | .........if.len(b.shape)>2:..... |
2ca0 | 20 20 20 20 6e 62 62 3d 62 2e 73 68 61 70 65 5b 32 5d 0a 20 20 20 20 20 20 20 20 61 3d 61 5b 3a | ....nbb=b.shape[2].........a=a[: |
2cc0 | 2c 3a 2c 6e 70 2e 6e 65 77 61 78 69 73 5d 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 | ,:,np.newaxis].....else:........ |
2ce0 | 20 6e 62 62 3d 30 0a 20 20 20 20 0a 0a 20 20 20 20 69 66 20 6c 6f 67 3a 0a 20 20 20 20 20 20 20 | .nbb=0...........if.log:........ |
2d00 | 20 6c 6f 67 3d 7b 27 65 72 72 27 3a 5b 5d 7d 0a 0a 20 20 20 20 23 20 77 65 20 61 73 73 75 6d 65 | .log={'err':[]}......#.we.assume |
2d20 | 20 74 68 61 74 20 6e 6f 20 64 69 73 74 61 6e 63 65 73 20 61 72 65 20 6e 75 6c 6c 20 65 78 63 65 | .that.no.distances.are.null.exce |
2d40 | 70 74 20 74 68 6f 73 65 20 6f 66 20 74 68 65 20 64 69 61 67 6f 6e 61 6c 20 6f 66 20 64 69 73 74 | pt.those.of.the.diagonal.of.dist |
2d60 | 61 6e 63 65 73 0a 20 20 20 20 69 66 20 6e 62 62 3a 0a 20 20 20 20 20 20 20 20 75 20 3d 20 6e 70 | ances.....if.nbb:.........u.=.np |
2d80 | 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 65 5b 31 5d 2c 6e 62 62 | .ones((a.shape[0],a.shape[1],nbb |
2da0 | 29 29 2f 28 6e 70 2e 70 72 6f 64 28 61 2e 73 68 61 70 65 5b 3a 32 5d 29 29 0a 20 20 20 20 20 20 | ))/(np.prod(a.shape[:2]))....... |
2dc0 | 20 20 76 20 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 | ..v.=.np.ones((a.shape[0],a.shap |
2de0 | 65 5b 31 5d 2c 6e 62 62 29 29 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 5d 29 | e[1],nbb))/(np.prod(b.shape[:2]) |
2e00 | 29 0a 20 20 20 20 20 20 20 20 61 30 3d 31 2e 30 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 | ).........a0=1.0/(np.prod(b.shap |
2e20 | 65 5b 3a 32 5d 29 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 75 20 3d 20 6e 70 | e[:2])).....else:.........u.=.np |
2e40 | 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 65 5b 31 5d 29 29 2f 28 | .ones((a.shape[0],a.shape[1]))/( |
2e60 | 6e 70 2e 70 72 6f 64 28 61 2e 73 68 61 70 65 5b 3a 32 5d 29 29 0a 20 20 20 20 20 20 20 20 76 20 | np.prod(a.shape[:2])).........v. |
2e80 | 3d 20 6e 70 2e 6f 6e 65 73 28 28 61 2e 73 68 61 70 65 5b 30 5d 2c 61 2e 73 68 61 70 65 5b 31 5d | =.np.ones((a.shape[0],a.shape[1] |
2ea0 | 29 29 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 5d 29 29 0a 20 20 20 20 20 20 | ))/(np.prod(b.shape[:2]))....... |
2ec0 | 20 20 61 30 3d 31 2e 30 2f 28 6e 70 2e 70 72 6f 64 28 62 2e 73 68 61 70 65 5b 3a 32 5d 29 29 0a | ..a0=1.0/(np.prod(b.shape[:2])). |
2ee0 | 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 6b 3d 67 65 74 5f 31 44 6b 65 | ......................k=get_1Dke |
2f00 | 72 6e 65 6c 28 72 65 67 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 6e 62 62 3a 0a 20 20 20 20 20 | rnel(reg)..........if.nbb:...... |
2f20 | 20 20 20 4b 3d 6c 61 6d 62 64 61 20 49 3a 20 63 6f 6e 76 32 6e 28 49 2c 6b 29 0a 20 20 20 20 65 | ...K=lambda.I:.conv2n(I,k).....e |
2f40 | 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 4b 3d 6c 61 6d 62 64 61 20 49 3a 20 63 6f 6e 76 32 28 49 | lse:.........K=lambda.I:.conv2(I |
2f60 | 2c 6b 29 0a 0a 20 20 20 20 63 70 74 20 3d 20 30 0a 20 20 20 20 65 72 72 3d 31 0a 20 20 20 20 77 | ,k)......cpt.=.0.....err=1.....w |
2f80 | 68 69 6c 65 20 28 65 72 72 3e 73 74 6f 70 54 68 72 20 61 6e 64 20 63 70 74 3c 6e 75 6d 49 74 65 | hile.(err>stopThr.and.cpt<numIte |
2fa0 | 72 6d 61 78 29 3a 0a 20 20 20 20 20 20 20 20 75 70 72 65 76 20 3d 20 75 0a 20 20 20 20 20 20 20 | rmax):.........uprev.=.u........ |
2fc0 | 20 76 70 72 65 76 20 3d 20 76 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 76 20 3d 20 | .vprev.=.v..................v.=. |
2fe0 | 6e 70 2e 64 69 76 69 64 65 28 62 2c 20 4b 28 75 29 29 0a 20 20 20 20 20 20 20 20 75 20 3d 20 6e | np.divide(b,.K(u)).........u.=.n |
3000 | 70 2e 64 69 76 69 64 65 28 61 2c 20 4b 28 76 29 29 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e | p.divide(a,.K(v))..........if.(n |
3020 | 70 2e 61 6e 79 28 6e 70 2e 69 73 6e 61 6e 28 75 29 29 20 6f 72 20 6e 70 2e 61 6e 79 28 6e 70 2e | p.any(np.isnan(u)).or.np.any(np. |
3040 | 69 73 6e 61 6e 28 76 29 29 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 20 6e 70 2e 61 6e 79 | isnan(v))..............or.np.any |
3060 | 28 6e 70 2e 69 73 69 6e 66 28 75 29 29 20 6f 72 20 6e 70 2e 61 6e 79 28 6e 70 2e 69 73 69 6e 66 | (np.isinf(u)).or.np.any(np.isinf |
3080 | 28 76 29 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 65 20 68 61 76 65 20 72 65 61 | (v))):.............#.we.have.rea |
30a0 | 63 68 65 64 20 74 68 65 20 6d 61 63 68 69 6e 65 20 70 72 65 63 69 73 69 6f 6e 0a 20 20 20 20 20 | ched.the.machine.precision...... |
30c0 | 20 20 20 20 20 20 20 23 20 63 6f 6d 65 20 62 61 63 6b 20 74 6f 20 70 72 65 76 69 6f 75 73 20 73 | .......#.come.back.to.previous.s |
30e0 | 6f 6c 75 74 69 6f 6e 20 61 6e 64 20 71 75 69 74 20 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 | olution.and.quit.loop........... |
3100 | 20 20 70 72 69 6e 74 28 27 57 61 72 6e 69 6e 67 3a 20 6e 75 6d 65 72 69 63 61 6c 20 65 72 72 6f | ..print('Warning:.numerical.erro |
3120 | 72 73 20 61 74 20 69 74 65 72 61 74 69 6f 6e 27 2c 20 63 70 74 29 0a 20 20 20 20 20 20 20 20 20 | rs.at.iteration',.cpt).......... |
3140 | 20 20 20 75 20 3d 20 75 70 72 65 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 20 3d 20 76 70 72 | ...u.=.uprev.............v.=.vpr |
3160 | 65 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 69 66 20 | ev.............break.........if. |
3180 | 63 70 74 25 31 30 3d 3d 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 65 20 63 61 6e 20 | cpt%10==0:.............#.we.can. |
31a0 | 73 70 65 65 64 20 75 70 20 74 68 65 20 70 72 6f 63 65 73 73 20 62 79 20 63 68 65 63 6b 69 6e 67 | speed.up.the.process.by.checking |
31c0 | 20 66 6f 72 20 74 68 65 20 65 72 72 6f 72 20 6f 6e 6c 79 20 61 6c 6c 20 74 68 65 20 31 30 74 68 | .for.the.error.only.all.the.10th |
31e0 | 20 69 74 65 72 61 74 69 6f 6e 73 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 20 3d 20 6e | .iterations..............err.=.n |
3200 | 70 2e 73 75 6d 28 28 75 2d 75 70 72 65 76 29 2a 2a 32 29 2f 6e 70 2e 73 75 6d 28 28 75 29 2a 2a | p.sum((u-uprev)**2)/np.sum((u)** |
3220 | 32 29 2b 6e 70 2e 73 75 6d 28 28 76 2d 76 70 72 65 76 29 2a 2a 32 29 2f 6e 70 2e 73 75 6d 28 28 | 2)+np.sum((v-vprev)**2)/np.sum(( |
3240 | 76 29 2a 2a 32 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 6f 67 3a 0a 20 20 20 20 | v)**2)..............if.log:..... |
3260 | 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 5b 27 65 72 72 27 5d 2e 61 70 70 65 6e 64 28 65 72 | ............log['err'].append(er |
3280 | 72 29 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 76 65 72 62 6f 73 65 3a 0a 20 20 20 20 | r)..............if.verbose:..... |
32a0 | 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 70 74 25 32 30 30 20 3d 3d 30 3a 0a 20 20 20 20 | ............if.cpt%200.==0:..... |
32c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 27 7b 3a 35 73 7d 7c 7b 3a 31 | ................print('{:5s}|{:1 |
32e0 | 32 73 7d 27 2e 66 6f 72 6d 61 74 28 27 49 74 2e 27 2c 27 45 72 72 27 29 2b 27 5c 6e 27 2b 27 2d | 2s}'.format('It.','Err')+'\n'+'- |
3300 | 27 2a 31 39 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 27 7b 3a 35 | '*19).................print('{:5 |
3320 | 64 7d 7c 7b 3a 38 65 7d 7c 27 2e 66 6f 72 6d 61 74 28 63 70 74 2c 65 72 72 29 29 0a 20 20 20 20 | d}|{:8e}|'.format(cpt,err))..... |
3340 | 20 20 20 20 63 70 74 20 3d 20 63 70 74 20 2b 31 0a 20 20 20 20 69 66 20 6c 6f 67 3a 0a 20 20 20 | ....cpt.=.cpt.+1.....if.log:.... |
3360 | 20 20 20 20 20 6c 6f 67 5b 27 75 27 5d 3d 75 0a 20 20 20 20 20 20 20 20 6c 6f 67 5b 27 76 27 5d | .....log['u']=u.........log['v'] |
3380 | 3d 76 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 69 66 20 6e 62 62 3a 20 23 72 65 74 75 72 6e 20 | =v..............if.nbb:.#return. |
33a0 | 6f 6e 6c 79 20 6c 6f 73 73 20 0a 20 20 20 20 20 20 20 20 72 65 73 3d 6e 70 2e 7a 65 72 6f 73 28 | only.loss..........res=np.zeros( |
33c0 | 28 6e 62 62 29 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 6e 62 | (nbb)).........for.i.in.range(nb |
33e0 | 62 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 5b 69 5d 3d 6e 70 2e 73 75 6d 28 75 5b | b):.............res[i]=np.sum(u[ |
3400 | 3a 2c 69 5d 2e 72 65 73 68 61 70 65 28 28 2d 31 2c 31 29 29 2a 4b 2a 76 5b 3a 2c 69 5d 2e 72 65 | :,i].reshape((-1,1))*K*v[:,i].re |
3420 | 73 68 61 70 65 28 28 31 2c 2d 31 29 29 2a 4d 29 0a 20 20 20 20 20 20 20 20 69 66 20 6c 6f 67 3a | shape((1,-1))*M).........if.log: |
3440 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2c 6c 6f 67 0a 20 20 20 20 | .............return.res,log..... |
3460 | 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 | ....else:.............return.res |
3480 | 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 65 6c 73 65 3a 20 23 20 72 65 | ......................else:.#.re |
34a0 | 74 75 72 6e 20 4f 54 20 6d 61 74 72 69 78 0a 20 20 20 20 20 20 20 20 72 65 73 3d 72 65 67 2a 61 | turn.OT.matrix.........res=reg*a |
34c0 | 30 2a 6e 70 2e 73 75 6d 28 61 2a 6d 79 6c 6f 67 28 75 2b 28 75 3d 3d 30 29 29 2b 62 2a 6d 79 6c | 0*np.sum(a*mylog(u+(u==0))+b*myl |
34e0 | 6f 67 28 76 2b 28 76 3d 3d 30 29 29 29 0a 20 20 20 20 20 20 20 20 69 66 20 6c 6f 67 3a 0a 20 20 | og(v+(v==0))).........if.log:... |
3500 | 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 | .......................return.re |
3520 | 73 2c 6c 6f 67 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 | s,log.........else:............. |
3540 | 72 65 74 75 72 6e 20 72 65 73 0a 0a 72 65 67 3d 31 65 30 0a 72 2c 6c 6f 67 3d 73 69 6e 6b 68 6f | return.res..reg=1e0.r,log=sinkho |
3560 | 72 6e 5f 63 6f 6e 76 28 49 30 2c 49 31 2c 72 65 67 2c 76 65 72 62 6f 73 65 3d 54 72 75 65 2c 6c | rn_conv(I0,I1,reg,verbose=True,l |
3580 | 6f 67 3d 54 72 75 65 29 0a 61 3d 49 30 0a 62 3d 49 31 0a 75 3d 6c 6f 67 5b 27 75 27 5d 0a 76 3d | og=True).a=I0.b=I1.u=log['u'].v= |
35a0 | 6c 6f 67 5b 27 76 27 5d 0a 23 25 25 20 62 61 72 79 63 65 6e 74 65 72 20 69 6e 74 65 72 70 6f 6c | log['v'].#%%.barycenter.interpol |
35c0 | 61 74 69 6f 6e 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a d8 dc 52 b3 62 0a 00 00 62 0a 00 00 | ation.PK...........J..R.b...b... |
35e0 | 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 |
3600 | 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.-*-." |
3620 | 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 | "".============================= |
3640 | 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 |
3660 | 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 | .==============================. |
3680 | 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. |
36a0 | 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 |
36c0 | 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 |
36e0 | 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 |
3700 | 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 |
3720 | 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. |
3740 | 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 |
3760 | 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 |
3780 | 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. |
37a0 | 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 |
37c0 | 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 |
37e0 | 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= |
3800 | 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, |
3820 | 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 |
3840 | 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 |
3860 | 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]..#. |
3880 | 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 |
38a0 | 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()..#%%. |
38c0 | 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 |
38e0 | 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 |
3900 | 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 |
3920 | 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 |
3940 | 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 |
3960 | 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]) |
3980 | 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 |
39a0 | 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 |
39c0 | 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 |
39e0 | 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( |
3a00 | 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 |
3a20 | 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 |
3a40 | 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 |
3a60 | 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 |
3a80 | 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 |
3aa0 | 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 |
3ac0 | 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').. |
3ae0 | 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 |
3b00 | 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( |
3b20 | 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, |
3b40 | 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). |
3b60 | 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):..... |
3b80 | 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 |
3ba0 | 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 |
3bc0 | 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 |
3be0 | 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, |
3c00 | 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 |
3c20 | 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 |
3c40 | 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 |
3c60 | 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 |
3c80 | 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): |
3ca0 | 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 |
3cc0 | 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. |
3ce0 | 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 |
3d00 | 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 |
3d20 | 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]) |
3d40 | 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 |
3d60 | 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'). |
3d80 | 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 |
3da0 | 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$ |
3dc0 | 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 |
3de0 | 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 |
3e00 | 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 |
3e20 | 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( |
3e40 | 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 |
3e60 | 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(' |
3e80 | 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 |
3ea0 | 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):... |
3ec0 | 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 |
3ee0 | 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 |
3f00 | 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. |
3f20 | 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 |
3f40 | 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]). |
3f60 | 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 |
3f80 | 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').. |
3fa0 | 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 |
3fc0 | 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$' |
3fe0 | 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 |
4000 | 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 |
4020 | 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 |
4040 | 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').. |
4060 | 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%........ |
4080 | 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_ |
40a0 | 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 |
40c0 | 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 |
40e0 | 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 |
4100 | 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.""". |
4120 | 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 |
4140 | 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..#%% |
4160 | 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. |
4180 | 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 |
41a0 | 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] |
41c0 | 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 |
41e0 | 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]]) |
4200 | 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_ |
4220 | 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 |
4240 | 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 |
4260 | 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( |
4280 | 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 |
42a0 | 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 |
42c0 | 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 |
42e0 | 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 |
4300 | 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 |
4320 | 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], |
4340 | 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 |
4360 | 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 |
4380 | 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 |
43a0 | 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 |
43c0 | 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 |
43e0 | 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 |
4400 | 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 |
4420 | 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'). |
4440 | 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. |
4460 | 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 |
4480 | 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. |
44a0 | 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= |
44c0 | 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[:, |
44e0 | 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 |
4500 | 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 |
4520 | 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')... |
4540 | 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 |
4560 | 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) |
4580 | 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 |
45a0 | 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 |
45c0 | 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 |
45e0 | 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 |
4600 | 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 |
4620 | 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 |
4640 | 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[: |
4660 | 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 |
4680 | 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 |
46a0 | 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 |
46c0 | 6d 70 6c 65 73 27 29 0a 23 0a 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a 19 12 26 b2 be 0a 00 | mples').#..PK...........J..&.... |
46e0 | 00 be 0a 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 4c | .....!...auto_examples/plot_OT_L |
4700 | 31 5f 76 73 5f 4c 32 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a | 1_vs_L2.py#.-*-.coding:.utf-8.-* |
4720 | 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | -.""".========================== |
4740 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 32 44 20 4f 70 74 69 6d 61 6c 20 74 72 61 6e | ================.2D.Optimal.tran |
4760 | 73 70 6f 72 74 20 66 6f 72 20 64 69 66 66 65 72 65 6e 74 20 6d 65 74 72 69 63 73 0a 3d 3d 3d 3d | sport.for.different.metrics.==== |
4780 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
47a0 | 3d 3d 3d 3d 3d 3d 0a 0a 53 74 6f 6c 65 20 74 68 65 20 66 69 67 75 72 65 20 69 64 65 61 20 66 72 | ======..Stole.the.figure.idea.fr |
47c0 | 6f 6d 20 46 69 67 2e 20 31 20 61 6e 64 20 32 20 69 6e 20 0a 68 74 74 70 73 3a 2f 2f 61 72 78 69 | om.Fig..1.and.2.in..https://arxi |
47e0 | 76 2e 6f 72 67 2f 70 64 66 2f 31 37 30 36 2e 30 37 36 35 30 2e 70 64 66 0a 0a 0a 40 61 75 74 68 | v.org/pdf/1706.07650.pdf...@auth |
4800 | 6f 72 3a 20 72 66 6c 61 6d 61 72 79 0a 22 22 22 0a 0a 69 6d 70 6f 72 74 20 6e 75 6d 70 79 20 61 | or:.rflamary."""..import.numpy.a |
4820 | 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 | s.np.import.matplotlib.pylab.as. |
4840 | 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 23 25 25 20 70 61 72 61 6d 65 74 65 72 73 20 61 6e 64 | pl.import.ot..#%%.parameters.and |
4860 | 20 64 61 74 61 20 67 65 6e 65 72 61 74 69 6f 6e 0a 0a 66 6f 72 20 64 61 74 61 20 69 6e 20 72 61 | .data.generation..for.data.in.ra |
4880 | 6e 67 65 28 32 29 3a 0a 0a 20 20 20 20 69 66 20 64 61 74 61 3a 0a 20 20 20 20 20 20 20 20 6e 3d | nge(2):......if.data:.........n= |
48a0 | 32 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 73 0a 20 20 20 20 20 20 20 20 78 73 3d 6e 70 2e 7a 65 | 20.#.nb.samples.........xs=np.ze |
48c0 | 72 6f 73 28 28 6e 2c 32 29 29 0a 20 20 20 20 20 20 20 20 78 73 5b 3a 2c 30 5d 3d 6e 70 2e 61 72 | ros((n,2)).........xs[:,0]=np.ar |
48e0 | 61 6e 67 65 28 6e 29 2b 31 0a 20 20 20 20 20 20 20 20 78 73 5b 3a 2c 31 5d 3d 28 6e 70 2e 61 72 | ange(n)+1.........xs[:,1]=(np.ar |
4900 | 61 6e 67 65 28 6e 29 2b 31 29 2a 2d 30 2e 30 30 31 20 23 20 74 6f 20 6d 61 6b 65 20 69 74 20 73 | ange(n)+1)*-0.001.#.to.make.it.s |
4920 | 74 72 69 63 74 6c 79 20 63 6f 6e 76 65 78 2e 2e 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 | trictly.convex.................. |
4940 | 20 20 20 78 74 3d 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 32 29 29 0a 20 20 20 20 20 20 20 20 78 74 | ...xt=np.zeros((n,2)).........xt |
4960 | 5b 3a 2c 31 5d 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 29 2b 31 0a 20 20 20 20 65 6c 73 65 3a 0a 20 | [:,1]=np.arange(n)+1.....else:.. |
4980 | 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6e 3d 35 30 20 23 20 6e 62 20 73 61 6d 70 6c 65 | ................n=50.#.nb.sample |
49a0 | 73 0a 20 20 20 20 20 20 20 20 78 74 6f 74 3d 6e 70 2e 7a 65 72 6f 73 28 28 6e 2b 31 2c 32 29 29 | s.........xtot=np.zeros((n+1,2)) |
49c0 | 0a 20 20 20 20 20 20 20 20 78 74 6f 74 5b 3a 2c 30 5d 3d 6e 70 2e 63 6f 73 28 28 6e 70 2e 61 72 | .........xtot[:,0]=np.cos((np.ar |
49e0 | 61 6e 67 65 28 6e 2b 31 29 2b 31 2e 30 29 2a 30 2e 39 2f 28 6e 2b 32 29 2a 32 2a 6e 70 2e 70 69 | ange(n+1)+1.0)*0.9/(n+2)*2*np.pi |
4a00 | 29 0a 20 20 20 20 20 20 20 20 78 74 6f 74 5b 3a 2c 31 5d 3d 6e 70 2e 73 69 6e 28 28 6e 70 2e 61 | ).........xtot[:,1]=np.sin((np.a |
4a20 | 72 61 6e 67 65 28 6e 2b 31 29 2b 31 2e 30 29 2a 30 2e 39 2f 28 6e 2b 32 29 2a 32 2a 6e 70 2e 70 | range(n+1)+1.0)*0.9/(n+2)*2*np.p |
4a40 | 69 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 78 73 3d 78 74 6f 74 5b 3a 6e 2c 3a | i)..................xs=xtot[:n,: |
4a60 | 5d 0a 20 20 20 20 20 20 20 20 78 74 3d 78 74 6f 74 5b 31 3a 2c 3a 5d 0a 20 20 20 20 20 20 20 20 | ].........xt=xtot[1:,:]......... |
4a80 | 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 0a 20 20 20 20 61 2c 62 20 3d 20 6f 74 2e 75 6e 69 66 | ...................a,b.=.ot.unif |
4aa0 | 28 6e 29 2c 6f 74 2e 75 6e 69 66 28 6e 29 20 23 20 75 6e 69 66 6f 72 6d 20 64 69 73 74 72 69 62 | (n),ot.unif(n).#.uniform.distrib |
4ac0 | 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 20 20 20 20 0a 20 20 20 20 23 20 6c 6f 73 73 | ution.on.samples..........#.loss |
4ae0 | 20 6d 61 74 72 69 78 0a 20 20 20 20 4d 31 3d 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 2c 6d 65 74 | .matrix.....M1=ot.dist(xs,xt,met |
4b00 | 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 0a 20 20 20 20 4d 31 2f 3d 4d 31 2e 6d 61 78 28 | ric='euclidean').....M1/=M1.max( |
4b20 | 29 0a 20 20 20 20 0a 20 20 20 20 23 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 20 20 20 20 4d 32 3d | )..........#.loss.matrix.....M2= |
4b40 | 6f 74 2e 64 69 73 74 28 78 73 2c 78 74 2c 6d 65 74 72 69 63 3d 27 73 71 65 75 63 6c 69 64 65 61 | ot.dist(xs,xt,metric='sqeuclidea |
4b60 | 6e 27 29 0a 20 20 20 20 4d 32 2f 3d 4d 32 2e 6d 61 78 28 29 0a 20 20 20 20 0a 20 20 20 20 23 20 | n').....M2/=M2.max()..........#. |
4b80 | 6c 6f 73 73 20 6d 61 74 72 69 78 0a 20 20 20 20 4d 70 3d 6e 70 2e 73 71 72 74 28 6f 74 2e 64 69 | loss.matrix.....Mp=np.sqrt(ot.di |
4ba0 | 73 74 28 78 73 2c 78 74 2c 6d 65 74 72 69 63 3d 27 65 75 63 6c 69 64 65 61 6e 27 29 29 0a 20 20 | st(xs,xt,metric='euclidean'))... |
4bc0 | 20 20 4d 70 2f 3d 4d 70 2e 6d 61 78 28 29 0a 20 20 20 20 0a 20 20 20 20 23 25 25 20 70 6c 6f 74 | ..Mp/=Mp.max()..........#%%.plot |
4be0 | 20 73 61 6d 70 6c 65 73 0a 20 20 20 20 0a 20 20 20 20 70 6c 2e 66 69 67 75 72 65 28 31 2b 33 2a | .samples..........pl.figure(1+3* |
4c00 | 64 61 74 61 29 0a 20 20 20 20 70 6c 2e 63 6c 66 28 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 | data).....pl.clf().....pl.plot(x |
4c20 | 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 27 53 6f 75 72 63 | s[:,0],xs[:,1],'+b',label='Sourc |
4c40 | 65 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c | e.samples').....pl.plot(xt[:,0], |
4c60 | 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 6d 70 6c | xt[:,1],'xr',label='Target.sampl |
4c80 | 65 73 27 29 0a 20 20 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 0a 20 20 20 20 70 6c | es').....pl.axis('equal').....pl |
4ca0 | 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 61 6e 64 20 74 72 61 67 65 74 20 64 69 73 74 72 69 | .title('Source.and.traget.distri |
4cc0 | 62 75 74 69 6f 6e 73 27 29 0a 20 20 20 20 0a 20 20 20 20 70 6c 2e 66 69 67 75 72 65 28 32 2b 33 | butions')..........pl.figure(2+3 |
4ce0 | 2a 64 61 74 61 2c 28 31 35 2c 35 29 29 0a 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 33 | *data,(15,5)).....pl.subplot(1,3 |
4d00 | 2c 31 29 0a 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 4d 31 2c 69 6e 74 65 72 70 6f 6c 61 74 69 | ,1).....pl.imshow(M1,interpolati |
4d20 | 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 45 75 63 69 | on='nearest').....pl.title('Euci |
4d40 | 64 65 61 6e 20 63 6f 73 74 27 29 0a 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 33 2c 32 | dean.cost').....pl.subplot(1,3,2 |
4d60 | 29 0a 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 4d 32 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e | ).....pl.imshow(M2,interpolation |
4d80 | 3d 27 6e 65 61 72 65 73 74 27 29 0a 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 53 71 75 61 72 65 | ='nearest').....pl.title('Square |
4da0 | 64 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a 20 20 20 20 0a 20 20 20 20 70 6c 2e 73 | d.Euclidean.cost')..........pl.s |
4dc0 | 75 62 70 6c 6f 74 28 31 2c 33 2c 33 29 0a 20 20 20 20 70 6c 2e 69 6d 73 68 6f 77 28 4d 70 2c 69 | ubplot(1,3,3).....pl.imshow(Mp,i |
4de0 | 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 20 20 20 20 70 6c 2e 74 | nterpolation='nearest').....pl.t |
4e00 | 69 74 6c 65 28 27 53 71 72 74 20 45 75 63 6c 69 64 65 61 6e 20 63 6f 73 74 27 29 0a 20 20 20 20 | itle('Sqrt.Euclidean.cost')..... |
4e20 | 23 25 25 20 45 4d 44 0a 20 20 20 20 0a 20 20 20 20 47 31 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d | #%%.EMD..........G1=ot.emd(a,b,M |
4e40 | 31 29 0a 20 20 20 20 47 32 3d 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 32 29 0a 20 20 20 20 47 70 3d | 1).....G2=ot.emd(a,b,M2).....Gp= |
4e60 | 6f 74 2e 65 6d 64 28 61 2c 62 2c 4d 70 29 0a 20 20 20 20 0a 20 20 20 20 70 6c 2e 66 69 67 75 72 | ot.emd(a,b,Mp)..........pl.figur |
4e80 | 65 28 33 2b 33 2a 64 61 74 61 2c 28 31 35 2c 35 29 29 0a 20 20 20 20 0a 20 20 20 20 70 6c 2e 73 | e(3+3*data,(15,5))..........pl.s |
4ea0 | 75 62 70 6c 6f 74 28 31 2c 33 2c 31 29 0a 20 20 20 20 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 | ubplot(1,3,1).....ot.plot.plot2D |
4ec0 | 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 74 2c 47 31 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 | _samples_mat(xs,xt,G1,c=[.5,.5,1 |
4ee0 | 5d 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 27 | ]).....pl.plot(xs[:,0],xs[:,1],' |
4f00 | 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 20 20 20 20 | +b',label='Source.samples')..... |
4f20 | 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 62 | pl.plot(xt[:,0],xt[:,1],'xr',lab |
4f40 | 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 61 78 69 73 | el='Target.samples').....pl.axis |
4f60 | 28 27 65 71 75 61 6c 27 29 0a 20 20 20 20 23 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a | ('equal').....#pl.legend(loc=0). |
4f80 | 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 20 20 20 | ....pl.title('OT.Euclidean').... |
4fa0 | 20 0a 20 20 20 20 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 33 2c 32 29 0a 20 20 20 20 0a 20 20 20 | ......pl.subplot(1,3,2)......... |
4fc0 | 20 6f 74 2e 70 6c 6f 74 2e 70 6c 6f 74 32 44 5f 73 61 6d 70 6c 65 73 5f 6d 61 74 28 78 73 2c 78 | .ot.plot.plot2D_samples_mat(xs,x |
4fe0 | 74 2c 47 32 2c 63 3d 5b 2e 35 2c 2e 35 2c 31 5d 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 73 | t,G2,c=[.5,.5,1]).....pl.plot(xs |
5000 | 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 27 53 6f 75 72 63 65 | [:,0],xs[:,1],'+b',label='Source |
5020 | 20 73 61 6d 70 6c 65 73 27 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 | .samples').....pl.plot(xt[:,0],x |
5040 | 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 6d 70 6c 65 | t[:,1],'xr',label='Target.sample |
5060 | 73 27 29 0a 20 20 20 20 70 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 0a 20 20 20 20 23 70 6c | s').....pl.axis('equal').....#pl |
5080 | 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 | .legend(loc=0).....pl.title('OT. |
50a0 | 73 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 27 29 0a 20 20 20 20 0a 20 20 20 20 70 6c 2e | squared.Euclidean')..........pl. |
50c0 | 73 75 62 70 6c 6f 74 28 31 2c 33 2c 33 29 0a 20 20 20 20 0a 20 20 20 20 6f 74 2e 70 6c 6f 74 2e | subplot(1,3,3)..........ot.plot. |
50e0 | 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 70 2c 63 3d 5b 2e | plot2D_samples_mat(xs,xt,Gp,c=[. |
5100 | 35 2c 2e 35 2c 31 5d 29 0a 20 20 20 20 70 6c 2e 70 6c 6f 74 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b | 5,.5,1]).....pl.plot(xs[:,0],xs[ |
5120 | 3a 2c 31 5d 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 | :,1],'+b',label='Source.samples' |
5140 | 29 0a 20 20 20 20 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 | ).....pl.plot(xt[:,0],xt[:,1],'x |
5160 | 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 20 20 20 20 70 | r',label='Target.samples').....p |
5180 | 6c 2e 61 78 69 73 28 27 65 71 75 61 6c 27 29 0a 20 20 20 20 23 70 6c 2e 6c 65 67 65 6e 64 28 6c | l.axis('equal').....#pl.legend(l |
51a0 | 6f 63 3d 30 29 0a 20 20 20 20 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 73 71 72 74 20 45 75 63 6c | oc=0).....pl.title('OT.sqrt.Eucl |
51c0 | 69 64 65 61 6e 27 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a b4 93 15 da 5a 06 00 00 5a 06 | idean').PK...........J....Z...Z. |
51e0 | 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 44 5f 73 | ..#...auto_examples/plot_OT_2D_s |
5200 | 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 2d 2a 2d | amples.py#.-*-.coding:.utf-8.-*- |
5220 | 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | .""".=========================== |
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 0a 32 44 20 4f 70 74 | =========================.2D.Opt |
5260 | 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 63 61 6c | imal.transport.between.empirical |
5280 | 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | .distributions.================= |
52a0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
52c0 | 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 6d 70 6f | ===..@author:.rflamary."""..impo |
52e0 | 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | rt.numpy.as.np.import.matplotlib |
5300 | 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 61 72 61 | .pylab.as.pl.import.ot..#%%.para |
5320 | 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 3d 35 30 | meters.and.data.generation..n=50 |
5340 | 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 5b 30 2c | .#.nb.samples..mu_s=np.array([0, |
5360 | 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 31 5d 5d | 0]).cov_s=np.array([[1,0],[0,1]] |
5380 | 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 3d 6e 70 | )..mu_t=np.array([4,4]).cov_t=np |
53a0 | 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 3d 6f 74 | .array([[1,-.8],[-.8,1]])..xs=ot |
53c0 | 2e 64 61 74 61 73 65 74 73 2e 67 65 74 5f 32 44 5f 73 61 6d 70 6c 65 73 5f 67 61 75 73 73 28 6e | .datasets.get_2D_samples_gauss(n |
53e0 | 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 65 74 5f | ,mu_s,cov_s).xt=ot.datasets.get_ |
5400 | 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 29 0a 0a | 2D_samples_gauss(n,mu_t,cov_t).. |
5420 | 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 20 75 6e | a,b.=.ot.unif(n),ot.unif(n).#.un |
5440 | 69 66 6f 72 6d 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6f 6e 20 73 61 6d 70 6c 65 73 0a 0a 23 | iform.distribution.on.samples..# |
5460 | 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 0a 4d 2f | .loss.matrix.M=ot.dist(xs,xt).M/ |
5480 | 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 6c 2e 66 | =M.max()..#%%.plot.samples..pl.f |
54a0 | 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 2c 31 5d | igure(1).pl.plot(xs[:,0],xs[:,1] |
54c0 | 2c 27 2b 62 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c | ,'+b',label='Source.samples').pl |
54e0 | 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 27 78 72 27 2c 6c 61 62 65 6c | .plot(xt[:,0],xt[:,1],'xr',label |
5500 | 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 | ='Target.samples').pl.legend(loc |
5520 | 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 65 74 20 | =0).pl.title('Source.and.traget. |
5540 | 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 0a 70 6c | distributions')..pl.figure(2).pl |
5560 | 2e 69 6d 73 68 6f 77 28 4d 2c 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 | .imshow(M,interpolation='nearest |
5580 | 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 0a 0a 23 | ').pl.title('Cost.matrix.M')...# |
55a0 | 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 67 | %%.EMD..G0=ot.emd(a,b,M)..pl.fig |
55c0 | 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 74 69 6f | ure(3).pl.imshow(G0,interpolatio |
55e0 | 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 4f 54 20 6d 61 74 72 69 78 | n='nearest').pl.title('OT.matrix |
5600 | 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 6c 6f 74 | .G0')..pl.figure(4).ot.plot.plot |
5620 | 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 2c 2e 35 | 2D_samples_mat(xs,xt,G0,c=[.5,.5 |
5640 | 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 27 2b 62 | ,1]).pl.plot(xs[:,0],xs[:,1],'+b |
5660 | 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 70 6c 6f | ',label='Source.samples').pl.plo |
5680 | 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 27 54 61 | t(xt[:,0],xt[:,1],'xr',label='Ta |
56a0 | 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 30 29 0a | rget.samples').pl.legend(loc=0). |
56c0 | 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 6c 65 73 | pl.title('OT.matrix.with.samples |
56e0 | 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 0a 6c 61 | ')...#%%.sinkhorn..#.reg.term.la |
5700 | 6d 62 64 3d 35 65 2d 34 0a 0a 47 73 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 2c 62 2c 4d 2c 6c | mbd=5e-4..Gs=ot.sinkhorn(a,b,M,l |
5720 | 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 28 47 73 | ambd)..pl.figure(5).pl.imshow(Gs |
5740 | 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 |
5760 | 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 66 69 67 | le('OT.matrix.sinkhorn')..pl.fig |
5780 | 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 5f 6d 61 | ure(6).ot.plot.plot2D_samples_ma |
57a0 | 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 6c 2e 70 | t(xs,xt,Gs,color=[.5,.5,1]).pl.p |
57c0 | 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 27 | lot(xs[:,0],xs[:,1],'+b',label=' |
57e0 | 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 70 6c 6f 74 28 78 74 5b 3a 2c 30 5d | Source.samples').pl.plot(xt[:,0] |
5800 | 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 6d 70 | ,xt[:,1],'xr',label='Target.samp |
5820 | 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 | les').pl.legend(loc=0).pl.title( |
5840 | 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 6c 65 73 | 'OT.matrix.Sinkhorn.with.samples |
5860 | 27 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a ec af 42 31 2e 0a 00 00 2e 0a 00 00 1d 00 00 | ').PK...........J..B1........... |
5880 | 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 79 23 20 | .auto_examples/plot_OTDA_2D.py#. |
58a0 | 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d | -*-.coding:.utf-8.-*-.""".====== |
58c0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 | ========================.OT.for. |
58e0 | 65 6d 70 69 72 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 3d 3d 3d 3d 3d 3d 3d 3d | empirical.distributions.======== |
5900 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 22 22 22 0a 0a 69 6d 70 | ======================.."""..imp |
5920 | 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 | ort.numpy.as.np.import.matplotli |
5940 | 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 25 20 70 | b.pylab.as.pl.import.ot....#%%.p |
5960 | 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 73 2c 79 | arameters..n=150.#.nb.bins..xs,y |
5980 | 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 66 28 27 | s=ot.datasets.get_data_classif(' |
59a0 | 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 67 65 74 | 3gauss',n).xt,yt=ot.datasets.get |
59c0 | 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 2c 62 20 | _data_classif('3gauss2',n)..a,b. |
59e0 | 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 73 20 6d | =.ot.unif(n),ot.unif(n).#.loss.m |
5a00 | 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 6d 61 78 | atrix.M=ot.dist(xs,xt).#M/=M.max |
5a20 | 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 72 65 28 | ()..#%%.plot.samples..pl.figure( |
5a40 | 31 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 31 29 0a 70 6c 2e 73 63 61 74 74 65 72 | 1)..pl.subplot(2,2,1).pl.scatter |
5a60 | 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 2b 27 | (xs[:,0],xs[:,1],c=ys,marker='+' |
5a80 | 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 6c 65 67 65 | ,label='Source.samples').pl.lege |
5aa0 | 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 20 64 69 73 74 | nd(loc=0).pl.title('Source..dist |
5ac0 | 72 69 62 75 74 69 6f 6e 73 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 32 2c 32 29 0a 70 | ributions')..pl.subplot(2,2,2).p |
5ae0 | 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 6d | l.scatter(xt[:,0],xt[:,1],c=yt,m |
5b00 | 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 27 | arker='o',label='Target.samples' |
5b20 | 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 6c 6f 63 3d 30 29 0a 70 6c 2e 74 69 74 6c 65 28 27 74 61 72 | ).pl.legend(loc=0).pl.title('tar |
5b40 | 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 72 65 28 | get..distributions')..pl.figure( |
5b60 | 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 27 6e 65 | 2).pl.imshow(M,interpolation='ne |
5b80 | 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 20 4d 27 | arest').pl.title('Cost.matrix.M' |
5ba0 | 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 47 30 3d | )...#%%.OT.estimation..#.EMD.G0= |
5bc0 | 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 62 64 3d | ot.emd(a,b,M)..#.sinkhorn.lambd= |
5be0 | 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 62 64 29 | 1e-1.Gs=ot.sinkhorn(a,b,M,lambd) |
5c00 | 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 6f 6e 0a | ...#.Group.lasso.regularization. |
5c20 | 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 6b 68 6f | reg=1e-1.eta=1e0.Gg=ot.da.sinkho |
5c40 | 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 29 2c 62 | rn_lpl1_mm(a,ys.astype(np.int),b |
5c60 | 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 65 73 0a | ,M,reg,eta)...#%%.visu.matrices. |
5c80 | 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 2c 31 29 | .pl.figure(3)..pl.subplot(2,3,1) |
5ca0 | 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 6e 65 61 | .pl.imshow(G0,interpolation='nea |
5cc0 | 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 0a 0a 70 | rest').pl.title('OT.matrix.')..p |
5ce0 | 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 2c 69 6e | l.subplot(2,3,2).pl.imshow(Gs,in |
5d00 | 74 65 72 70 6f 6c 61 74 69 6f 6e 3d 27 6e 65 61 72 65 73 74 27 29 0a 70 6c 2e 74 69 74 6c 65 28 | terpolation='nearest').pl.title( |
5d20 | 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 70 6c 6f | 'OT.matrix.Sinkhorn')..pl.subplo |
5d40 | 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 6c 61 74 | t(2,3,3).pl.imshow(Gg,interpolat |
5d60 | 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 72 | ion='nearest').pl.title('OT.matr |
5d80 | 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 32 2c 33 | ix.Group.lasso')..pl.subplot(2,3 |
5da0 | 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 74 28 78 | ,4).ot.plot.plot2D_samples_mat(x |
5dc0 | 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 65 72 28 | s,xt,G0,c=[.5,.5,1]).pl.scatter( |
5de0 | 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c 6d 61 72 6b 65 72 3d 27 2b 27 2c | xs[:,0],xs[:,1],c=ys,marker='+', |
5e00 | 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 27 29 0a 70 6c 2e 73 63 61 74 74 | label='Source.samples').pl.scatt |
5e20 | 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 | er(xt[:,0],xt[:,1],c=yt,marker=' |
5e40 | 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 70 6c 2e | o',label='Target.samples')...pl. |
5e60 | 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 5f 73 61 | subplot(2,3,5).ot.plot.plot2D_sa |
5e80 | 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 5d 29 0a | mples_mat(xs,xt,Gs,c=[.5,.5,1]). |
5ea0 | 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 31 5d 2c 63 3d 79 73 2c | pl.scatter(xs[:,0],xs[:,1],c=ys, |
5ec0 | 6d 61 72 6b 65 72 3d 27 2b 27 2c 6c 61 62 65 6c 3d 27 53 6f 75 72 63 65 20 73 61 6d 70 6c 65 73 | marker='+',label='Source.samples |
5ee0 | 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 2c 63 3d | ').pl.scatter(xt[:,0],xt[:,1],c= |
5f00 | 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 70 | yt,marker='o',label='Target.samp |
5f20 | 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 6c 6f 74 | les')..pl.subplot(2,3,6).ot.plot |
5f40 | 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 63 3d 5b | .plot2D_samples_mat(xs,xt,Gg,c=[ |
5f60 | 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 78 73 5b | .5,.5,1]).pl.scatter(xs[:,0],xs[ |
5f80 | 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 |
5fa0 | 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 30 5d 2c | ce.samples').pl.scatter(xt[:,0], |
5fc0 | 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 | xt[:,1],c=yt,marker='o',label='T |
5fe0 | 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 6e 74 65 | arget.samples')..#%%.sample.inte |
6000 | 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 78 73 74 | rpolation..xst0=n*G0.dot(xt).xst |
6020 | 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 78 74 29 | s=n*Gs.dot(xt).xstg=n*Gg.dot(xt) |
6040 | 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 2c 31 29 | ..pl.figure(4).pl.subplot(2,3,1) |
6060 | 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 2c 63 3d | ...pl.scatter(xt[:,0],xt[:,1],c= |
6080 | 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 70 | yt,marker='o',label='Target.samp |
60a0 | 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 74 30 5b | les',alpha=0.5).pl.scatter(xst0[ |
60c0 | 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 6c | :,0],xst0[:,1],c=ys,marker='+',l |
60e0 | 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 74 | abel='Transp.samples',s=30).pl.t |
6100 | 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 64 | itle('Interp.samples').pl.legend |
6120 | 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 70 6c 2e | (loc=0)..pl.subplot(2,3,2)...pl. |
6140 | 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c 78 74 5b 3a 2c 31 5d 2c 63 3d 79 74 2c 6d 61 72 | scatter(xt[:,0],xt[:,1],c=yt,mar |
6160 | 6b 65 72 3d 27 6f 27 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 73 61 6d 70 6c 65 73 27 2c 61 | ker='o',label='Target.samples',a |
6180 | 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 5d 2c 78 | lpha=0.5).pl.scatter(xsts[:,0],x |
61a0 | 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 6c 3d 27 | sts[:,1],c=ys,marker='+',label=' |
61c0 | 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 65 28 27 | Transp.samples',s=30).pl.title(' |
61e0 | 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 2e 73 75 | Interp.samples.Sinkhorn')..pl.su |
6200 | 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 2c 30 5d | bplot(2,3,3)..pl.scatter(xt[:,0] |
6220 | 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 3d 27 | ,xt[:,1],c=yt,marker='o',label=' |
6240 | 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 2e 73 63 | Target.samples',alpha=0.5).pl.sc |
6260 | 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 73 2c 6d | atter(xstg[:,0],xstg[:,1],c=ys,m |
6280 | 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 65 73 27 | arker='+',label='Transp.samples' |
62a0 | 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 65 73 20 | ,s=30).pl.title('Interp.samples. |
62c0 | 47 72 6f 75 70 6c 61 73 73 6f 27 29 50 4b 03 04 14 00 00 00 00 00 aa 83 e3 4a c5 46 2c f5 21 06 | Grouplasso')PK...........J.F,.!. |
62e0 | 00 00 21 06 00 00 21 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 63 6f 6d | ..!...!...auto_examples/plot_com |
6300 | 70 75 74 65 5f 65 6d 64 2e 70 79 23 20 2d 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d | pute_emd.py#.-*-.coding:.utf-8.- |
6320 | 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 31 44 20 6f | *-.""".====================.1D.o |
6340 | 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ptimal.transport.=============== |
6360 | 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 6d | =====..@author:.rflamary."""..im |
6380 | 70 6f 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c | port.numpy.as.np.import.matplotl |
63a0 | 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 | ib.pylab.as.pl.import.ot.from.ot |
63c0 | 2e 64 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 | .datasets.import.get_1D_gauss.as |
63e0 | 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 23 | .gauss...#%%.parameters..n=100.# |
6400 | 20 6e 62 20 62 69 6e 73 0a 6e 5f 74 61 72 67 65 74 3d 35 30 20 23 20 6e 62 20 74 61 72 67 65 74 | .nb.bins.n_target=50.#.nb.target |
6420 | 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 | .distributions...#.bin.positions |
6440 | 0a 78 3d 6e 70 2e 61 72 61 6e 67 65 28 6e 2c 64 74 79 70 65 3d 6e 70 2e 66 6c 6f 61 74 36 34 29 | .x=np.arange(n,dtype=np.float64) |
6460 | 0a 0a 6c 73 74 5f 6d 3d 6e 70 2e 6c 69 6e 73 70 61 63 65 28 32 30 2c 39 30 2c 6e 5f 74 61 72 67 | ..lst_m=np.linspace(20,90,n_targ |
6480 | 65 74 29 0a 0a 23 20 47 61 75 73 73 69 61 6e 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 61 3d | et)..#.Gaussian.distributions.a= |
64a0 | 67 61 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 | gauss(n,m=20,s=5).#.m=.mean,.s=. |
64c0 | 73 74 64 0a 0a 42 3d 6e 70 2e 7a 65 72 6f 73 28 28 6e 2c 6e 5f 74 61 72 67 65 74 29 29 0a 0a 66 | std..B=np.zeros((n,n_target))..f |
64e0 | 6f 72 20 69 2c 6d 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 6c 73 74 5f 6d 29 3a 0a 20 20 20 20 | or.i,m.in.enumerate(lst_m):..... |
6500 | 42 5b 3a 2c 69 5d 3d 67 61 75 73 73 28 6e 2c 6d 3d 6d 2c 73 3d 35 29 0a 0a 23 20 6c 6f 73 73 20 | B[:,i]=gauss(n,m=m,s=5)..#.loss. |
6520 | 6d 61 74 72 69 78 20 61 6e 64 20 6e 6f 72 6d 61 6c 69 7a 61 74 69 6f 6e 0a 4d 3d 6f 74 2e 64 69 | matrix.and.normalization.M=ot.di |
6540 | 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 |
6560 | 2c 31 29 29 2c 27 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 2f 3d 4d 2e 6d 61 78 28 29 0a 4d 32 3d | ,1)),'euclidean').M/=M.max().M2= |
6580 | 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 72 65 73 68 61 | ot.dist(x.reshape((n,1)),x.resha |
65a0 | 70 65 28 28 6e 2c 31 29 29 2c 27 73 71 65 75 63 6c 69 64 65 61 6e 27 29 0a 4d 32 2f 3d 4d 32 2e | pe((n,1)),'sqeuclidean').M2/=M2. |
65c0 | 6d 61 78 28 29 0a 23 25 25 20 70 6c 6f 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 | max().#%%.plot.the.distributions |
65e0 | 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 31 2c 31 29 | ..pl.figure(1).pl.subplot(2,1,1) |
6600 | 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 63 65 20 64 | .pl.plot(x,a,'b',label='Source.d |
6620 | 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 53 6f 75 72 63 65 20 64 | istribution').pl.title('Source.d |
6640 | 69 73 74 72 69 62 75 74 69 6f 6e 27 29 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 31 2c 32 29 0a | istribution').pl.subplot(2,1,2). |
6660 | 70 6c 2e 70 6c 6f 74 28 78 2c 42 2c 6c 61 62 65 6c 3d 27 54 61 72 67 65 74 20 64 69 73 74 72 69 | pl.plot(x,B,label='Target.distri |
6680 | 62 75 74 69 6f 6e 73 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 54 61 72 67 65 74 20 64 69 73 74 72 | butions').pl.title('Target.distr |
66a0 | 69 62 75 74 69 6f 6e 73 27 29 0a 0a 23 25 25 20 43 6f 6d 70 75 74 65 20 61 6e 64 20 70 6c 6f 74 | ibutions')..#%%.Compute.and.plot |
66c0 | 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 61 6e 64 20 6c 6f 73 73 20 6d 61 74 72 69 78 0a 0a | .distributions.and.loss.matrix.. |
66e0 | 64 5f 65 6d 64 3d 6f 74 2e 65 6d 64 32 28 61 2c 42 2c 4d 29 20 23 20 64 69 72 65 63 74 20 63 6f | d_emd=ot.emd2(a,B,M).#.direct.co |
6700 | 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 45 4d 44 0a 64 5f 65 6d 64 32 3d 6f 74 2e 65 6d 64 32 28 | mputation.of.EMD.d_emd2=ot.emd2( |
6720 | 61 2c 42 2c 4d 32 29 20 20 23 20 64 69 72 65 63 74 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f 66 | a,B,M2)..#.direct.computation.of |
6740 | 20 45 4d 44 20 77 69 74 68 20 6c 6f 73 73 20 4d 33 0a 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 | .EMD.with.loss.M3...pl.figure(2) |
6760 | 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 | .pl.plot(d_emd,label='Euclidean. |
6780 | 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 32 2c 6c 61 62 65 6c 3d 27 53 71 75 61 | EMD').pl.plot(d_emd2,label='Squa |
67a0 | 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 45 4d | red.Euclidean.EMD').pl.title('EM |
67c0 | 44 20 64 69 73 74 61 6e 63 65 73 27 29 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 0a 0a 23 25 25 0a 72 | D.distances').pl.legend()..#%%.r |
67e0 | 65 67 3d 31 65 2d 32 0a 64 5f 73 69 6e 6b 68 6f 72 6e 3d 6f 74 2e 73 69 6e 6b 68 6f 72 6e 28 61 | eg=1e-2.d_sinkhorn=ot.sinkhorn(a |
6800 | 2c 42 2c 4d 2c 72 65 67 29 0a 64 5f 73 69 6e 6b 68 6f 72 6e 32 3d 6f 74 2e 73 69 6e 6b 68 6f 72 | ,B,M,reg).d_sinkhorn2=ot.sinkhor |
6820 | 6e 28 61 2c 42 2c 4d 32 2c 72 65 67 29 0a 0a 70 6c 2e 66 69 67 75 72 65 28 32 29 0a 70 6c 2e 63 | n(a,B,M2,reg)..pl.figure(2).pl.c |
6840 | 6c 66 28 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 2c 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 | lf().pl.plot(d_emd,label='Euclid |
6860 | 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 65 6d 64 32 2c 6c 61 62 65 6c 3d 27 | ean.EMD').pl.plot(d_emd2,label=' |
6880 | 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 45 4d 44 27 29 0a 70 6c 2e 70 6c 6f 74 28 | Squared.Euclidean.EMD').pl.plot( |
68a0 | 64 5f 73 69 6e 6b 68 6f 72 6e 2c 27 2b 27 2c 6c 61 62 65 6c 3d 27 45 75 63 6c 69 64 65 61 6e 20 | d_sinkhorn,'+',label='Euclidean. |
68c0 | 53 69 6e 6b 68 6f 72 6e 27 29 0a 70 6c 2e 70 6c 6f 74 28 64 5f 73 69 6e 6b 68 6f 72 6e 32 2c 27 | Sinkhorn').pl.plot(d_sinkhorn2,' |
68e0 | 2b 27 2c 6c 61 62 65 6c 3d 27 53 71 75 61 72 65 64 20 45 75 63 6c 69 64 65 61 6e 20 53 69 6e 6b | +',label='Squared.Euclidean.Sink |
6900 | 68 6f 72 6e 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 45 4d 44 20 64 69 73 74 61 6e 63 65 73 27 29 | horn').pl.title('EMD.distances') |
6920 | 0a 70 6c 2e 6c 65 67 65 6e 64 28 29 50 4b 03 04 14 00 00 00 00 00 6a 7b 82 49 d4 40 d8 69 2e 05 | .pl.legend()PK........j{.I.@.i.. |
6940 | 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 4f 54 5f | ..........auto_examples/demo_OT_ |
6960 | 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 20 2d 2a | 1D_test.py#.-*-.coding:.utf-8.-* |
6980 | 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 6e 73 70 | -.""".Demo.for.1D.optimal.transp |
69a0 | 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 6d 70 6f | ort..@author:.rflamary."""..impo |
69c0 | 72 74 20 6e 75 6d 70 79 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 | rt.numpy.as.np.import.matplotlib |
69e0 | 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a 66 72 6f 6d 20 6f 74 2e 64 | .pylab.as.pl.import.ot.from.ot.d |
6a00 | 61 74 61 73 65 74 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 31 44 5f 67 61 75 73 73 20 61 73 20 67 | atasets.import.get_1D_gauss.as.g |
6a20 | 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 23 20 6e | auss...#%%.parameters..n=100.#.n |
6a40 | 62 20 62 69 6e 73 0a 0a 23 20 62 69 6e 20 70 6f 73 69 74 69 6f 6e 73 0a 78 3d 6e 70 2e 61 72 61 | b.bins..#.bin.positions.x=np.ara |
6a60 | 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 75 73 73 | nge(n,dtype=np.float64)..#.Gauss |
6a80 | 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 3d 6e 2a | ian.distributions.a=gauss(n,m=n* |
6aa0 | 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 61 75 73 | .2,s=5).#.m=.mean,.s=.std.b=gaus |
6ac0 | 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 69 78 0a | s(n,m=n*.6,s=10)..#.loss.matrix. |
6ae0 | 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 72 65 73 | M=ot.dist(x.reshape((n,1)),x.res |
6b00 | 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 70 6c 6f | hape((n,1))).M/=M.max()..#%%.plo |
6b20 | 74 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 | t.the.distributions..pl.figure(1 |
6b40 | 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 63 65 20 | ).pl.plot(x,a,'b',label='Source. |
6b60 | 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 27 2c 6c | distribution').pl.plot(x,b,'r',l |
6b80 | 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 6c 2e 6c | abel='Target.distribution').pl.l |
6ba0 | 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 6e 73 20 | egend()..#%%.plot.distributions. |
6bc0 | 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 0a 6f 74 | and.loss.matrix..pl.figure(2).ot |
6be0 | 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 6d 61 74 | .plot.plot1D_mat(a,b,M,'Cost.mat |
6c00 | 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 2c 62 2c | rix.M')..#%%.EMD..G0=ot.emd(a,b, |
6c20 | 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 31 44 5f | M)..pl.figure(3).ot.plot.plot1D_ |
6c40 | 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 25 25 20 | mat(a,b,G0,'OT.matrix.G0')..#%%. |
6c60 | 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 6e 6b 68 | Sinkhorn..lambd=1e-3.Gs=ot.sinkh |
6c80 | 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 0a 0a 70 | orn(a,b,M,lambd,verbose=True)..p |
6ca0 | 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 74 28 61 | l.figure(4).ot.plot.plot1D_mat(a |
6cc0 | 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 23 25 25 | ,b,Gs,'OT.matrix.Sinkhorn')..#%% |
6ce0 | 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 3d 6f 74 | .Sinkhorn..lambd=1e-4.Gss,log=ot |
6d00 | 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 61 2c 62 | .bregman.sinkhorn_stabilized(a,b |
6d20 | 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 65 29 0a | ,M,lambd,verbose=True,log=True). |
6d40 | 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 5f 73 74 | Gss2,log2=ot.bregman.sinkhorn_st |
6d60 | 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 54 72 75 | abilized(a,b,M,lambd,verbose=Tru |
6d80 | 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 6d 73 74 | e,log=True,warmstart=log['warmst |
6da0 | 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 70 6c 6f | art'])..pl.figure(5).ot.plot.plo |
6dc0 | 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 6e 6b 68 | t1D_mat(a,b,Gss,'OT.matrix.Sinkh |
6de0 | 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 6e 0a 0a | orn.stabilized')..#%%.Sinkhorn.. |
6e00 | 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 6e 6b 68 | lambd=1e-11.Gss=ot.bregman.sinkh |
6e20 | 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 62 64 2c | orn_epsilon_scaling(a,b,M,lambd, |
6e40 | 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 70 | verbose=True)..pl.figure(5).ot.p |
6e60 | 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 74 72 69 | lot.plot1D_mat(a,b,Gss,'OT.matri |
6e80 | 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 00 00 00 | x.Sinkhorn.stabilized').PK...... |
6ea0 | 00 00 a9 83 e3 4a a5 25 9f a1 06 0a 00 00 06 0a 00 00 27 00 00 00 61 75 74 6f 5f 65 78 61 6d 70 | .....J.%..........'...auto_examp |
6ec0 | 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 23 20 2d | les/plot_OTDA_color_images.py#.- |
6ee0 | 2a 2d 20 63 6f 64 69 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d | *-.coding:.utf-8.-*-.""".======= |
6f00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
6f20 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 | =================.OT.for.domain. |
6f40 | 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 69 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 | adaptation.with.image.color.adap |
6f60 | 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 3d 3d 3d | tation.[6].===================== |
6f80 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
6fa0 | 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 61 6b 69 | ===..[6].Ferradans,.S.,.Papadaki |
6fc0 | 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c 2c 20 4a 2e 20 46 2e | s,.N.,.Peyre,.G.,.&.Aujol,.J..F. |
6fe0 | 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 20 6f 70 | .(2014)..Regularized.discrete.op |
7000 | 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 20 6f 6e | timal.transport..SIAM.Journal.on |
7020 | 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 33 29 2c 20 31 38 35 33 2d 31 38 | .Imaging.Sciences,.7(3),.1853-18 |
7040 | 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 6d 70 6f | 82.."""..import.numpy.as.np.impo |
7060 | 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 74 20 6d | rt.scipy.ndimage.as.spi.import.m |
7080 | 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c 0a 69 6d 70 6f 72 74 20 6f 74 0a | atplotlib.pylab.as.pl.import.ot. |
70a0 | 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 69 6d 72 | ..#%%.Loading.images..I1=spi.imr |
70c0 | 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 79 2e 6a 70 67 27 29 2e 61 73 74 | ead('../data/ocean_day.jpg').ast |
70e0 | 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 72 65 61 | ype(np.float64)/256.I2=spi.imrea |
7100 | 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 65 74 2e 6a 70 67 27 29 2e 61 73 | d('../data/ocean_sunset.jpg').as |
7120 | 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 74 20 69 | type(np.float64)/256..#%%.Plot.i |
7140 | 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 6f 74 28 | mages..pl.figure(1)..pl.subplot( |
7160 | 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 28 27 49 | 1,2,1).pl.imshow(I1).pl.title('I |
7180 | 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 6c 2e 69 | mage.1')..pl.subplot(1,2,2).pl.i |
71a0 | 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 0a 0a 70 | mshow(I2).pl.title('Image.2')..p |
71c0 | 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 6e 20 61 | l.show()..#%%.Image.conversion.a |
71e0 | 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 32 6d 61 | nd.dataset.generation..def.im2ma |
7200 | 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 20 61 6e 64 20 69 6d 61 67 65 20 | t(I):....."""Converts.and.image. |
7220 | 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 70 65 72 20 6c 69 6e 65 29 22 22 | to.matrix.(one.pixel.per.line)"" |
7240 | 22 0a 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 65 28 28 49 2e 73 68 61 70 65 5b | ".....return.I.reshape((I.shape[ |
7260 | 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 65 66 20 | 0]*I.shape[1],I.shape[2]))..def. |
7280 | 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 72 74 73 | mat2im(X,shape):....."""Converts |
72a0 | 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 69 6d 61 67 65 22 22 22 0a 20 20 | .back.a.matrix.to.an.image"""... |
72c0 | 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 3d 69 6d | ..return.X.reshape(shape)..X1=im |
72e0 | 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 69 6e 69 | 2mat(I1).X2=im2mat(I2)..#.traini |
7300 | 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 6e 64 6f | ng.samples.nb=1000.idx1=np.rando |
7320 | 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 62 2c 29 | m.randint(X1.shape[0],size=(nb,) |
7340 | 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 68 61 70 | ).idx2=np.random.randint(X2.shap |
7360 | 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 3a 5d 0a | e[0],size=(nb,))..xs=X1[idx1,:]. |
7380 | 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 20 64 69 | xt=X2[idx2,:]..#%%.Plot.image.di |
73a0 | 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 2c 35 29 | stributions...pl.figure(2,(10,5) |
73c0 | 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 65 72 28 | )..pl.subplot(1,2,1).pl.scatter( |
73e0 | 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 28 5b 30 | xs[:,0],xs[:,2],c=xs).pl.axis([0 |
7400 | 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 79 6c 61 | ,1,0,1]).pl.xlabel('Red').pl.yla |
7420 | 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 27 29 0a | bel('Blue').pl.title('Image.1'). |
7440 | 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 28 49 32 | .pl.subplot(1,2,2).#pl.imshow(I2 |
7460 | 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 63 3d 78 | ).pl.scatter(xt[:,0],xt[:,2],c=x |
7480 | 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 65 6c 28 | t).pl.axis([0,1,0,1]).pl.xlabel( |
74a0 | 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 6c | 'Red').pl.ylabel('Blue').pl.titl |
74c0 | 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 25 20 64 | e('Image.2')..pl.show()....#%%.d |
74e0 | 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 65 73 0a | omain.adaptation.between.images. |
7500 | 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 44 41 28 | .#.LP.problem.da_emd=ot.da.OTDA( |
7520 | 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 28 78 73 | ).....#.init.class.da_emd.fit(xs |
7540 | 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 73 0a 0a | ,xt).......#.fit.distributions.. |
7560 | 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 6d 62 64 | .#.sinkhorn.regularization.lambd |
7580 | 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 6e 6b 68 | =1e-1.da_entrop=ot.da.OTDA_sinkh |
75a0 | 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 3d 6c 61 | orn().da_entrop.fit(xs,xt,reg=la |
75c0 | 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 6e 20 69 | mbd)....#%%.prediction.between.i |
75e0 | 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 65 64 69 | mages.(using.out.of.sample.predi |
7600 | 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 70 72 65 | ction.as.in.[6])..X1t=da_emd.pre |
7620 | 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 32 2c 2d | dict(X1).X2t=da_emd.predict(X2,- |
7640 | 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 31 29 0a | 1)...X1te=da_entrop.predict(X1). |
7660 | 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 0a 0a 0a | X2te=da_entrop.predict(X2,-1)... |
7680 | 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 6d 69 6e | def.minmax(I):.....return.np.min |
76a0 | 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 6d 69 6e | imum(np.maximum(I,0),1)..I1t=min |
76c0 | 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 3d 6d 69 | max(mat2im(X1t,I1.shape)).I2t=mi |
76e0 | 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 31 74 65 | nmax(mat2im(X2t,I2.shape))..I1te |
7700 | 3d 6d 69 6e 6d 61 78 28 6d 61 74 32 69 6d 28 58 31 74 65 2c 49 31 2e 73 68 61 70 65 29 29 0a 49 | =minmax(mat2im(X1te,I1.shape)).I |
7720 | 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 70 65 29 | 2te=minmax(mat2im(X2te,I2.shape) |
7740 | 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 67 75 72 | )..#%%.plot.all.images..pl.figur |
7760 | 65 28 32 2c 28 31 30 2c 38 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a 0a | e(2,(10,8))..pl.subplot(2,3,1).. |
7780 | 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 20 31 27 | pl.imshow(I1).pl.title('Image.1' |
77a0 | 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 32 2c 33 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 | )..pl.subplot(2,3,2).pl.imshow(I |
77c0 | 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 0a 0a 0a | 1t).pl.title('Image.1.Adapt')... |
77e0 | 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 31 74 65 | pl.subplot(2,3,3).pl.imshow(I1te |
7800 | 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 20 41 64 61 70 74 20 28 72 65 67 29 27 | ).pl.title('Image.1.Adapt.(reg)' |
7820 | 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 6f 77 28 | )..pl.subplot(2,3,4)..pl.imshow( |
7840 | 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 75 62 70 | I2).pl.title('Image.2')..pl.subp |
7860 | 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 74 69 74 | lot(2,3,5).pl.imshow(I2t).pl.tit |
7880 | 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 6c 6f 74 | le('Image.2.Adapt')...pl.subplot |
78a0 | 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 74 6c 65 | (2,3,6).pl.imshow(I2te).pl.title |
78c0 | 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 68 6f 77 | ('Image.2.Adapt.(reg)')..pl.show |
78e0 | 28 29 0a 50 4b 03 04 14 00 00 00 00 00 a9 83 e3 4a f7 ba 1e e3 6d 0d 00 00 6d 0d 00 00 2f 00 00 | ().PK...........J....m...m.../.. |
7900 | 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 | .auto_examples/plot_OTDA_mapping |
7920 | 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 20 75 74 | _color_images.py#.-*-.coding:.ut |
7940 | 66 2d 38 20 2d 2a 2d 0a 22 22 22 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | f-8.-*-.""".==================== |
7960 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
7980 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
79a0 | 0a 4f 54 20 66 6f 72 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 77 69 74 68 20 69 | .OT.for.domain.adaptation.with.i |
79c0 | 6d 61 67 65 20 63 6f 6c 6f 72 20 61 64 61 70 74 61 74 69 6f 6e 20 5b 36 5d 20 77 69 74 68 20 6d | mage.color.adaptation.[6].with.m |
79e0 | 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 20 5b 38 5d 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | apping.estimation.[8].========== |
7a00 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
7a20 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ================================ |
7a40 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 5b 36 5d 20 46 65 72 72 61 64 61 6e 73 2c 20 53 2e 2c 20 50 | ==========..[6].Ferradans,.S.,.P |
7a60 | 61 70 61 64 61 6b 69 73 2c 20 4e 2e 2c 20 50 65 79 72 65 2c 20 47 2e 2c 20 26 20 41 75 6a 6f 6c | apadakis,.N.,.Peyre,.G.,.&.Aujol |
7a80 | 2c 20 4a 2e 20 46 2e 20 28 32 30 31 34 29 2e 20 52 65 67 75 6c 61 72 69 7a 65 64 0a 20 20 20 20 | ,.J..F..(2014)..Regularized..... |
7aa0 | 64 69 73 63 72 65 74 65 20 6f 70 74 69 6d 61 6c 20 74 72 61 6e 73 70 6f 72 74 2e 20 53 49 41 4d | discrete.optimal.transport..SIAM |
7ac0 | 20 4a 6f 75 72 6e 61 6c 20 6f 6e 20 49 6d 61 67 69 6e 67 20 53 63 69 65 6e 63 65 73 2c 20 37 28 | .Journal.on.Imaging.Sciences,.7( |
7ae0 | 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 20 4e 2e | 3),.1853-1882..[8].M..Perrot,.N. |
7b00 | 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 72 64 2c | .Courty,.R..Flamary,.A..Habrard, |
7b20 | 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 64 69 73 | ."Mapping.estimation.for.....dis |
7b40 | 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 72 61 6c | crete.optimal.transport",.Neural |
7b60 | 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 6d 73 20 | .Information.Processing.Systems. |
7b80 | 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 6d 70 79 | (NIPS),.2016..."""..import.numpy |
7ba0 | 20 61 73 20 6e 70 0a 69 6d 70 6f 72 74 20 73 63 69 70 79 2e 6e 64 69 6d 61 67 65 20 61 73 20 73 | .as.np.import.scipy.ndimage.as.s |
7bc0 | 70 69 0a 69 6d 70 6f 72 74 20 6d 61 74 70 6c 6f 74 6c 69 62 2e 70 79 6c 61 62 20 61 73 20 70 6c | pi.import.matplotlib.pylab.as.pl |
7be0 | 0a 69 6d 70 6f 72 74 20 6f 74 0a 0a 0a 23 25 25 20 4c 6f 61 64 69 6e 67 20 69 6d 61 67 65 73 0a | .import.ot...#%%.Loading.images. |
7c00 | 0a 49 31 3d 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 64 61 | .I1=spi.imread('../data/ocean_da |
7c20 | 79 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 0a 49 | y.jpg').astype(np.float64)/256.I |
7c40 | 32 3d 73 70 69 2e 69 6d 72 65 61 64 28 27 2e 2e 2f 64 61 74 61 2f 6f 63 65 61 6e 5f 73 75 6e 73 | 2=spi.imread('../data/ocean_suns |
7c60 | 65 74 2e 6a 70 67 27 29 2e 61 73 74 79 70 65 28 6e 70 2e 66 6c 6f 61 74 36 34 29 2f 32 35 36 0a | et.jpg').astype(np.float64)/256. |
7c80 | 0a 23 25 25 20 50 6c 6f 74 20 69 6d 61 67 65 73 0a 0a 70 6c 2e 66 69 67 75 72 65 28 31 29 0a 0a | .#%%.Plot.images..pl.figure(1).. |
7ca0 | 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a | pl.subplot(1,2,1).pl.imshow(I1). |
7cc0 | 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 | pl.title('Image.1')..pl.subplot( |
7ce0 | 31 2c 32 2c 32 29 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 | 1,2,2).pl.imshow(I2).pl.title('I |
7d00 | 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 28 29 0a 0a 23 25 25 20 49 6d 61 67 65 20 63 | mage.2')..pl.show()..#%%.Image.c |
7d20 | 6f 6e 76 65 72 73 69 6f 6e 20 61 6e 64 20 64 61 74 61 73 65 74 20 67 65 6e 65 72 61 74 69 6f 6e | onversion.and.dataset.generation |
7d40 | 0a 0a 64 65 66 20 69 6d 32 6d 61 74 28 49 29 3a 0a 20 20 20 20 22 22 22 43 6f 6e 76 65 72 74 73 | ..def.im2mat(I):....."""Converts |
7d60 | 20 61 6e 64 20 69 6d 61 67 65 20 74 6f 20 6d 61 74 72 69 78 20 28 6f 6e 65 20 70 69 78 65 6c 20 | .and.image.to.matrix.(one.pixel. |
7d80 | 70 65 72 20 6c 69 6e 65 29 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 49 2e 72 65 73 68 61 70 | per.line)""".....return.I.reshap |
7da0 | 65 28 28 49 2e 73 68 61 70 65 5b 30 5d 2a 49 2e 73 68 61 70 65 5b 31 5d 2c 49 2e 73 68 61 70 65 | e((I.shape[0]*I.shape[1],I.shape |
7dc0 | 5b 32 5d 29 29 0a 0a 64 65 66 20 6d 61 74 32 69 6d 28 58 2c 73 68 61 70 65 29 3a 0a 20 20 20 20 | [2]))..def.mat2im(X,shape):..... |
7de0 | 22 22 22 43 6f 6e 76 65 72 74 73 20 62 61 63 6b 20 61 20 6d 61 74 72 69 78 20 74 6f 20 61 6e 20 | """Converts.back.a.matrix.to.an. |
7e00 | 69 6d 61 67 65 22 22 22 0a 20 20 20 20 72 65 74 75 72 6e 20 58 2e 72 65 73 68 61 70 65 28 73 68 | image""".....return.X.reshape(sh |
7e20 | 61 70 65 29 0a 0a 58 31 3d 69 6d 32 6d 61 74 28 49 31 29 0a 58 32 3d 69 6d 32 6d 61 74 28 49 32 | ape)..X1=im2mat(I1).X2=im2mat(I2 |
7e40 | 29 0a 0a 23 20 74 72 61 69 6e 69 6e 67 20 73 61 6d 70 6c 65 73 0a 6e 62 3d 31 30 30 30 0a 69 64 | )..#.training.samples.nb=1000.id |
7e60 | 78 31 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 69 6e 74 28 58 31 2e 73 68 61 70 65 5b 30 5d | x1=np.random.randint(X1.shape[0] |
7e80 | 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 69 64 78 32 3d 6e 70 2e 72 61 6e 64 6f 6d 2e 72 61 6e 64 | ,size=(nb,)).idx2=np.random.rand |
7ea0 | 69 6e 74 28 58 32 2e 73 68 61 70 65 5b 30 5d 2c 73 69 7a 65 3d 28 6e 62 2c 29 29 0a 0a 78 73 3d | int(X2.shape[0],size=(nb,))..xs= |
7ec0 | 58 31 5b 69 64 78 31 2c 3a 5d 0a 78 74 3d 58 32 5b 69 64 78 32 2c 3a 5d 0a 0a 23 25 25 20 50 6c | X1[idx1,:].xt=X2[idx2,:]..#%%.Pl |
7ee0 | 6f 74 20 69 6d 61 67 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 73 0a 0a 0a 70 6c 2e 66 69 67 75 | ot.image.distributions...pl.figu |
7f00 | 72 65 28 32 2c 28 31 30 2c 35 29 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 31 29 0a | re(2,(10,5))..pl.subplot(1,2,1). |
7f20 | 70 6c 2e 73 63 61 74 74 65 72 28 78 73 5b 3a 2c 30 5d 2c 78 73 5b 3a 2c 32 5d 2c 63 3d 78 73 29 | pl.scatter(xs[:,0],xs[:,2],c=xs) |
7f40 | 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 | .pl.axis([0,1,0,1]).pl.xlabel('R |
7f60 | 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 | ed').pl.ylabel('Blue').pl.title( |
7f80 | 27 49 6d 61 67 65 20 31 27 29 0a 0a 70 6c 2e 73 75 62 70 6c 6f 74 28 31 2c 32 2c 32 29 0a 23 70 | 'Image.1')..pl.subplot(1,2,2).#p |
7fa0 | 6c 2e 69 6d 73 68 6f 77 28 49 32 29 0a 70 6c 2e 73 63 61 74 74 65 72 28 78 74 5b 3a 2c 30 5d 2c | l.imshow(I2).pl.scatter(xt[:,0], |
7fc0 | 78 74 5b 3a 2c 32 5d 2c 63 3d 78 74 29 0a 70 6c 2e 61 78 69 73 28 5b 30 2c 31 2c 30 2c 31 5d 29 | xt[:,2],c=xt).pl.axis([0,1,0,1]) |
7fe0 | 0a 70 6c 2e 78 6c 61 62 65 6c 28 27 52 65 64 27 29 0a 70 6c 2e 79 6c 61 62 65 6c 28 27 42 6c 75 | .pl.xlabel('Red').pl.ylabel('Blu |
8000 | 65 27 29 0a 70 6c 2e 74 69 74 6c 65 28 27 49 6d 61 67 65 20 32 27 29 0a 0a 70 6c 2e 73 68 6f 77 | e').pl.title('Image.2')..pl.show |
8020 | 28 29 0a 0a 0a 0a 23 25 25 20 64 6f 6d 61 69 6e 20 61 64 61 70 74 61 74 69 6f 6e 20 62 65 74 77 | ()....#%%.domain.adaptation.betw |
8040 | 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 20 72 65 | een.images.def.minmax(I):.....re |
8060 | 74 75 72 6e 20 6e 70 2e 6d 69 6e 69 6d 75 6d 28 6e 70 2e 6d 61 78 69 6d 75 6d 28 49 2c 30 29 2c | turn.np.minimum(np.maximum(I,0), |
8080 | 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 4f 54 44 | 1).#.LP.problem.da_emd=ot.da.OTD |
80a0 | 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 28 | A().....#.init.class.da_emd.fit( |
80c0 | 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 73 | xs,xt).......#.fit.distributions |
80e0 | 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 75 74 20 | ..X1t=da_emd.predict(X1)..#.out. |
8100 | 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 31 74 2c | of.sample.I1t=minmax(mat2im(X1t, |
8120 | 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 72 69 7a | I1.shape))..#.sinkhorn.regulariz |
8140 | 61 74 69 6f 6e 0a 6c 61 6d 62 64 3d 31 65 2d 31 0a 64 61 5f 65 6e 74 72 6f 70 3d 6f 74 2e 64 61 | ation.lambd=1e-1.da_entrop=ot.da |
8160 | 2e 4f 54 44 41 5f 73 69 6e 6b 68 6f 72 6e 28 29 0a 64 61 5f 65 6e 74 72 6f 70 2e 66 69 74 28 78 | .OTDA_sinkhorn().da_entrop.fit(x |
8180 | 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 6f 70 2e | s,xt,reg=lambd)..X1te=da_entrop. |
81a0 | 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 6d 28 58 | predict(X1).I1te=minmax(mat2im(X |
81c0 | 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 69 6e 67 | 1te,I1.shape))..#.linear.mapping |
81e0 | 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 72 61 74 | .estimation.eta=1e-8...#.quadrat |
8200 | 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 |
8220 | 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 |
8240 | 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 |
8260 | 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 |
8280 | 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 |
82a0 | 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 |
82c0 | 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 31 74 6c | Itermax.=.20,verbose=True)..X1tl |
82e0 | 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 20 74 68 | =ot_mapping.predict(X1).#.use.th |
8300 | 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 61 78 28 | e.estimated.mapping.I1tl=minmax( |
8320 | 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 6c 69 6e | mat2im(X1tl,I1.shape))..#.nonlin |
8340 | 65 61 72 20 6d 61 70 70 69 6e 67 20 65 73 74 69 6d 61 74 69 6f 6e 0a 65 74 61 3d 31 65 2d 32 20 | ear.mapping.estimation.eta=1e-2. |
8360 | 20 20 23 20 71 75 61 64 72 61 74 69 63 20 72 65 67 75 6c 61 72 69 7a 61 74 69 6f 6e 20 66 6f 72 | ..#.quadratic.regularization.for |
8380 | 20 72 65 67 72 65 73 73 69 6f 6e 0a 6d 75 3d 31 65 30 20 20 20 20 20 23 20 77 65 69 67 68 74 20 | .regression.mu=1e0.....#.weight. |
83a0 | 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 6c 73 65 | of.the.OT.linear.term.bias=False |
83c0 | 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 20 20 23 | ..#.estimate.a.bias.sigma=1....# |
83e0 | 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 20 6b 65 | .sigma.bandwidth.fot.gaussian.ke |
8400 | 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 61 2e 4f | rnel...ot_mapping_kernel=ot.da.O |
8420 | 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 6e 67 5f | TDA_mapping_kernel().ot_mapping_ |
8440 | 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 61 2c 73 | kernel.fit(xs,xt,mu=mu,eta=eta,s |
8460 | 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 61 78 20 | igma=sigma,bias=bias,numItermax. |
8480 | 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 61 70 70 | =.10,verbose=True)..X1tn=ot_mapp |
84a0 | 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 74 68 65 | ing_kernel.predict(X1).#.use.the |
84c0 | 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 78 28 6d | .estimated.mapping.I1tn=minmax(m |
84e0 | 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 74 20 69 | at2im(X1tn,I1.shape)).#%%.plot.i |
8500 | 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 70 6c 2e | mages...pl.figure(2,(10,8))..pl. |
8520 | 73 75 62 70 6c 6f 74 28 32 2c 33 2c 31 29 0a 0a 70 6c 2e 69 6d 73 68 6f 77 28 49 31 29 0a 70 6c | subplot(2,3,1)..pl.imshow(I1).pl |
8540 | 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 2c 33 2c | .title('Im..1')..pl.subplot(2,3, |
8560 | 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 6d 2e 20 | 2)..pl.imshow(I2).pl.title('Im.. |
8580 | 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 73 68 6f | 2')...pl.subplot(2,3,3).pl.imsho |
85a0 | 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 20 4c 50 | w(I1t).pl.title('Im..1.Interp.LP |
85c0 | 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 6f 77 28 | ')..pl.subplot(2,3,4).pl.imshow( |
85e0 | 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 45 6e 74 | I1te).pl.title('Im..1.Interp.Ent |
8600 | 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 69 6d 73 | rop')...pl.subplot(2,3,5).pl.ims |
8620 | 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 65 61 72 | how(I1tl).pl.title('Im..1.Linear |
8640 | 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 0a 70 6c | .mapping')..pl.subplot(2,3,6).pl |
8660 | 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 20 6e 6f | .imshow(I1tn).pl.title('Im..1.no |
8680 | 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 50 4b 01 | nlinear.mapping')..pl.show().PK. |
86a0 | 02 14 03 14 00 00 00 00 00 a9 83 e3 4a 2f 8a 49 ca a0 04 00 00 a0 04 00 00 19 00 00 00 00 00 00 | ............J/.I................ |
86c0 | 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 5f 57 44 | ...........auto_examples/plot_WD |
86e0 | 41 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a e7 a1 46 a7 95 0c 00 00 95 0c 00 00 | A.pyPK.............J..F......... |
8700 | 22 00 00 00 00 00 00 00 00 00 00 00 b4 81 d7 04 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f | ".................auto_examples/ |
8720 | 70 6c 6f 74 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 | plot_OTDA_mapping.pyPK.......... |
8740 | aa 83 e3 4a 75 a6 3a ed 10 05 00 00 10 05 00 00 21 00 00 00 00 00 00 00 00 00 00 00 b4 81 ac 11 | ...Ju.:.........!............... |
8760 | 00 00 61 75 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 | ..auto_examples/plot_optim_OTreg |
8780 | 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a f2 c1 a7 29 f1 09 00 00 f1 09 00 00 22 | .pyPK.............J...)........" |
87a0 | 00 00 00 00 00 00 00 00 00 00 00 b4 81 fb 16 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 | .................auto_examples/p |
87c0 | 6c 6f 74 5f 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 a9 | lot_OTDA_classes.pyPK........... |
87e0 | 83 e3 4a 58 62 bb 42 8f 03 00 00 8f 03 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 b4 81 2c 21 00 | ..JXb.B......................,!. |
8800 | 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 31 44 2e 70 79 50 4b 01 02 | .auto_examples/plot_OT_1D.pyPK.. |
8820 | 14 03 14 00 00 00 00 00 32 82 e3 4a 58 1b a1 c7 97 10 00 00 97 10 00 00 1d 00 00 00 00 00 00 00 | ........2..JX................... |
8840 | 00 00 00 00 b4 81 f4 24 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f | .......$..auto_examples/plot_OT_ |
8860 | 63 6f 6e 76 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a d8 dc 52 b3 62 0a 00 00 62 | conv.pyPK.............J..R.b...b |
8880 | 0a 00 00 23 00 00 00 00 00 00 00 00 00 00 00 b4 81 c6 35 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c | ...#..............5..auto_exampl |
88a0 | 65 73 2f 70 6c 6f 74 5f 62 61 72 79 63 65 6e 74 65 72 5f 31 44 2e 70 79 50 4b 01 02 14 03 14 00 | es/plot_barycenter_1D.pyPK...... |
88c0 | 00 00 00 00 6a 7b 82 49 25 c9 d6 13 1c 06 00 00 1c 06 00 00 28 00 00 00 00 00 00 00 00 00 00 00 | ....j{.I%...........(........... |
88e0 | b4 81 69 40 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 73 | ..i@..auto_examples/demo_OT_2D_s |
8900 | 61 6d 70 6c 65 73 6c 61 72 67 65 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a 19 12 | ampleslarge.pyPK.............J.. |
8920 | 26 b2 be 0a 00 00 be 0a 00 00 21 00 00 00 00 00 00 00 00 00 00 00 b4 81 cb 46 00 00 61 75 74 6f | &.........!..............F..auto |
8940 | 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 5f 4c 31 5f 76 73 5f 4c 32 2e 70 79 50 4b 01 | _examples/plot_OT_L1_vs_L2.pyPK. |
8960 | 02 14 03 14 00 00 00 00 00 a9 83 e3 4a b4 93 15 da 5a 06 00 00 5a 06 00 00 23 00 00 00 00 00 00 | ............J....Z...Z...#...... |
8980 | 00 00 00 00 00 b4 81 c8 51 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 | ........Q..auto_examples/plot_OT |
89a0 | 5f 32 44 5f 73 61 6d 70 6c 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a ec af | _2D_samples.pyPK.............J.. |
89c0 | 42 31 2e 0a 00 00 2e 0a 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 b4 81 63 58 00 00 61 75 74 6f | B1......................cX..auto |
89e0 | 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 03 14 | _examples/plot_OTDA_2D.pyPK..... |
8a00 | 00 00 00 00 00 aa 83 e3 4a c5 46 2c f5 21 06 00 00 21 06 00 00 21 00 00 00 00 00 00 00 00 00 00 | ........J.F,.!...!...!.......... |
8a20 | 00 b4 81 cc 62 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 63 6f 6d 70 75 74 | ....b..auto_examples/plot_comput |
8a40 | 65 5f 65 6d 64 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 6a 7b 82 49 d4 40 d8 69 2e 05 00 00 | e_emd.pyPK..........j{.I.@.i.... |
8a60 | 2e 05 00 00 20 00 00 00 00 00 00 00 00 00 00 00 b4 81 2c 69 00 00 61 75 74 6f 5f 65 78 61 6d 70 | ..................,i..auto_examp |
8a80 | 6c 65 73 2f 64 65 6d 6f 5f 4f 54 5f 31 44 5f 74 65 73 74 2e 70 79 50 4b 01 02 14 03 14 00 00 00 | les/demo_OT_1D_test.pyPK........ |
8aa0 | 00 00 a9 83 e3 4a a5 25 9f a1 06 0a 00 00 06 0a 00 00 27 00 00 00 00 00 00 00 00 00 00 00 b4 81 | .....J.%..........'............. |
8ac0 | 98 6e 00 00 61 75 74 6f 5f 65 78 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 63 6f 6c 6f | .n..auto_examples/plot_OTDA_colo |
8ae0 | 72 5f 69 6d 61 67 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a9 83 e3 4a f7 ba 1e e3 6d | r_images.pyPK.............J....m |
8b00 | 0d 00 00 6d 0d 00 00 2f 00 00 00 00 00 00 00 00 00 00 00 b4 81 e3 78 00 00 61 75 74 6f 5f 65 78 | ...m.../..............x..auto_ex |
8b20 | 61 6d 70 6c 65 73 2f 70 6c 6f 74 5f 4f 54 44 41 5f 6d 61 70 70 69 6e 67 5f 63 6f 6c 6f 72 5f 69 | amples/plot_OTDA_mapping_color_i |
8b40 | 6d 61 67 65 73 2e 70 79 50 4b 05 06 00 00 00 00 0f 00 0f 00 ab 04 00 00 9d 86 00 00 00 00 | mages.pyPK.................... |