{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "logi1.ipynb", "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "code", "metadata": { "id": "FOIRQlRlOXOE", "colab_type": "code", "colab": {} }, "source": [ "# 古いコードを実行するためのおまじない\n", "%tensorflow_version 1.x" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "aSBI0fAPPJWg", "colab_type": "code", "colab": {} }, "source": [ "# 演習用データ ex2data1.txt をアップロードするためのコード\n", "from google.colab import files\n", "uploaded = files.upload() " ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "V25P8DMePNWm", "colab_type": "code", "colab": {} }, "source": [ "import os\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from sklearn import preprocessing\n", "\n", "from keras.models import Sequential\n", "from keras.layers.core import Dense, Activation" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "8zASHrO1PXjN", "colab_type": "code", "colab": {} }, "source": [ "# データファイルの読み込み\n", "data = np.genfromtxt('ex2data1.txt', delimiter=',')" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "o_mQMf5qPnyW", "colab_type": "code", "colab": {} }, "source": [ "X = data[:, (0, 1)]\n", "t = data[:, 2]\n", "\n", "# データの各次元が平均0、分散1になるように正規化\n", "X = preprocessing.scale(X)\n", "\n", "# ロジスティック回帰モデルを構築\n", "model = Sequential()\n", "model.add(Dense(1, input_shape=(2, )))\n", "model.add(Activation('sigmoid'))\n", "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])\n", "\n", "# 訓練\n", "model.fit(X, t, nb_epoch=1000, batch_size=5)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "ND-rGsbMRAGB", "colab_type": "code", "colab": {} }, "source": [ "# 学習した重みを取得\n", "weights = model.layers[0].get_weights()\n", "w1 = weights[0][0, 0]\n", "w2 = weights[0][1, 0]\n", "b = weights[1][0]" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "WSvkkO3LzooT", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 279 }, "outputId": "e1dfedd2-412d-4452-c90f-53df50b264b1" }, "source": [ "import matplotlib.pyplot as plt\n", "\n", "def plot_data(X, t):\n", " positive = [i for i in range(len(t)) if t[i] == 1]\n", " negative = [i for i in range(len(t)) if t[i] == 0]\n", "\n", " plt.scatter(X[positive, 0], X[positive, 1], c='red', marker='o', label='positive')\n", " plt.scatter(X[negative, 0], X[negative, 1], c='blue', marker='o', label='negative')\n", "\n", "# plot training data\n", "plt.figure(1)\n", "plot_data(X, t)\n", "# draw decision boundary\n", "plt.figure(1)\n", "xmin, xmax = min(X[:, 0]), max(X[:, 0])\n", "ymin, ymax = min(X[:, 1]), max(X[:, 1])\n", "xs = np.linspace(xmin, xmax, 100)\n", "ys = [- (w1 / w2) * x - (b / w2) for x in xs]\n", "plt.plot(xs, ys, 'b-', label='decision boundary')\n", "plt.xlabel('x1')\n", "plt.ylabel('x2')\n", "plt.xlim(xmin, xmax)\n", "plt.ylim(ymin, ymax)\n", "plt.legend()\n", "plt.show()" ], "execution_count": 14, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\np1fhMEeralegP3CpiPSOtKOqPqKqeaqa17x58xrbbwSDpk1dPDovz72a+q9RnhNOgMWLXTDgttuc\n/MfSpV5b9SvViXJ7MZI/YY5CVY9X1awwy0tVOMb60OtXwAygW6LsTTStW7e21oRheECTJk5g8N//\nhrVrncDg3XeDH4YRVSfK7cVIft+mx4rIXiLSqPQ9cCKuE9wwDKPKDBzoJED694drrnGd3X7IEK/q\nGBovRvJ7lR47UETWAUcBr4nIrND6A0VkZmi3/YB3RKQY+AB4TVX/zwt7DcNIDVq0cC2Lp56C4mIX\nrnzkEdcpHBS8GMnvaWd2osjLy9OCgt37x60zs3Zj/79RkTVrXEf3nDmulfHYY3DggV5b5R2edGYb\nRqJIBX0nw3tatYL//AceeMANzsvKgilTvLbKn5ijSBG+++47HnroobLPX3zxBYMGDfLQosSQSvpO\nhvekpcFll7lxF23bwtlnw5ln2v1UEXMUEQiC/kp5KjqKAw88kOnTp3toUWIwfScjEbRt60Z0jxvn\npl/NyoLXXvPaKv9gjiIMiRj5WFJSQocOHbjwwgvp2LEjJ554Itu2bWPVqlX069eP3NxcevXqxccf\nfwzAqlWr6N69O9nZ2dx4443svffeAGzZsoW+ffvStWtXsrOzeekll208duxYVq1aRU5ODtdccw0l\nJSVkZWUB0L17d5aWSx4vlST/8ccfOf/88+nWrRtdunQpO5afMX0nI1HUqeM0oxYuhObN4ZRTYOTI\nYAkMJgxVTbklNzdXK7Js2bI91kUiM1PVuYjdl8zMmA+xB5999pmmp6frRx99pKqqgwcP1qefflqP\nO+44/eSTT1RVdcGCBXrssceqqurJJ5+szz77rKqqPvzww7rXXnupqurOnTt18+bNqqq6ceNGPfTQ\nQ3XXrl362WefaceOHXc7X+nn8ePH680336yqql988YW2bdtWVVWvu+46ffrpp1VV9dtvv9XDDjtM\nt2zZUv0fmQSKi1UXLtxzKS6O/r2q/P+GsX276tixqmlpqq1bq771ltcWJR6gQCOUqdaiCEOiRj62\nadOGnJwcAHJzcykpKeG9995j8ODBZZMJleovvf/++wwePBiAP/zhD2XHUFWuv/56OnXqxPHHH8/6\n9evZsGFD1PMOGTKkLAz1/PPPl/Vd/Oc//+GOO+4gJyeHPn36sH37dtb4fJow03cykkG9enD77TB/\nPqSnuzEXf/qTvwUGE0kdrw3wI4maUL5evXpl79PT09mwYQNNmjShqKgo5mPk5+ezceNGCgsLycjI\noHXr1myPNDdkiJYtW9K0aVMWLVrE1KlTmThxIuCczgsvvEC7du2q94M8oFSiIxZ9J8OoKT16uPEW\n114L99wD//d/MHmyk4ypTViLIgzJGvm4zz770KZNG6ZNmwa4grtUUrx79+688MILAEwpl7O3efNm\nWrRoQUZGBnPnzi2TCo8mOw5w5plnctddd7F582Y6deoEwEknncQDDzyAhsbSfPTRR/H9gQnC9J2M\nZLLXXjBhAsya5foruneHW26BnTu9tix5mKMIQzJHPubn5/P444/TuXNnOnbsWNahfO+99zJ+/Hg6\nderEypUrady4cci2oRQUFJCdnc3kyZNp3749AE2bNqVnz55kZWXtNmd2KYMGDWLKlCkMGTKkbN1N\nN93Ezp076dSpEx07duSmm26K/w80jBThxBOdBMgf/gC33urkzJct89qq5GAjs33K1q1badCgASLC\nlClTeO655wKRleRXgvb/G/7m3/+Giy9283SPGwd//KPrywgyNjI7gBQWFpKTk0OnTp146KGH+Oc/\n/+m1SYZhhPjd71zr4qST4Oqr4bjj4LPPvLYqcVhntk/p1atX2ClQDcPwB/vtBy++6AQGx4xx/WX3\n3AMXXOBC1qlErWpRpGKYzagc+9+NRCECI0a4yZGOOAIuvBBOPdXNqJdK1BpHUb9+fTZt2mSFRi1D\nVdm0aRP169f32hQjhcnMhNmz4b77nBptx46pJTBYazqzd+7cybp16yodc2CkHvXr1+eggw4iw0+T\nJRspy4oVMGwYfPCBExicMCEYKdzROrNrTR9FRkYGbdq08doMwzBSnHbt4N134c473XiLt9+Gxx+H\nAQO8tqz61JrQk2EY1SdoaspeU6cO3HCDa1U0awYnn+yERaOMifU15igMw4hKItSUawtdurgJtq69\n1s2g17kzzJvntVVVxxyFYRhRueEG2Lp193Vbt7r1RuXUq+fCUPPnuxZZnz5u7EWQuktTsjNbRDYC\nYWT9kkIz4GuPzl0Tgmo3BNf2gNidm7vnuo1Ac6CwMNnW1JCAXPOwJNr2TFVtHm5DSjoKLxGRgkiZ\nA34mqHZDcG0Pqt0QXNuDajd4a7uFngzDMIyomKMwDMMwomKOIv484rUB1SSodkNwbQ+q3RBc24Nq\nN3hou/VRGIZhGFGxFoVhGIYRFXMUhmEYRlTMUdQQERksIktFZJeIRExdE5ESEVksIkUiUhBpv2RR\nBbv7icgKEVkpImOTaWMkROQ3IvKGiHwaet03wn6/hK53kYi8nGw7y9kR9RqKSD0RmRra/l8RaZ18\nK/ckBrtHiMjGctd4pBd2VkREnhCRr0RkSYTtIiL3h37XIhHpmmwbIxGD7X1EZHO5a35zUgxTVVtq\nsAAdgHbAW0BelP1KgGZe21sVu4F0YBVwCFAXKAYO94HtdwFjQ+/HAndG2G+LD2yt9BoCo4GJofdn\nAVMDYvcI4EGvbQ1je2+gK7AkwvYBwOuAAN2B/3ptcxVs7wO8mmy7rEVRQ1R1uaqu8NqOqhKj3d2A\nlaq6WlV3AFOA0xNvXaWcDjwVev8UcIaHtlRGLNew/O+ZDvQV8XyONL/+95WiqvOAb6LscjowWR0L\ngCYickByrItODLZ7gjmK5KHAf0SkUEQu8tqYGGkJrC33eV1ondfsp6qlc4j9D9gvwn71RaRARBaI\niFfOJJZrWLaPqv4MbAa8nsEg1v/+96HwzXQROTg5ptUYv97XsXKUiBSLyOsi0jEZJ6w181HUBBGZ\nDewfZtMNqvpSjIc5WlXXi0gL4A0R+ThUe0gYcbLbE6LZXv6DqqqIRMrxzgxd80OAN0Vksaquiret\ntZhXgOdU9ScRuRjXKjrOY5tSnQ9x9/UWERkAvAgcluiTmqOIAVU9Pg7HWB96/UpEZuCa9gl1FHGw\nez1QvpZ4UGhdwolmu4hsEJEDVPXLUMjgqwjHKL3mq0XkLaALLu6eTGK5hqX7rBOROkBjYFNyzItI\npXarankbH8P1HQUBz+7rmqKq35d7P1NEHhKRZqqaUKFDCz0lARHZS0Qalb4HTgTCZjX4jIXAYSLS\nRkTq4jpaPcseKsfLwPDQ++HAHq0jEdlXROqF3jcDegLLkmbhr8RyDcv/nkHAmxrqufSQSu2uENc/\nDVieRPtqwsvAsFD2U3dgc7lQpq8Rkf1L+69EpBuuDE98pcLrXv6gL8BAXIzzJ2ADMCu0/kBgZuj9\nIbiskWJgKS7043u7Q58HAJ/gauKe2x2yqSkwB/gUmA38JrQ+D3gs9L4HsDh0zRcDF3ho7x7XELgN\nOC30vj4wDVgJfAAc4vU1jtHu20P3czEwF2jvtc0hu54DvgR2hu7xC4BRwKjQdgEmhH7XYqJkK/rQ\n9svKXfMFQI9k2GUSHoZhGEZULPRkGIZhRMUchWEYhhEVcxSGYRhGVMxRGIZhGFExR2EYhmFExRyF\nYSQREfk/EflORF712hbDiBVzFIaRXP4BnOu1EYZRFcxRGEYCEJEjQmJ59UMj85eKSJaqzgF+8No+\nw6gKpvVkGAlAVReGJkv6G9AAeEZVgyDbYhh7YI7CMBLHbTjNpO3AGI9tMYxqY6Enw0gcTYG9gUY4\nPSfDCCTmKAwjcfwLuAnIB+702BbDqDYWejKMBCAiw4CdqvqsiKQD74nIccCtQHtgbxFZh1O1neWl\nrYZRGaYeaxiGYUTFQk+GYRhGVMxRGIZhGFExR2EYhmFExRyFYRiGERVzFIZhGEZUzFEYhmEYUTFH\nYRiGYUTl/wFLFRlzhrOJTAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "cell_type": "code", "metadata": { "id": "TuiXhkOi2kbT", "colab_type": "code", "colab": {} }, "source": [ "" ], "execution_count": 0, "outputs": [] } ] }