summaryrefslogtreecommitdiff
path: root/notebooks/plot_screenkhorn_1D.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'notebooks/plot_screenkhorn_1D.ipynb')
-rw-r--r--notebooks/plot_screenkhorn_1D.ipynb213
1 files changed, 0 insertions, 213 deletions
diff --git a/notebooks/plot_screenkhorn_1D.ipynb b/notebooks/plot_screenkhorn_1D.ipynb
deleted file mode 100644
index 0bd4aad..0000000
--- a/notebooks/plot_screenkhorn_1D.ipynb
+++ /dev/null
@@ -1,213 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "# 1D Screened optimal transport\n",
- "\n",
- "\n",
- "This example illustrates the computation of Screenkhorn:\n",
- "Screening Sinkhorn Algorithm for Optimal transport.\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "# Author: Mokhtar Z. Alaya <mokhtarzahdi.alaya@gmail.com>\n",
- "#\n",
- "# License: MIT License\n",
- "\n",
- "import numpy as np\n",
- "import matplotlib.pylab as pl\n",
- "import ot.plot\n",
- "from ot.datasets import make_1D_gauss as gauss\n",
- "from ot.bregman import screenkhorn"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Generate data\n",
- "-------------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "n = 100 # nb bins\n",
- "\n",
- "# bin positions\n",
- "x = np.arange(n, dtype=np.float64)\n",
- "\n",
- "# Gaussian distributions\n",
- "a = gauss(n, m=20, s=5) # m= mean, s= std\n",
- "b = gauss(n, m=60, s=10)\n",
- "\n",
- "# loss matrix\n",
- "M = ot.dist(x.reshape((n, 1)), x.reshape((n, 1)))\n",
- "M /= M.max()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Plot distributions and loss matrix\n",
- "----------------------------------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAADCCAYAAABnjpSEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXhU5fXA8e8hYQmCIIsbi4AsJSEhkAgIiGBBQCy4CyKLSwVbFNtKReWHFJdqtaKtiKXuKyhuWBcUhYKgYAKJbCKrEuoCCAGEQJb398eZiSFkmSST3JnJ+TzPfWa7M/fMZDLnvrs45zDGGGPKqobXARhjjAlPlkCMMcaUiyUQY4wx5WIJxBhjTLlYAjHGGFMulkCMMcaUS7TXARTWpEkT16pVK6/DMMYYA6Smpu52zjUt6rGQSyCtWrUiJSXF6zCMMcYAIvJNcY9ZFZYxxphyCSiBiMggEdkoIptFZHIRj9cWkbm+x1eISCvf/TVF5DkRWSMiG0Tk9uCGb4wxxiulJhARiQJmAoOBWGCEiMQW2u06YK9zri0wA3jAd//lQG3nXDyQBIzzJxdjjDHhLZA2kG7AZufcVgARmQMMA9YX2GcYMM13fR7wmIgI4IATRCQaiAGOAvuDE7oxJliys7PJyMggKyvL61CMR+rUqUPz5s2pWbNmwM8JJIE0A3YUuJ0BdC9uH+dcjohkAo3RZDIM+A6oC/zBOfdTwNGZclmwANavh4kToYa1cpkAZGRkUL9+fVq1aoWe+5nqxDnHnj17yMjIoHXr1gE/r7J/XroBucDpQGvgTyLSpvBOInKDiKSISMquXbsqOaTI9sQTcMEF8Mc/wlVXwZEjXkdkwkFWVhaNGze25FFNiQiNGzcucwk0kASyE2hR4HZz331F7uOrrmoA7AGuAj5wzmU7534ElgHJhQ/gnJvtnEt2ziU3bVpkd2NTCudgyhS48UYYPBjuuQfmztXrmZleR2fCgSWP6q08f/9AEsgXQDsRaS0itYDhwPxC+8wHxviuXwZ84nShkW+B83zBnQD0AL4qc5SmVDffDPfeC9deC2+9BXfeCc8/D0uXQp8+cPCg1xEaU7J7772XuLg4EhISSExMZMWKFV6HdJx69eoB8L///Y/LLrus2P327dvH448/XuJr9ezZE4DFixdz4YUXlimOt956i/Xrf2mGnjp1KgsXLizTawSFc67UDbgA+BrYAtzpu286MNR3vQ7wGrAZWAm08d1fz3f/OrTRfVJpx0pKSnKmbLZvd07EuRtucC4v79jH3nzTOXDuX//yJjYTHtavX+/p8ZcvX+569OjhsrKynHPO7dq1y+3cubPCr5udnV3h1yjohBNOCGi/bdu2ubi4uCIfKxzTokWL3JAhQ8oUx5gxY9xrr71WpucEoqjvAZDiivm9DqgNxDn3nnOuvXPuTOfcvb77pjrn5vuuZznnLnfOtXXOdXO+HlvOuYO+++Occ7HOuQeDkvXMMZ55Ri9vvx0Kl0KHDYO4OHjqqaqPy5hAfffddzRp0oTatWsD0KRJE04//XQAPv74Y7p06UJ8fDzXXnstR3wNe61atWL37t0ApKSk0LdvXwCmTZvGqFGj6NWrF6NGjSI3N5dbb72VTp06kZCQwD//+U8AUlNTOffcc0lKSmLgwIF89913x8W1bds2zj77bOLj45kyZUr+/du3b6dTp04ArFu3jm7dupGYmEhCQgKbNm1i8uTJbNmyhcTERCZNmsTixYs555xzGDp0KLGxOgrCX5oB2L9/P0OGDKFDhw6MHz+evLy84/aZN28eY8eOZfny5cyfP59JkyaRmJjIli1bGDt2LPPmzSv187rrrrvo2rUr8fHxfPVVxSuDQm4qE1M2ubmaQPr3h6KmEBOB667TRvW1a8H3nTemWLfcAmlpwX3NxER45JHiHz///POZPn067du3p3///lx55ZWce+65ZGVlMXbsWD7++GPat2/P6NGjmTVrFrfcckuJx1u/fj2ffvopMTExzJo1i+3bt5OWlkZ0dDQ//fQT2dnZ3HTTTbz99ts0bdqUuXPncuedd/L0008f8zoTJ07kxhtvZPTo0cycObPIYz3xxBNMnDiRkSNHcvToUXJzc7n//vtZu3Ytab4PcvHixaxatYq1a9cW2ctp5cqVrF+/njPOOINBgwbxxhtvFFtF1rNnT4YOHcqFF1543D6lfV5NmjRh1apVPP744zz00EM8+eSTJX6OpbFOnmHu44/h2281SRRn1CioWdNKISZ01atXj9TUVGbPnk3Tpk258sorefbZZ9m4cSOtW7emffv2AIwZM4YlS5aU+npDhw4lJiYGgIULFzJu3Diio/V8uVGjRmzcuJG1a9cyYMAAEhMTueeee8jIyDjudZYtW8aIESMAGDVqVJHHOvvss7nvvvt44IEH+Oabb/KPW1i3bt2K7SLbrVs32rRpQ1RUFCNGjODTTz8t9T0WpbTP65JLLgEgKSmJ7du3l+sYBVkJJMw99RQ0agQXXVT8Pk2aaFXWCy/A/feDr5bAmCKVVFKoTFFRUfTt25e+ffsSHx/Pc889R5cuXYrdPzo6Or+qp3D30xNOOKHEYznniIuL47PPPis1rtJ6J1111VV0796dd999lwsuuIB//etftGlz3GiFEmMqfAz/7YL3B2OQp7+KMCoqipycnAq/npVAwtiePdrjatSo0pPC9dfr/vML958zJgRs3LiRTZs25d9OS0vjjDPOoEOHDmzfvp3NmzcD8MILL3DuuecCWqefmpoKwOuvv17saw8YMIB//etf+T+YP/30Ex06dGDXrl35CSQ7O5t169Yd99xevXoxZ84cAF566aUiX3/r1q20adOGm2++mWHDhvHll19Sv359Dhw4EPD7X7lyJdu2bSMvL4+5c+fSu3dvAE455RQ2bNhAXl4eb775Zv7+xb1+SZ9XZbAEEsZefBGOHi25+sqvf39o0cKqsUxoOnjwIGPGjCE2NpaEhATWr1/PtGnTqFOnDs888wyXX3458fHx1KhRg/HjxwNw1113MXHiRJKTk4mKiir2ta+//npatmxJQkICnTt35uWXX6ZWrVrMmzeP2267jc6dO5OYmMjy5cuPe+6jjz7KzJkziY+PZ+fOwsPf1KuvvkqnTp1ITExk7dq1jB49msaNG9OrVy86derEpEmTSn3/Z511FhMmTKBjx460bt2aiy++GID777+fCy+8kJ49e3Laaafl7z98+HAefPBBunTpwpYtW/LvL+nzqgyivbRCR3JysrP1QErnHCQkQEwMrFwZ2HPuugvuvhu2b4eWLSs1PBNmNmzYQMeOHb0Ow3isqO+BiKQ6544bAA5WAglba9fqdu21gT/nmms08bzySuXFZYypPiyBhKlPPtHLIUMCf06rVjomZNGiSgnJGFPNWAIJU4sWwZlnartGWfTrB59+CtnZlROXMab6sAQShvLyYMkS8A28LZO+feHnn8GamYwxFWUJJAylp8PeveVLIP4efVaNZYypKEsgYWjxYr0sTwJp0gTi4395DWOMKS9LIGFo0SJo2xaaNy/f8/v2hWXLdAyJMaFgz549JCYm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\n",
- "text/plain": [
- "<Figure size 460.8x216 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 360x360 with 3 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "pl.figure(1, figsize=(6.4, 3))\n",
- "pl.plot(x, a, 'b', label='Source distribution')\n",
- "pl.plot(x, b, 'r', label='Target distribution')\n",
- "pl.legend()\n",
- "\n",
- "# plot distributions and loss matrix\n",
- "\n",
- "pl.figure(2, figsize=(5, 5))\n",
- "ot.plot.plot1D_mat(a, b, M, 'Cost matrix M')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Solve Screenkhorn\n",
- "-----------------------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "epsilon = 0.020986042861303855\n",
- "\n",
- "kappa = 3.7476531411890917\n",
- "\n",
- "Cardinality of selected points: |Isel| = 30 \t |Jsel| = 30 \n",
- "\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/rflamary/PYTHON/POT/ot/bregman.py:2056: UserWarning: Bottleneck module is not installed. Install it from https://pypi.org/project/Bottleneck/ for better performance.\n",
- " \"Bottleneck module is not installed. Install it from https://pypi.org/project/Bottleneck/ for better performance.\")\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 360x360 with 3 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Screenkhorn\n",
- "lambd = 2e-03 # entropy parameter\n",
- "ns_budget = 30 # budget number of points to be keeped in the source distribution\n",
- "nt_budget = 30 # budget number of points to be keeped in the target distribution\n",
- "\n",
- "G_screen = screenkhorn(a, b, M, lambd, ns_budget, nt_budget, uniform=False, restricted=True, verbose=True)\n",
- "pl.figure(4, figsize=(5, 5))\n",
- "ot.plot.plot1D_mat(a, b, G_screen, 'OT matrix Screenkhorn')\n",
- "pl.show()"
- ]
- }
- ],
- "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
-}