Skip to content
Snippets Groups Projects
decision_boundaries.ipynb 69.8 KiB
Newer Older
  • Learn to ignore specific revisions
  • schmittu's avatar
    schmittu committed
    {
     "cells": [
      {
       "cell_type": "code",
       "execution_count": 29,
       "metadata": {},
       "outputs": [],
       "source": [
        "import numpy as np\n",
        "import matplotlib\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 3,
       "metadata": {},
       "outputs": [
        {
         "data": {
          "application/javascript": [
           "// avoids scrollboxes for plots\n",
           "IPython.OutputArea.prototype._should_scroll = function(lines) {\n",
           "    return false;\n",
           "}"
          ],
          "text/plain": [
           "<IPython.core.display.Javascript object>"
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "source": [
        "%%javascript\n",
        "// avoids scrollboxes for plots\n",
        "IPython.OutputArea.prototype._should_scroll = function(lines) {\n",
        "    return false;\n",
        "}"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 4,
       "metadata": {},
       "outputs": [],
       "source": [
        "def plot_decision_surface(model, marker=\".\", N=400):\n",
        "    x, y = np.linspace(-1, 1, N), np.linspace(-1, 1, N)\n",
        "    points = np.array(np.meshgrid(x, y)).T.reshape(-1, 2)\n",
        "    classes = np.array(model(points)) \n",
        "    plt.figure(figsize=(6, 6))\n",
        "    plt.plot(points[classes][:, 0], points[classes][:, 1], \"g\" + marker, markersize=1, alpha=.05);\n",
        "    plt.plot(points[~classes][:, 0], points[~classes][:, 1], \"r\" + marker, markersize=1, alpha=.05);\n",
        "\n",
        "\n",
        "def plot_classifier_surface(clf, points=None, marker=\"x\", N=200):\n",
        "    if points is None:\n",
        "        x, y = np.linspace(-1, 1, N), np.linspace(-1, 1, N)\n",
        "        points = np.array(np.meshgrid(x, y)).T.reshape(-1, 2)\n",
        "    \n",
        "    classes = np.array(clf.predict(points)).astype(float) \n",
        "    levels = sorted(set(classes))\n",
        "    print(\"levels in contour plot:\", levels)\n",
        "    \n",
        "    plt.contour(points[:, 0].reshape(N, N), points[:, 1].reshape(N, N), classes.reshape(N, N), levels=levels, alpha=.5)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 31,
       "metadata": {
        "scrolled": true
       },
       "outputs": [
        {
         "data": {
          "image/png": "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\n",
          "text/plain": [
           "<Figure size 432x432 with 1 Axes>"
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "# some functions for creating labels\n",
        "\n",
        "def np_array_adapter(function):\n",
        "    def wrapped(p):\n",
        "        assert p.shape[1] == 2, \"matrix must have two columns\"\n",
        "        x, y = p[:, 0], p[:, 1]\n",
        "        return function(x, y)\n",
        "    return wrapped\n",
        "\n",
        "@np_array_adapter\n",
        "def xor(x, y):\n",
        "    return x * y > 0\n",
        "\n",
        "@np_array_adapter\n",
        "def circle(x, y):\n",
        "    return x ** 2 +  y ** 2 > .7\n",
        "\n",
        "@np_array_adapter\n",
        "def ellipsis(x, y):\n",
        "    return 3 * x ** 2 +  .7 * y ** 2 + 2 * x * y < .3\n",
        "\n",
        "@np_array_adapter\n",
        "def two_circles(x, y):\n",
        "    return np.logical_or((x-.3) ** 2 +  (y - .3) ** 2 <.15, (x+.4) ** 2 +  (y + .4) ** 2 < .25)\n",
        "\n",
        "plot_decision_surface(xor)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 44,
       "metadata": {},
       "outputs": [],
       "source": [
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.svm import SVC\n",
        "from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier\n",
        "from sklearn.tree import DecisionTreeClassifier\n",
        "from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB\n",
        "from sklearn.metrics import accuracy_score\n",
        "from sklearn.model_selection import cross_val_score"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 54,
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "accuracy is 0.985\n",
          "crossval mean score is 0.8249921862791062\n",
          "levels in contour plot: [0.0, 1.0]\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "/Users/uweschmitt/Projects/machinelearning-introduction-workshop/venv3.6/lib/python3.6/site-packages/matplotlib/contour.py:1230: UserWarning: No contour levels were found within the data range.\n",
          "  warnings.warn(\"No contour levels were found\"\n"
         ]
        },
        {
         "data": {
          "image/png": "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\n",
          "text/plain": [
           "<Figure size 432x432 with 1 Axes>"
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "clf = LogisticRegression()\n",
        "clf = SVC(C=10, gamma=10) \n",
        "# clf = RandomForestClassifier()\n",
        "# clf = DecisionTreeClassifier(max_depth=19)\n",
        "# clf = GradientBoostingClassifier()\n",
        "\n",
        "\n",
        "\n",
        "N = 20\n",
        "x, y = np.linspace(-1, 1, N), np.linspace(-1, 1, N)\n",
        "points = np.array(np.meshgrid(x, y)).T.reshape(-1, 2)\n",
        "points.shape\n",
        "\n",
        "model = two_circles\n",
        "classes = np.array(model(points))\n",
        "    \n",
        "clf.fit(points, classes)\n",
        "\n",
        "\n",
        "print(\"accuracy is\", accuracy_score(classes, clf.predict(points)))\n",
        "scores = cross_val_score(clf, points, classes, cv=5)\n",
        "print(\"crossval mean score is\", np.mean(scores))\n",
        "\n",
        "plot_decision_surface(model)\n",
        "\n",
        "plt.plot(points[:, 0], points[:, 1], \"k.\", markersize=2)\n",
        "plt.title(\"dots are feature points\\nbg color is exact decision surface\\nlines are decision lines from clf\")\n",
        "\n",
        "plot_classifier_surface(clf)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": []
      }
     ],
     "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.6"
      }
     },
     "nbformat": 4,
     "nbformat_minor": 2
    }