Last active
July 27, 2019 10:18
-
-
Save kiwamizamurai/1dd1cab37605843c4dad8a419303d63a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python [conda root]", | |
"language": "python", | |
"name": "conda-root-py" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.14" | |
}, | |
"colab": { | |
"name": "LOGISTIC_01.ipynb", | |
"version": "0.3.2", | |
"provenance": [], | |
"include_colab_link": true | |
} | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/kiwamizamurai/f464781cdd914daf2dad38e70337d78c/logistic_01.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "W9AuWEgf5wKh", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"# Logistic regression\n", | |
"\n", | |
"#### data\n", | |
"https://archive.ics.uci.edu/ml/datasets/Occupancy+Detection+" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"scrolled": true, | |
"id": "Pkgl8OV15wKj", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"import pandas as pd\n", | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "wdQJXkGO5wKp", | |
"colab_type": "code", | |
"outputId": "34886db2-e8e1-49ca-a2ce-10789340caf3", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 166 | |
} | |
}, | |
"source": [ | |
"!ls" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"datatest2.txt datatest.txt datatraining.txt sample_data\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"scrolled": true, | |
"id": "53xSoVan5wKv", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"dataset1 = pd.read_csv(\"datatest.txt\")\n", | |
"dataset2 = pd.read_csv(\"datatraining.txt\")\n", | |
"dataset3 = pd.read_csv(\"datatest2.txt\")" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "sT1oQ_g26niH", | |
"colab_type": "code", | |
"outputId": "91b4c84a-cadd-453e-fbef-b6272cc892b5", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 241 | |
} | |
}, | |
"source": [ | |
"dataset1.head()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>date</th>\n", | |
" <th>Temperature</th>\n", | |
" <th>Humidity</th>\n", | |
" <th>Light</th>\n", | |
" <th>CO2</th>\n", | |
" <th>HumidityRatio</th>\n", | |
" <th>Occupancy</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>140</th>\n", | |
" <td>2015-02-02 14:19:00</td>\n", | |
" <td>23.7000</td>\n", | |
" <td>26.272</td>\n", | |
" <td>585.200000</td>\n", | |
" <td>749.200000</td>\n", | |
" <td>0.004764</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>141</th>\n", | |
" <td>2015-02-02 14:19:59</td>\n", | |
" <td>23.7180</td>\n", | |
" <td>26.290</td>\n", | |
" <td>578.400000</td>\n", | |
" <td>760.400000</td>\n", | |
" <td>0.004773</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>142</th>\n", | |
" <td>2015-02-02 14:21:00</td>\n", | |
" <td>23.7300</td>\n", | |
" <td>26.230</td>\n", | |
" <td>572.666667</td>\n", | |
" <td>769.666667</td>\n", | |
" <td>0.004765</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>143</th>\n", | |
" <td>2015-02-02 14:22:00</td>\n", | |
" <td>23.7225</td>\n", | |
" <td>26.125</td>\n", | |
" <td>493.750000</td>\n", | |
" <td>774.750000</td>\n", | |
" <td>0.004744</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>144</th>\n", | |
" <td>2015-02-02 14:23:00</td>\n", | |
" <td>23.7540</td>\n", | |
" <td>26.200</td>\n", | |
" <td>488.600000</td>\n", | |
" <td>779.000000</td>\n", | |
" <td>0.004767</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" date Temperature ... HumidityRatio Occupancy\n", | |
"140 2015-02-02 14:19:00 23.7000 ... 0.004764 1\n", | |
"141 2015-02-02 14:19:59 23.7180 ... 0.004773 1\n", | |
"142 2015-02-02 14:21:00 23.7300 ... 0.004765 1\n", | |
"143 2015-02-02 14:22:00 23.7225 ... 0.004744 1\n", | |
"144 2015-02-02 14:23:00 23.7540 ... 0.004767 1\n", | |
"\n", | |
"[5 rows x 7 columns]" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 62 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "DOrcc2786qAl", | |
"colab_type": "code", | |
"outputId": "a98b0923-9f7c-4345-af45-4054d394098f", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 241 | |
} | |
}, | |
"source": [ | |
"dataset2.head()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>date</th>\n", | |
" <th>Temperature</th>\n", | |
" <th>Humidity</th>\n", | |
" <th>Light</th>\n", | |
" <th>CO2</th>\n", | |
" <th>HumidityRatio</th>\n", | |
" <th>Occupancy</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2015-02-04 17:51:00</td>\n", | |
" <td>23.18</td>\n", | |
" <td>27.2720</td>\n", | |
" <td>426.0</td>\n", | |
" <td>721.25</td>\n", | |
" <td>0.004793</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2015-02-04 17:51:59</td>\n", | |
" <td>23.15</td>\n", | |
" <td>27.2675</td>\n", | |
" <td>429.5</td>\n", | |
" <td>714.00</td>\n", | |
" <td>0.004783</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2015-02-04 17:53:00</td>\n", | |
" <td>23.15</td>\n", | |
" <td>27.2450</td>\n", | |
" <td>426.0</td>\n", | |
" <td>713.50</td>\n", | |
" <td>0.004779</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2015-02-04 17:54:00</td>\n", | |
" <td>23.15</td>\n", | |
" <td>27.2000</td>\n", | |
" <td>426.0</td>\n", | |
" <td>708.25</td>\n", | |
" <td>0.004772</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>2015-02-04 17:55:00</td>\n", | |
" <td>23.10</td>\n", | |
" <td>27.2000</td>\n", | |
" <td>426.0</td>\n", | |
" <td>704.50</td>\n", | |
" <td>0.004757</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" date Temperature Humidity ... CO2 HumidityRatio Occupancy\n", | |
"1 2015-02-04 17:51:00 23.18 27.2720 ... 721.25 0.004793 1\n", | |
"2 2015-02-04 17:51:59 23.15 27.2675 ... 714.00 0.004783 1\n", | |
"3 2015-02-04 17:53:00 23.15 27.2450 ... 713.50 0.004779 1\n", | |
"4 2015-02-04 17:54:00 23.15 27.2000 ... 708.25 0.004772 1\n", | |
"5 2015-02-04 17:55:00 23.10 27.2000 ... 704.50 0.004757 1\n", | |
"\n", | |
"[5 rows x 7 columns]" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 63 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "FxPSP0Py6sFf", | |
"colab_type": "code", | |
"outputId": "c08e09a9-6448-4db9-dfe2-a423d7b50d17", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 241 | |
} | |
}, | |
"source": [ | |
"dataset3.head()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>date</th>\n", | |
" <th>Temperature</th>\n", | |
" <th>Humidity</th>\n", | |
" <th>Light</th>\n", | |
" <th>CO2</th>\n", | |
" <th>HumidityRatio</th>\n", | |
" <th>Occupancy</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2015-02-11 14:48:00</td>\n", | |
" <td>21.7600</td>\n", | |
" <td>31.133333</td>\n", | |
" <td>437.333333</td>\n", | |
" <td>1029.666667</td>\n", | |
" <td>0.005021</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2015-02-11 14:49:00</td>\n", | |
" <td>21.7900</td>\n", | |
" <td>31.000000</td>\n", | |
" <td>437.333333</td>\n", | |
" <td>1000.000000</td>\n", | |
" <td>0.005009</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2015-02-11 14:50:00</td>\n", | |
" <td>21.7675</td>\n", | |
" <td>31.122500</td>\n", | |
" <td>434.000000</td>\n", | |
" <td>1003.750000</td>\n", | |
" <td>0.005022</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2015-02-11 14:51:00</td>\n", | |
" <td>21.7675</td>\n", | |
" <td>31.122500</td>\n", | |
" <td>439.000000</td>\n", | |
" <td>1009.500000</td>\n", | |
" <td>0.005022</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>2015-02-11 14:51:59</td>\n", | |
" <td>21.7900</td>\n", | |
" <td>31.133333</td>\n", | |
" <td>437.333333</td>\n", | |
" <td>1005.666667</td>\n", | |
" <td>0.005030</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" date Temperature ... HumidityRatio Occupancy\n", | |
"1 2015-02-11 14:48:00 21.7600 ... 0.005021 1\n", | |
"2 2015-02-11 14:49:00 21.7900 ... 0.005009 1\n", | |
"3 2015-02-11 14:50:00 21.7675 ... 0.005022 1\n", | |
"4 2015-02-11 14:51:00 21.7675 ... 0.005022 1\n", | |
"5 2015-02-11 14:51:59 21.7900 ... 0.005030 1\n", | |
"\n", | |
"[5 rows x 7 columns]" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 64 | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "KmCCBhYQ5wK8", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"class Logisticr():\n", | |
"\n", | |
" def __init__(self, X, y, alg, eta, w):\n", | |
" self.X = X\n", | |
" self.y = y\n", | |
" self.alg = alg\n", | |
" self.eta = eta\n", | |
" self.w = w\n", | |
" self.m, self.n = np.shape(X)\n", | |
"\n", | |
" def sigFunc(self, z):\n", | |
" return 1.0 / (1.0 + np.exp( -z ))\n", | |
"\n", | |
" def decide(self, x):\n", | |
" return np.where(x >= 0.5, 1, 0)\n", | |
"\n", | |
" def costfunc(self, w, X, y):\n", | |
"\n", | |
" w = w.reshape((self.n,1))\n", | |
" z = X * w\n", | |
" phi =self.sigFunc(z)\n", | |
"\n", | |
" # calculating the cost function\n", | |
" part1 = np.multiply(y, np.log(phi))\n", | |
" part2 = np.multiply((1 - y), np.log(1 - phi))\n", | |
"\n", | |
" J = (-part1 - part2).sum()/self.m\n", | |
"\n", | |
" # calculating the gradient\n", | |
" grad = X.T * (phi - y) / self.m\n", | |
" \n", | |
" return J, grad\n", | |
"\n", | |
" def graddescent(self, maxiter):\n", | |
" self.J = []\n", | |
" self.epoch = []\n", | |
" for i in range(0, maxiter):\n", | |
" J, grad = self.costfunc(self.w, self.X, self.y)\n", | |
" self.J.append(J)\n", | |
" self.epoch.append(i)\n", | |
" self.w = self.w - self.eta*grad\n", | |
"\n", | |
" return self.w\n", | |
"\n", | |
" def fit(self):\n", | |
"\n", | |
"\n", | |
" if self.alg == 0:\n", | |
" _maxiter = 100000\n", | |
" self.w = self.graddescent(_maxiter)\n", | |
" else:\n", | |
" Result = op.minimize(fun = self.costfunc,\n", | |
" x0 = self.w,\n", | |
" args = (self.X, self.y),\n", | |
" method = 'TNC',\n", | |
" jac = True);\n", | |
"\n", | |
" self.w = Result.x\n", | |
" self.w = np.matrix(self.w).T\n", | |
"\n", | |
" print(\"Found Solution:\")\n", | |
" print(self.w)\n", | |
"\n", | |
" z = self.X * self.w\n", | |
" phi = self.sigFunc(z)\n", | |
" correctAnswer = np.where(np.array(self.y == self.decide(phi)) == True, 1, 0)\n", | |
"\n", | |
" accuracy = float(sum(correctAnswer)) / len(correctAnswer)\n", | |
" \n", | |
" print(\"Train Accuracy: %f\" %accuracy)\n", | |
"\n", | |
" def plot(self):\n", | |
"\n", | |
" if self.n == 3:\n", | |
" ind_1 = np.where(self.y == 1)\n", | |
" ind_0 = np.where(self.y == 0)\n", | |
"\n", | |
" x1_1 = self.X[:, [1]].min()\n", | |
" x1_2 = self.X[:, [1]].max()\n", | |
"\n", | |
" x2_1 = -(self.w[0, 0] + self.w[1, 0]*x1_1)/self.w[2, 0]\n", | |
" x2_2 = -(self.w[0, 0] + self.w[1, 0]*x1_2)/self.w[2, 0]\n", | |
"\n", | |
" plt.plot(self.X[ind_1, [1]], self.X[ind_1, [2]], \"bo\", markersize=3)\n", | |
" plt.plot(self.X[ind_0, [1]], self.X[ind_0, [2]], \"ro\", markersize=3)\n", | |
"\n", | |
" plt.plot([x1_1, x1_2], [x2_1, x2_2], \"g-\")\n", | |
"\n", | |
" plt.xlabel(\"Feature 1\")\n", | |
" plt.ylabel(\"Feature 2\")\n", | |
" plt.title(\"Decision boundary\")\n", | |
" plt.show()\n", | |
" \n", | |
" def lplot(self):\n", | |
" plt.plot(self.epoch, self.J)" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "9Jem6tRb5wLA", | |
"colab_type": "code", | |
"outputId": "72943bbf-3a08-4d9d-f641-f51a6621eec9", | |
"colab": {} | |
}, | |
"source": [ | |
"_X, _y = dataset1.iloc[:,1:3], dataset1.iloc[:,6]\n", | |
"\n", | |
"_m = np.shape(_X)[0]\n", | |
"\n", | |
"# add a column of 1\n", | |
"_X = np.hstack((np.matrix(np.ones((_m, 1))),_X))\n", | |
"_y = np.matrix(_y).reshape(_y.shape[0],1)\n", | |
"\n", | |
"_alg = 0\n", | |
"\n", | |
"_eta = 0.001\n", | |
"\n", | |
"_n= np.shape(_X)[1]\n", | |
"\n", | |
"_w = np.matrix(np.zeros((_n, 1)))\n", | |
"\n", | |
"# creating an instance of the Logisticr \n", | |
"lr = Logisticr(_X, _y, _alg, _eta, _w);\n", | |
"lr.fit()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Number of Features: 3\n", | |
"Found Solution:\n", | |
"[[-1.39917176]\n", | |
" [-0.464796 ]\n", | |
" [ 0.42665554]]\n", | |
"Train Accuracy: 0.703189\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "M0qC6Dqz5wLB", | |
"colab_type": "code", | |
"outputId": "7c2ee458-ef8b-439b-8fd2-47eacd136cbc", | |
"colab": {} | |
}, | |
"source": [ | |
"lr.lplot()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1149ab310>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
} | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "4iRBcNfa5wLF", | |
"colab_type": "code", | |
"outputId": "bfc2612c-6a24-47cb-86e6-cf907c53d7d3", | |
"colab": {} | |
}, | |
"source": [ | |
"_X, _y = dataset1.iloc[:,1:6], dataset1.iloc[:,6]\n", | |
"\n", | |
"_m = np.shape(_X)[0]\n", | |
"\n", | |
"_X = np.hstack((np.matrix(np.ones((_m, 1))),_X))\n", | |
"_y = np.matrix(_y).reshape(_y.shape[0],1)\n", | |
"\n", | |
"_alg = 0\n", | |
"\n", | |
"_eta = 0.001\n", | |
"\n", | |
"_n= np.shape(_X)[1]\n", | |
"\n", | |
"_w = np.matrix(np.zeros((_n, 1)))\n", | |
" \n", | |
"lr = Logisticr(_X, _y, _alg, _eta, _w);\n", | |
"lr.fit()" | |
], | |
"execution_count": 0, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Number of Features: 6\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "stream", | |
"text": [ | |
"anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:31: RuntimeWarning: divide by zero encountered in log\n", | |
"anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:31: RuntimeWarning: invalid value encountered in multiply\n" | |
], | |
"name": "stderr" | |
}, | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Found Solution:\n", | |
"[[-1.61062034e-01]\n", | |
" [-3.85343233e+00]\n", | |
" [-1.71831130e+00]\n", | |
" [ 2.76715798e-01]\n", | |
" [ 1.03495925e-01]\n", | |
" [-3.16666255e-04]]\n", | |
"Train Accuracy: 0.970732\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"metadata": { | |
"id": "K8QAcsVN5wLG", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"source": [ | |
"" | |
], | |
"execution_count": 0, | |
"outputs": [] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment