summaryrefslogtreecommitdiff
path: root/notebooks/plot_barycenter_lp_vs_entropic.ipynb
diff options
context:
space:
mode:
authorRémi Flamary <remi.flamary@gmail.com>2020-04-22 11:39:23 +0200
committerRémi Flamary <remi.flamary@gmail.com>2020-04-22 11:39:23 +0200
commit135c011092cb442b0b874b565b6a2ca3f09234c4 (patch)
tree06a1a5209ee090824ae74af76bd2426295edc424 /notebooks/plot_barycenter_lp_vs_entropic.ipynb
parent5f679247f64fa1c8e277f34165850caea311a084 (diff)
remove notebooks and cleanup readme and doc
Diffstat (limited to 'notebooks/plot_barycenter_lp_vs_entropic.ipynb')
-rw-r--r--notebooks/plot_barycenter_lp_vs_entropic.ipynb592
1 files changed, 0 insertions, 592 deletions
diff --git a/notebooks/plot_barycenter_lp_vs_entropic.ipynb b/notebooks/plot_barycenter_lp_vs_entropic.ipynb
deleted file mode 100644
index b5d7895..0000000
--- a/notebooks/plot_barycenter_lp_vs_entropic.ipynb
+++ /dev/null
@@ -1,592 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "# 1D Wasserstein barycenter comparison between exact LP and entropic regularization\n",
- "\n",
- "\n",
- "This example illustrates the computation of regularized Wasserstein Barycenter\n",
- "as proposed in [3] and exact LP barycenters using standard LP solver.\n",
- "\n",
- "It reproduces approximately Figure 3.1 and 3.2 from the following paper:\n",
- "Cuturi, M., & Peyré, G. (2016). A smoothed dual approach for variational\n",
- "Wasserstein problems. SIAM Journal on Imaging Sciences, 9(1), 320-343.\n",
- "\n",
- "[3] Benamou, J. D., Carlier, G., Cuturi, M., Nenna, L., & Peyré, G. (2015).\n",
- "Iterative Bregman projections for regularized transportation problems\n",
- "SIAM Journal on Scientific Computing, 37(2), A1111-A1138.\n",
- "\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "# Author: Remi Flamary <remi.flamary@unice.fr>\n",
- "#\n",
- "# License: MIT License\n",
- "\n",
- "import numpy as np\n",
- "import matplotlib.pylab as pl\n",
- "import ot\n",
- "# necessary for 3d plot even if not used\n",
- "from mpl_toolkits.mplot3d import Axes3D # noqa\n",
- "from matplotlib.collections import PolyCollection # noqa\n",
- "\n",
- "#import ot.lp.cvx as cvx"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Gaussian Data\n",
- "-------------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "problems = []\n",
- "\n",
- "n = 100 # nb bins\n",
- "\n",
- "# bin positions\n",
- "x = np.arange(n, dtype=np.float64)\n",
- "\n",
- "# Gaussian distributions\n",
- "# Gaussian distributions\n",
- "a1 = ot.datasets.make_1D_gauss(n, m=20, s=5) # m= mean, s= std\n",
- "a2 = ot.datasets.make_1D_gauss(n, m=60, s=8)\n",
- "\n",
- "# creating matrix A containing all distributions\n",
- "A = np.vstack((a1, a2)).T\n",
- "n_distributions = A.shape[1]\n",
- "\n",
- "# loss matrix + normalization\n",
- "M = ot.utils.dist0(n)\n",
- "M /= M.max()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 460.8x216 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "pl.figure(1, figsize=(6.4, 3))\n",
- "for i in range(n_distributions):\n",
- " pl.plot(x, A[:, i])\n",
- "pl.title('Distributions')\n",
- "pl.tight_layout()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Elapsed time : 0.008066177368164062 s\n",
- "Primal Feasibility Dual Feasibility Duality Gap Step Path Parameter Objective \n",
- "1.0 1.0 1.0 - 1.0 1700.336700337 \n",
- "0.006776453137632 0.006776453137632 0.006776453137632 0.9932238647293 0.006776453137632 125.6700527543 \n",
- "0.004018712867873 0.004018712867873 0.004018712867873 0.4301142633001 0.004018712867873 12.26594150092 \n",
- "0.001172775061627 0.001172775061627 0.001172775061627 0.7599932455027 0.001172775061627 0.3378536968898 \n",
- "0.0004375137005386 0.0004375137005386 0.0004375137005386 0.6422331807989 0.0004375137005386 0.1468420566359 \n",
- "0.0002326690467339 0.0002326690467339 0.0002326690467339 0.5016999460898 0.0002326690467339 0.09381703231428 \n",
- "7.430121674299e-05 7.4301216743e-05 7.430121674299e-05 0.7035962305811 7.430121674299e-05 0.05777870257169 \n",
- "5.321227838943e-05 5.321227838945e-05 5.321227838944e-05 0.3087841864307 5.321227838944e-05 0.05266249477219 \n",
- "1.990900379216e-05 1.99090037922e-05 1.990900379216e-05 0.6520472013271 1.990900379216e-05 0.04526054405523 \n",
- "6.305442046834e-06 6.305442046856e-06 6.305442046837e-06 0.7073953304085 6.305442046837e-06 0.04237597591384 \n",
- "2.290148391591e-06 2.290148391631e-06 2.290148391602e-06 0.6941812711476 2.29014839161e-06 0.04152284932101 \n",
- "1.182864875578e-06 1.182864875548e-06 1.182864875555e-06 0.5084552046229 1.182864875567e-06 0.04129461872829 \n",
- "3.626786386894e-07 3.626786386985e-07 3.626786386845e-07 0.7101651569095 3.626786385995e-07 0.0411303244893 \n",
- "1.539754244475e-07 1.539754247164e-07 1.539754247197e-07 0.6279322077522 1.539754251915e-07 0.04108867636377 \n",
- "5.193221608537e-08 5.19322169648e-08 5.193221696942e-08 0.6843453280956 5.193221892276e-08 0.04106859618454 \n",
- "1.888205219929e-08 1.88820500654e-08 1.888205006369e-08 0.6673443828803 1.888205852187e-08 0.04106214175236 \n",
- "5.676837529301e-09 5.676842740457e-09 5.676842761502e-09 0.7281712198286 5.676877044229e-09 0.04105958648535 \n",
- "3.501170987746e-09 3.501167688027e-09 3.501167721804e-09 0.4140142115019 3.501183058995e-09 0.04105916265728 \n",
- "1.110582426269e-09 1.110580273241e-09 1.110580239523e-09 0.6999003212726 1.110624310022e-09 0.04105870073273 \n",
- "5.768753963318e-10 5.769422203363e-10 5.769421938248e-10 0.5002521235315 5.767522037401e-10 0.04105859764872 \n",
- "1.534102102874e-10 1.535920569433e-10 1.535921107494e-10 0.7516900610544 1.535251083958e-10 0.04105851678411 \n",
- "6.717475002202e-11 6.735435784522e-11 6.735430717133e-11 0.5944268235824 6.732253215483e-11 0.04105850033323 \n",
- "1.751321118837e-11 1.74043080851e-11 1.740429001123e-11 0.7566075167358 1.736956306927e-11 0.0410584908946 \n",
- "Optimization terminated successfully.\n",
- " Current function value: 0.041058 \n",
- " Iterations: 22\n",
- "Elapsed time : 2.3570468425750732 s\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 2 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "alpha = 0.5 # 0<=alpha<=1\n",
- "weights = np.array([1 - alpha, alpha])\n",
- "\n",
- "# l2bary\n",
- "bary_l2 = A.dot(weights)\n",
- "\n",
- "# wasserstein\n",
- "reg = 1e-3\n",
- "ot.tic()\n",
- "bary_wass = ot.bregman.barycenter(A, M, reg, weights)\n",
- "ot.toc()\n",
- "\n",
- "\n",
- "ot.tic()\n",
- "bary_wass2 = ot.lp.barycenter(A, M, weights, solver='interior-point', verbose=True)\n",
- "ot.toc()\n",
- "\n",
- "pl.figure(2)\n",
- "pl.clf()\n",
- "pl.subplot(2, 1, 1)\n",
- "for i in range(n_distributions):\n",
- " pl.plot(x, A[:, i])\n",
- "pl.title('Distributions')\n",
- "\n",
- "pl.subplot(2, 1, 2)\n",
- "pl.plot(x, bary_l2, 'r', label='l2')\n",
- "pl.plot(x, bary_wass, 'g', label='Reg Wasserstein')\n",
- "pl.plot(x, bary_wass2, 'b', label='LP Wasserstein')\n",
- "pl.legend()\n",
- "pl.title('Barycenters')\n",
- "pl.tight_layout()\n",
- "\n",
- "problems.append([A, [bary_l2, bary_wass, bary_wass2]])"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Stair Data\n",
- "----------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "a1 = 1.0 * (x > 10) * (x < 50)\n",
- "a2 = 1.0 * (x > 60) * (x < 80)\n",
- "\n",
- "a1 /= a1.sum()\n",
- "a2 /= a2.sum()\n",
- "\n",
- "# creating matrix A containing all distributions\n",
- "A = np.vstack((a1, a2)).T\n",
- "n_distributions = A.shape[1]\n",
- "\n",
- "# loss matrix + normalization\n",
- "M = ot.utils.dist0(n)\n",
- "M /= M.max()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 460.8x216 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "pl.figure(1, figsize=(6.4, 3))\n",
- "for i in range(n_distributions):\n",
- " pl.plot(x, A[:, i])\n",
- "pl.title('Distributions')\n",
- "pl.tight_layout()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Elapsed time : 0.007988214492797852 s\n",
- "Primal Feasibility Dual Feasibility Duality Gap Step Path Parameter Objective \n",
- "1.0 1.0 1.0 - 1.0 1700.336700337 \n",
- "0.006776466288938 0.006776466288938 0.006776466288938 0.9932238515788 0.006776466288938 125.66492558 \n",
- "0.004036918865472 0.004036918865472 0.004036918865472 0.4272973099325 0.004036918865472 12.347161701 \n",
- "0.001219232687076 0.001219232687076 0.001219232687076 0.7496986855957 0.001219232687076 0.3243835647418 \n",
- "0.0003837422984467 0.0003837422984467 0.0003837422984467 0.6926882608271 0.0003837422984467 0.1361719397498 \n",
- "0.0001070128410194 0.0001070128410194 0.0001070128410194 0.7643889137854 0.0001070128410194 0.07581952832542 \n",
- "0.0001001275033713 0.0001001275033714 0.0001001275033713 0.07058704838615 0.0001001275033713 0.07347394936346 \n",
- "4.550897507807e-05 4.550897507807e-05 4.550897507807e-05 0.576117248486 4.550897507807e-05 0.05555077655034 \n",
- "8.557124125834e-06 8.557124125853e-06 8.557124125835e-06 0.853592544106 8.557124125835e-06 0.0443981466023 \n",
- "3.611995628666e-06 3.611995628643e-06 3.611995628672e-06 0.6002277331398 3.611995628673e-06 0.0428300776216 \n",
- "7.590393750111e-07 7.590393750273e-07 7.590393750129e-07 0.8221486533655 7.590393750133e-07 0.04192322976247 \n",
- "8.299929287077e-08 8.299929283415e-08 8.299929287126e-08 0.901746793884 8.299929287181e-08 0.04170825633295 \n",
- "3.117560207452e-10 3.117560192413e-10 3.117560199213e-10 0.9970399692253 3.117560200234e-10 0.04168179329766 \n",
- "1.559774508975e-14 1.559825507727e-14 1.559755309294e-14 0.9999499686993 1.559748033629e-14 0.04168169240444 \n",
- "Optimization terminated successfully.\n",
- " Current function value: 0.041682 \n",
- " Iterations: 13\n",
- "Elapsed time : 1.8278961181640625 s\n"
- ]
- },
- {
- "data": {
- "image/png": "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ae7Rm7ariHW713HX3LsY0noIv0/+/RHrrrnGdY1evhx+9zt45hm46KLDI54bp37N+rw87GV+2vETD372YLHlfH8Du1nXlJclqDLo06cPW7cenlT4iSeeoEePHnTq1Im//vWv+csfeugh2rZty6mnnsqll17KP/5RdLaRvn375iekhQsXcttttx3xul+/fgC8/PLL9OjRg86dO3PhhRdy4MABAD744AM6dOhA586d6d+/PwArVqygZ8+eJCcn06lTJ9Z6842//fbb+cuvv/76/GSUmJjIHXfcQefOnfn6668ZN24c7du3p1OnTtx5550sXLiQ6dOn8+c//5nk5GTWr1/P+vXrGTx4MN26deN3v/sdq1evBmD8+PH5v+fpp5/OXXfdRc+ePTnppJP44osvgvdHKMT3Yej79l6QqnLNf68hNiqWl4e97Hea+REj3BBGW7e6ZOev9mTgnDbncE3yNfz9q7+z9NelfstYDcoES6W7UXfsJ2NZ/ltwhxZKPjaZpwcHNt1Gbm4u8+bNY8yYMQDMmTOHtWvXsmTJElSV4cOH8/nnn1OzZk3+/e9/8/3335OdnU3Xrl3p1q1bke3169ePzz77jGuvvZYNGzYwcuRIXnrpJcAlqHHj3NyPF1xwAX/4wx8AuPfee3n11Ve5+eabefDBB5k9ezZNmzbNb3acOHEit956K5dffjlZWVnk5uayatUqpkyZwldffUVsbCw33ngj77zzDldddRUZGRn06tWLJ598ktTUVMaMGcPq1asREfbu3Uu9evUYPnw4Q4cOzR9/cMCAAUycOJE2bdqwePFibrzxRub7GZsnJyeHJUuWMGvWLB544AHmBjIbXxmkpbkPRn+VzU83fcoXv3zBxHMn0rRO02K3cdppblTxNWus9lSSpwY9xfQ10/nbF3/jP5f8p8h6Xw3KEpQpr0qXoMIlMzOT5ORktm7dSrt27Rg4cCDgEtScOXPo0qUL4IZEWrt2LWlpaZx33nnEx8cTHx/PsGHD/G63b9++PProo2zcuJGkpCTi4+NRVdLT01m2bBm9evUC4KeffuLee+9l7969pKenM2jQIMAluKuvvpqLL76YCy64AHA1vEceeYSUlBQuuOAC2rRpw7x581i2bBk9vIHhMjMzOeaYYwB3fe3CCy8EoG7dusTHxzNmzBiGDh3K0KFDi8Scnp7OwoULGTly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WIsXLyYqKorGjRsfsbxfv3488IAbTHPJkiU88MADPPPMM4BLUL7hjE499VQWLVqEiPDKK6/w+OOP8+STT/KPf/yD559/nn79+pGenk58fDyTJk1i0KBB/OUvfyE3N5cDBw6wa9cuHn74YebOnUtCQgKPPfYYTz31FPd7Exs1bNiQb7/9FoDjjz+ejRs3UqNGjfzpNG644QYSExO50+tGfNlll3Hbbbdx6qmn8ssvvzBo0KD8iRUL2rZtG19++SWrV69m+PDh+dNxhJLvgzAxEV5bM4MmCU3o0bRHyOOosg4dgszMEpv4AIafNJy/Lvgr29O3k5DQxGpQptwqXYKKNBMmTODtt9+mdu3aTJkypchkeD169OC7774jIyOD7OxsEhMTadWqFevWrWPhwoXccccdAKSkpHDJJZewbds2srKyaNnSXT/p168ft99+O5dffjkXXHABzZo1o0ePHlxzzTVkZ2czYsQIkpOT+eyzz1i5cmV+jSwrKyt/8FmASy65JP95p06duPzyyxkxYgQjRozw+3vNnTv3iBl09+/fn18jK2jEiBFERUXRvn37/FpfqPlqUPG1svl43ceMbD+SKLHGgaDZt889llCDAhjWdhj3L7ifmWtnkpBwTdVJUDEx7tuPJaiQq3QJqrw1nWC77bbb8msd/tSqVYs2bdrw2muv5Q911Lt3b2bNmsWOHTto27YtADfffDO33347w4cPZ8GCBYwfPx6AcePGce655zJr1iz69evH7Nmz6d+/P59//jkzZ87k6quv5vbbb6d+/foMHDiQd999128cCQXu35g5cyaff/45M2bM4JFHHuHHH38sUj4vL49FixYRH1/yFBW+6TQAwjWuoy9vrti3mP2H9lvzXrD5mrZKSVCdm3SmeZ3mTP95OicnXlN1mvjA/e7WxBdyAX3NFJHBIvKziKwTkSJXyEWkhohM8dYvFpEkb/lAEVkmIj96j2cGN/zKoW/fvjz99NNHTKfxzDPP0Lt37/wa1759+2ja1N1U+sYbb+S/d/369XTs2JG77rqLHj16sHr1ajZv3kyTJk34wx/+wLXXXsu3335L7969+eqrr1i3bh0AGRkZrFmzhsLy8vLYsmULZ5xxBo899hj79u0jPT39iOk0AM4++2z++c9/5r8OZO6ncPF9EH6xbRbxMfGc1eqs8AZU1fhqDqU08YkIw9sO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\n",
- "text/plain": [
- "<Figure size 432x288 with 2 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "alpha = 0.5 # 0<=alpha<=1\n",
- "weights = np.array([1 - alpha, alpha])\n",
- "\n",
- "# l2bary\n",
- "bary_l2 = A.dot(weights)\n",
- "\n",
- "# wasserstein\n",
- "reg = 1e-3\n",
- "ot.tic()\n",
- "bary_wass = ot.bregman.barycenter(A, M, reg, weights)\n",
- "ot.toc()\n",
- "\n",
- "\n",
- "ot.tic()\n",
- "bary_wass2 = ot.lp.barycenter(A, M, weights, solver='interior-point', verbose=True)\n",
- "ot.toc()\n",
- "\n",
- "\n",
- "problems.append([A, [bary_l2, bary_wass, bary_wass2]])\n",
- "\n",
- "pl.figure(2)\n",
- "pl.clf()\n",
- "pl.subplot(2, 1, 1)\n",
- "for i in range(n_distributions):\n",
- " pl.plot(x, A[:, i])\n",
- "pl.title('Distributions')\n",
- "\n",
- "pl.subplot(2, 1, 2)\n",
- "pl.plot(x, bary_l2, 'r', label='l2')\n",
- "pl.plot(x, bary_wass, 'g', label='Reg Wasserstein')\n",
- "pl.plot(x, bary_wass2, 'b', label='LP Wasserstein')\n",
- "pl.legend()\n",
- "pl.title('Barycenters')\n",
- "pl.tight_layout()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Dirac Data\n",
- "----------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "a1 = np.zeros(n)\n",
- "a2 = np.zeros(n)\n",
- "\n",
- "a1[10] = .25\n",
- "a1[20] = .5\n",
- "a1[30] = .25\n",
- "a2[80] = 1\n",
- "\n",
- "\n",
- "a1 /= a1.sum()\n",
- "a2 /= a2.sum()\n",
- "\n",
- "# creating matrix A containing all distributions\n",
- "A = np.vstack((a1, a2)).T\n",
- "n_distributions = A.shape[1]\n",
- "\n",
- "# loss matrix + normalization\n",
- "M = ot.utils.dist0(n)\n",
- "M /= M.max()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 460.8x216 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "pl.figure(1, figsize=(6.4, 3))\n",
- "for i in range(n_distributions):\n",
- " pl.plot(x, A[:, i])\n",
- "pl.title('Distributions')\n",
- "pl.tight_layout()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Elapsed time : 0.0016779899597167969 s\n",
- "Primal Feasibility Dual Feasibility Duality Gap Step Path Parameter Objective \n",
- "1.0 1.0 1.0 - 1.0 1700.336700337 \n",
- "0.00677467552072 0.006774675520719 0.006774675520719 0.9932256422636 0.006774675520719 125.6956034741 \n",
- "0.002048208707556 0.002048208707555 0.002048208707555 0.734309536815 0.002048208707555 5.213991622102 \n",
- "0.0002697365474791 0.0002697365474791 0.0002697365474791 0.8839403501183 0.0002697365474791 0.5059383903908 \n",
- "6.832109993919e-05 6.832109993918e-05 6.832109993918e-05 0.7601171075982 6.832109993918e-05 0.2339657807271 \n",
- "2.437682932221e-05 2.437682932221e-05 2.437682932221e-05 0.6663448297463 2.437682932221e-05 0.1471256246325 \n",
- "1.134983216308e-05 1.134983216308e-05 1.134983216308e-05 0.5553643816417 1.134983216308e-05 0.1181584941171 \n",
- "3.342312725863e-06 3.34231272585e-06 3.342312725863e-06 0.7238133571629 3.342312725863e-06 0.1006387519746 \n",
- "7.078561231536e-07 7.078561231537e-07 7.078561231535e-07 0.803314255252 7.078561231535e-07 0.09474734646268 \n",
- "1.966870949422e-07 1.966870952674e-07 1.966870952717e-07 0.7525479180433 1.966870953014e-07 0.09354342735758 \n",
- "4.199895266495e-10 4.199895367352e-10 4.19989526535e-10 0.9984019849265 4.199895265747e-10 0.09310367785861 \n",
- "2.101053559204e-14 2.100331212975e-14 2.101054034304e-14 0.9999499736903 2.101053604307e-14 0.09310274466458 \n",
- "Optimization terminated successfully.\n",
- " Current function value: 0.093103 \n",
- " Iterations: 11\n",
- "Elapsed time : 1.8065369129180908 s\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 2 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "alpha = 0.5 # 0<=alpha<=1\n",
- "weights = np.array([1 - alpha, alpha])\n",
- "\n",
- "# l2bary\n",
- "bary_l2 = A.dot(weights)\n",
- "\n",
- "# wasserstein\n",
- "reg = 1e-3\n",
- "ot.tic()\n",
- "bary_wass = ot.bregman.barycenter(A, M, reg, weights)\n",
- "ot.toc()\n",
- "\n",
- "\n",
- "ot.tic()\n",
- "bary_wass2 = ot.lp.barycenter(A, M, weights, solver='interior-point', verbose=True)\n",
- "ot.toc()\n",
- "\n",
- "\n",
- "problems.append([A, [bary_l2, bary_wass, bary_wass2]])\n",
- "\n",
- "pl.figure(2)\n",
- "pl.clf()\n",
- "pl.subplot(2, 1, 1)\n",
- "for i in range(n_distributions):\n",
- " pl.plot(x, A[:, i])\n",
- "pl.title('Distributions')\n",
- "\n",
- "pl.subplot(2, 1, 2)\n",
- "pl.plot(x, bary_l2, 'r', label='l2')\n",
- "pl.plot(x, bary_wass, 'g', label='Reg Wasserstein')\n",
- "pl.plot(x, bary_wass2, 'b', label='LP Wasserstein')\n",
- "pl.legend()\n",
- "pl.title('Barycenters')\n",
- "pl.tight_layout()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Final figure\n",
- "------------\n",
- "\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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//5vr6MSEREv7doF0ajz9vbt3sYiIjKUioqKA5674YYbmD17NvPmzePMM89k48aNA35sR0cHp512GrFYjA0bNlBaWsqCBQt6HrfffntKMW3bto2LLrpowNecfvrp1NfXj+j4g1m5ciXvf//703rMXKZKmyxRpU1KlLSREWtvd4YPn3suGAOnngof+Qj87Gewe7fX0YmIiFe2bdv/tpI2IpKPjj76aOrr61mxYgUXXXQR11xzzYCv+9WvfsW73vUugsEgANOnT+fll1/ueVxxxRUpxTFx4kTuvvvulI6RjLlz57JlyxY2bdqUtXN6SUmbLFHSJiVK2siIPfKIU/p+7rn7n/vAByAWcypwRESkMPVO2jQ0eBeHiMhInXHGGZSVlQFwwgknsGXLlgFf95vf/IZ3vvOdQx6vdzXP3Xff3VPNsmPHDi644ALmz5/P/Pnzefrpp/t8l1OKfwAAIABJREFU3IYNG5gzZw7gVPVccsklzJo1iwsuuICOjo6e1z300EMsXryYY445hosvvpjW1lYArrvuOo499ljmzJnD1VdfjU0MGjv99NP5/Oc/z3HHHccRRxzBE0880XOs8847j9///vdDfk5+oPaoLFF7VEq05beM2AMPQEWFU2HjWrQIJk2Ce+6BFG8siIhIntq6df/bqrQRkWH79Kfh5ZfTe8wFC+AHP0jpELfeeitvf/vbD3g+Eomwbt06pk2b1vPc2rVrWbBgQc/ff/zjH3PKKacMeuxPfepTnHbaadxzzz3EYrGeZMtAbrrpJsrKyli9ejUrVqzgmGOOAaCxsZFvfvObPPzww5SXl/O///u/3HDDDVx77bV84hOf4NprrwXg8ssv54EHHuC8884DIBqN8vzzz/O3v/2Nr3/96zz88MMALFq0iO985zuDVhf5iSptskSVNilR0kYOqrvb+b9VXt73eWudpM3ZZ0M4vP95Y2DJEme+TXs7JG5QiIhIAdm2zVkPiooyV2nzq18524r/4Q+ZOb6ICMCdd95JfX09SwfYF7qxsZFRo0b1ec5tjxquRx55pGfuTTAYpLq6etDXPv7443zqU58CYN68ecybNw+AZ599llWrVnHSSScBTjJp8eLFADz66KNcf/31tLe3s3v3bo466qiepM273vUuABYuXMiGDRt6zlNXV8e23iWTPhaJOMPzYzFIdLhJJihpkxIlbeSg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\n",
- "text/plain": [
- "<Figure size 1440x432 with 6 Axes>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "nbm = len(problems)\n",
- "nbm2 = (nbm // 2)\n",
- "\n",
- "\n",
- "pl.figure(2, (20, 6))\n",
- "pl.clf()\n",
- "\n",
- "for i in range(nbm):\n",
- "\n",
- " A = problems[i][0]\n",
- " bary_l2 = problems[i][1][0]\n",
- " bary_wass = problems[i][1][1]\n",
- " bary_wass2 = problems[i][1][2]\n",
- "\n",
- " pl.subplot(2, nbm, 1 + i)\n",
- " for j in range(n_distributions):\n",
- " pl.plot(x, A[:, j])\n",
- " if i == nbm2:\n",
- " pl.title('Distributions')\n",
- " pl.xticks(())\n",
- " pl.yticks(())\n",
- "\n",
- " pl.subplot(2, nbm, 1 + i + nbm)\n",
- "\n",
- " pl.plot(x, bary_l2, 'r', label='L2 (Euclidean)')\n",
- " pl.plot(x, bary_wass, 'g', label='Reg Wasserstein')\n",
- " pl.plot(x, bary_wass2, 'b', label='LP Wasserstein')\n",
- " if i == nbm - 1:\n",
- " pl.legend()\n",
- " if i == nbm2:\n",
- " pl.title('Barycenters')\n",
- "\n",
- " pl.xticks(())\n",
- " pl.yticks(())"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.9"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}