From e458b7a58d9790e7c5ff40dea235402d9c4c8662 Mon Sep 17 00:00:00 2001 From: RĂ©mi Flamary Date: Fri, 2 Dec 2016 15:38:59 +0100 Subject: add doc for gallery --- docs/source/auto_examples/plot_OT_2D_samples.rst | 144 +++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 docs/source/auto_examples/plot_OT_2D_samples.rst (limited to 'docs/source/auto_examples/plot_OT_2D_samples.rst') diff --git a/docs/source/auto_examples/plot_OT_2D_samples.rst b/docs/source/auto_examples/plot_OT_2D_samples.rst new file mode 100644 index 0000000..bc86cb8 --- /dev/null +++ b/docs/source/auto_examples/plot_OT_2D_samples.rst @@ -0,0 +1,144 @@ + + +.. _sphx_glr_auto_examples_plot_OT_2D_samples.py: + + +==================================================== +2D Optimal transport between empirical distributions +==================================================== + +@author: rflamary + + + + +.. rst-class:: sphx-glr-horizontal + + + * + + .. image:: /auto_examples/images/sphx_glr_plot_OT_2D_samples_001.png + :scale: 47 + + * + + .. image:: /auto_examples/images/sphx_glr_plot_OT_2D_samples_002.png + :scale: 47 + + * + + .. image:: /auto_examples/images/sphx_glr_plot_OT_2D_samples_003.png + :scale: 47 + + * + + .. image:: /auto_examples/images/sphx_glr_plot_OT_2D_samples_004.png + :scale: 47 + + * + + .. image:: /auto_examples/images/sphx_glr_plot_OT_2D_samples_005.png + :scale: 47 + + * + + .. image:: /auto_examples/images/sphx_glr_plot_OT_2D_samples_006.png + :scale: 47 + + + + + +.. code-block:: python + + + import numpy as np + import matplotlib.pylab as pl + import ot + + #%% parameters and data generation + + n=20 # nb samples + + mu_s=np.array([0,0]) + cov_s=np.array([[1,0],[0,1]]) + + mu_t=np.array([4,4]) + cov_t=np.array([[1,-.8],[-.8,1]]) + + xs=ot.datasets.get_2D_samples_gauss(n,mu_s,cov_s) + xt=ot.datasets.get_2D_samples_gauss(n,mu_t,cov_t) + + a,b = ot.unif(n),ot.unif(n) # uniform distribution on samples + + # loss matrix + M=ot.dist(xs,xt) + M/=M.max() + + #%% plot samples + + pl.figure(1) + pl.plot(xs[:,0],xs[:,1],'+b',label='Source samples') + pl.plot(xt[:,0],xt[:,1],'xr',label='Target samples') + pl.legend(loc=0) + pl.title('Source and traget distributions') + + pl.figure(2) + pl.imshow(M,interpolation='nearest') + pl.title('Cost matrix M') + + + #%% EMD + + G0=ot.emd(a,b,M) + + pl.figure(3) + pl.imshow(G0,interpolation='nearest') + pl.title('OT matrix G0') + + pl.figure(4) + ot.plot.plot2D_samples_mat(xs,xt,G0,c=[.5,.5,1]) + pl.plot(xs[:,0],xs[:,1],'+b',label='Source samples') + pl.plot(xt[:,0],xt[:,1],'xr',label='Target samples') + pl.legend(loc=0) + pl.title('OT matrix with samples') + + + #%% sinkhorn + + # reg term + lambd=5e-3 + + Gs=ot.sinkhorn(a,b,M,lambd) + + pl.figure(5) + pl.imshow(Gs,interpolation='nearest') + pl.title('OT matrix sinkhorn') + + pl.figure(6) + ot.plot.plot2D_samples_mat(xs,xt,Gs,color=[.5,.5,1]) + pl.plot(xs[:,0],xs[:,1],'+b',label='Source samples') + pl.plot(xt[:,0],xt[:,1],'xr',label='Target samples') + pl.legend(loc=0) + pl.title('OT matrix Sinkhorn with samples') + +**Total running time of the script:** ( 0 minutes 1.051 seconds) + + + +.. container:: sphx-glr-footer + + + .. container:: sphx-glr-download + + :download:`Download Python source code: plot_OT_2D_samples.py ` + + + + .. container:: sphx-glr-download + + :download:`Download Jupyter notebook: plot_OT_2D_samples.ipynb ` + +.. rst-class:: sphx-glr-signature + + `Generated by Sphinx-Gallery `_ -- cgit v1.2.3