From 9440af1d72d4520baa277a1c8cb9faecbefce92e Mon Sep 17 00:00:00 2001 From: Abhrajyoti Pal Date: Tue, 8 Dec 2020 17:14:43 +0530 Subject: [PATCH 1/3] solved issue in linear-reg --- linear-reg/linear_regression.ipynb | 193 +---------------------------- 1 file changed, 1 insertion(+), 192 deletions(-) diff --git a/linear-reg/linear_regression.ipynb b/linear-reg/linear_regression.ipynb index 71f9d1a..ea2e6d9 100644 --- a/linear-reg/linear_regression.ipynb +++ b/linear-reg/linear_regression.ipynb @@ -1,192 +1 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "linear-regression.ipynb", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "code", - "metadata": { - "id": "GuUFS7U7EZJh" - }, - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ], - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "jtK0gg0PGvkJ", - "outputId": "ed482171-3068-42a2-8d54-f80759dca34f", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 - } - }, - "source": [ - "header_list = [\"X\",\"Y\"]\n", - "df = pd.read_csv(\"Food-Truck-LineReg.csv\", names=header_list)\n", - "df.head()" - ], - "execution_count": 2, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
XY
06.110117.5920
15.52779.1302
28.518613.6620
37.003211.8540
45.85986.8233
\n", - "
" - ], - "text/plain": [ - " X Y\n", - "0 6.1101 17.5920\n", - "1 5.5277 9.1302\n", - "2 8.5186 13.6620\n", - "3 7.0032 11.8540\n", - "4 5.8598 6.8233" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 2 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "4Phbj63wUemW" - }, - "source": [ - "class LinearRegression():\n", - " def __init__(self, df):\n", - " self.x = np.array(df[\"X\"])\n", - " self.y = np.array(df[\"Y\"])\n", - " self.n = np.size(x)\n", - "\n", - " def train(self):\n", - " mean_x = np.mean(self.x) \n", - " mean_y = np.mean(self.y)\n", - " SS_xy = np.sum(self.y*self.x) - self.n*mean_y*mean_x \n", - " SS_xx = np.sum(self.x*self.x) - self.n*mean_x*mean_x \n", - " b1 = SS_xy / SS_xx \n", - " b0 = mean_y - b1*mean_x\n", - " self.y_pred = b0 + b1*self.x\n", - " \n", - " def plot_line(self):\n", - " plt.scatter(self.x, self.y, color = \"g\",s = 30) \n", - " plt.plot(self.x, self.y_pred, color = \"r\") \n", - " plt.xlabel('x') \n", - " plt.ylabel('y') \n", - " plt.show()" - ], - "execution_count": 14, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "_sdvEPwIXDqd" - }, - "source": [ - "model = LinearRegression(df)" - ], - "execution_count": 18, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "4rZNm9KhXl55", - "outputId": "33deebd4-0308-44fd-fe57-aab23008dbe9", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 280 - } - }, - "source": [ - "model.train()\n", - "model.plot_line()" - ], - "execution_count": 19, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - } - ] -} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"linear_regression.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"id":"GuUFS7U7EZJh","executionInfo":{"status":"ok","timestamp":1607427737176,"user_tz":-330,"elapsed":1368,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg2zCf2sN-M0FprSUcR9WRlyUvNTr-ip5vKH6tfxg=s64","userId":"13993778473091437873"}}},"source":["import pandas as pd\n","import numpy as np\n","import matplotlib.pyplot as plt"],"execution_count":10,"outputs":[]},{"cell_type":"code","metadata":{"id":"jtK0gg0PGvkJ","colab":{"base_uri":"https://localhost:8080/","height":204},"executionInfo":{"status":"ok","timestamp":1607427737821,"user_tz":-330,"elapsed":1954,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg2zCf2sN-M0FprSUcR9WRlyUvNTr-ip5vKH6tfxg=s64","userId":"13993778473091437873"}},"outputId":"ccef030d-6848-4cf5-9b51-e24441a77e0b"},"source":["header_list = [\"X\",\"Y\"]\n","df = pd.read_csv(\"Food-Truck-LineReg.csv\", names=header_list)\n","df.head()"],"execution_count":11,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
XY
06.110117.5920
15.52779.1302
28.518613.6620
37.003211.8540
45.85986.8233
\n","
"],"text/plain":[" X Y\n","0 6.1101 17.5920\n","1 5.5277 9.1302\n","2 8.5186 13.6620\n","3 7.0032 11.8540\n","4 5.8598 6.8233"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"4Phbj63wUemW","executionInfo":{"status":"ok","timestamp":1607427737824,"user_tz":-330,"elapsed":1948,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg2zCf2sN-M0FprSUcR9WRlyUvNTr-ip5vKH6tfxg=s64","userId":"13993778473091437873"}}},"source":["class LinearRegression():\n"," def __init__(self, df):\n"," self.x = np.array(df[\"X\"])\n"," self.y = np.array(df[\"Y\"])\n"," self.n = np.size(self.x)\n","\n"," def train(self):\n"," mean_x = np.mean(self.x) \n"," mean_y = np.mean(self.y)\n"," SS_xy = np.sum(self.y*self.x) - self.n*mean_y*mean_x \n"," SS_xx = np.sum(self.x*self.x) - self.n*mean_x*mean_x \n"," b1 = SS_xy / SS_xx \n"," b0 = mean_y - b1*mean_x\n"," self.y_pred = b0 + b1*self.x\n"," \n"," def plot_line(self):\n"," plt.scatter(self.x, self.y, color = \"g\",s = 30) \n"," plt.plot(self.x, self.y_pred, color = \"r\") \n"," plt.xlabel('x') \n"," plt.ylabel('y') \n"," plt.show()"],"execution_count":12,"outputs":[]},{"cell_type":"code","metadata":{"id":"_sdvEPwIXDqd","executionInfo":{"status":"ok","timestamp":1607427737827,"user_tz":-330,"elapsed":1937,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg2zCf2sN-M0FprSUcR9WRlyUvNTr-ip5vKH6tfxg=s64","userId":"13993778473091437873"}}},"source":["model = LinearRegression(df)"],"execution_count":13,"outputs":[]},{"cell_type":"code","metadata":{"id":"4rZNm9KhXl55","colab":{"base_uri":"https://localhost:8080/","height":280},"executionInfo":{"status":"ok","timestamp":1607427737829,"user_tz":-330,"elapsed":1918,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Gg2zCf2sN-M0FprSUcR9WRlyUvNTr-ip5vKH6tfxg=s64","userId":"13993778473091437873"}},"outputId":"01594ef2-a4e3-449e-8b08-c0d24594111d"},"source":["model.train()\n","model.plot_line()"],"execution_count":14,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]}]} \ No newline at end of file From 8b391af8e22d03406a5545351dde0236624696de Mon Sep 17 00:00:00 2001 From: Abhrajyoti Pal Date: Mon, 4 Jan 2021 15:28:28 +0530 Subject: [PATCH 2/3] naive bayes and svm --- naive-bayes/data.csv | 871 ++++++++++++++++++++++++++++++++ naive-bayes/nb-classifier.ipynb | 225 +++++++++ svm/SVM.ipynb | 1 + svm/heart.csv | 304 +++++++++++ 4 files changed, 1401 insertions(+) create mode 100644 naive-bayes/data.csv create mode 100644 naive-bayes/nb-classifier.ipynb create mode 100644 svm/SVM.ipynb create mode 100644 svm/heart.csv diff --git a/naive-bayes/data.csv b/naive-bayes/data.csv new file mode 100644 index 0000000..dcacbe8 --- /dev/null +++ b/naive-bayes/data.csv @@ -0,0 +1,871 @@ +700,1500,2600,1 +550,1550,2400,1 +700,1500,2600,1 +700,1600,2700,1 +550,1600,2600,1 +600,1250,2700,1 +550,1200,2500,1 +550,1700,2600,1 +550,1400,2550,1 +600,1600,2600,1 +550,2000,2700,1 +500,1750,2600,1 +650,1600,2700,1 +550,1800,2600,1 +600,1400,2600,1 +550,1400,2600,1 +650,1600,2600,1 +550,1700,2600,1 +600,1400,2600,1 +700,1350,2600,1 +550,1350,2200,1 +600,1400,2200,1 +550,1600,2200,1 +400,1200,2400,1 +600,1200,2300,1 +600,1350,2300,1 +600,1400,2300,1 +500,1400,2360,1 +500,1400,2360,1 +550,1300,2300,1 +650,1200,2300,1 +550,1200,2360,1 +500,1350,2360,1 +500,1200,2300,1 +700,1400,2360,1 +450,1650,2400,1 +500,1450,2400,1 +700,1550,2360,1 +550,1400,2300,1 +750,1500,2360,1 +550,1500,2360,1 +500,1500,2360,1 +600,1400,2360,1 +650,1350,2360,1 +650,1400,2100,1 +650,1350,2100,1 +600,1700,2300,1 +650,1400,2000,1 +600,1800,2300,1 +750,1350,2100,1 +700,1750,2300,1 +600,1300,1900,1 +550,1700,2300,1 +550,1500,2600,1 +600,1350,2300,1 +700,1400,2300,1 +600,1400,2300,1 +700,1300,2300,1 +700,1300,2300,1 +650,1300,2300,1 +700,1350,2300,1 +650,1600,2300,1 +700,1400,2300,1 +500,1900,2300,1 +500,1900,2300,1 +700,1300,2300,1 +700,1400,2300,1 +550,1500,2300,1 +650,1200,2300,1 +600,1850,2300,1 +650,1600,2300,1 +750,1250,2300,1 +650,1200,2500,2 +650,1200,2500,2 +600,1200,2400,2 +650,1200,2600,2 +700,1150,2500,2 +650,1100,2500,2 +700,1200,2400,2 +700,1200,2550,2 +650,1150,2600,2 +650,1150,2500,2 +700,1150,2600,2 +750,1200,2600,2 +600,1200,2600,2 +650,1200,2550,2 +650,1350,2600,2 +600,1200,2500,2 +650,1200,2500,2 +650,1100,2600,2 +650,1050,2400,2 +600,1200,2600,2 +550,1200,2600,2 +750,1300,2500,2 +750,1250,2600,2 +700,1150,2500,2 +750,1200,2600,2 +700,1100,2600,2 +700,1200,2600,2 +600,1000,2400,2 +750,1150,2600,2 +600,1350,2100,2 +700,1300,2150,2 +750,1300,2300,2 +650,1200,2400,2 +700,1250,2150,2 +800,1250,2150,2 +750,1300,2400,2 +650,1550,2150,2 +800,1350,2500,2 +800,1300,2400,2 +600,1350,2150,2 +650,1200,2300,2 +750,1250,2400,2 +650,1300,2400,2 +700,1150,2500,2 +600,1550,2500,2 +700,1300,2500,2 +650,1250,2400,2 +600,1200,2400,2 +700,1300,2200,2 +750,1300,2200,2 +700,1300,2200,2 +700,1200,2200,2 +700,1200,2200,2 +600,1050,2200,2 +600,1100,2200,2 +750,1200,2200,2 +750,1250,2200,2 +750,1250,2200,2 +750,1300,2200,2 +750,1250,2150,2 +750,1300,2200,2 +750,1250,2200,2 +700,1100,2200,2 +750,1300,2300,2 +750,1200,2200,2 +750,1300,2200,2 +700,1200,2100,2 +800,1350,2200,2 +700,1200,2200,2 +800,1300,2200,2 +700,1250,2200,2 +750,1350,2200,2 +700,1250,2200,2 +700,1300,2200,2 +750,1100,2200,2 +700,1200,2200,2 +700,1200,2100,2 +800,1200,2200,2 +750,1400,2400,2 +750,1150,2200,2 +750,1250,2200,2 +750,1300,2200,2 +750,1250,2200,2 +750,1300,2200,2 +750,1200,2200,2 +700,1600,2200,2 +700,1250,2200,2 +700,1300,2200,2 +600,1500,2200,2 +300,2100,2600,3 +300,2100,2750,3 +300,2000,2500,3 +350,2200,2800,3 +300,2200,2700,3 +300,2050,2600,3 +350,2150,2700,3 +300,2100,2750,3 +300,2000,2700,3 +300,2100,2700,3 +300,2100,2700,3 +300,2100,2700,3 +300,2200,2700,3 +350,2200,2700,3 +300,2200,2700,3 +350,2300,2700,3 +300,2150,2700,3 +250,2100,2700,3 +300,2100,2700,3 +350,2100,2700,3 +300,1900,2700,3 +300,2100,2700,3 +300,2200,2700,3 +300,2150,2700,3 +400,2000,2600,3 +400,1900,2400,3 +500,2000,2500,3 +550,2100,2700,3 +450,1900,2400,3 +500,2200,2700,3 +500,2100,2600,3 +500,2100,2650,3 +500,2100,2600,3 +400,2100,2500,3 +400,2000,2700,3 +400,1600,2400,3 +400,1900,2300,3 +400,1800,2400,3 +450,1950,2550,3 +350,1900,2500,3 +300,2000,2600,3 +300,1500,2400,3 +350,2100,2500,3 +300,1900,2500,3 +350,1900,2600,3 +300,1800,2600,3 +250,1800,2600,3 +300,2100,2600,3 +350,1800,2600,3 +400,2200,2600,3 +400,2200,2600,3 +400,1900,2600,3 +450,2200,2900,3 +300,2150,2750,3 +300,2250,3000,3 +300,2250,2850,3 +300,2200,2900,3 +300,2200,2900,3 +350,2300,3000,3 +300,2400,3200,3 +300,2300,3100,3 +300,2250,3100,3 +350,2250,3000,3 +350,2250,2900,3 +350,2300,3100,3 +400,2400,2970,3 +350,2250,2970,3 +300,2200,2970,3 +350,2200,2970,3 +400,2250,2970,3 +350,2300,2970,3 +350,2300,2970,3 +400,2100,2970,3 +350,2200,2970,3 +300,2250,2970,3 +300,2150,2970,3 +350,2200,2970,3 +400,2350,2970,3 +400,2100,2970,3 +400,2200,2970,3 +300,2300,2970,3 +400,2300,2970,3 +300,2250,2970,3 +350,2200,2970,3 +300,2150,2970,3 +300,2300,2970,3 +300,2400,2970,3 +300,2200,2800,3 +350,2250,2800,3 +350,2200,2700,3 +350,2200,3000,3 +300,2300,2800,3 +300,2300,2800,3 +300,2300,2800,3 +300,2350,2800,3 +300,2300,2800,3 +300,2300,2800,3 +300,2200,2800,3 +300,2350,2800,3 +300,2200,2800,3 +300,2100,2800,3 +350,2300,2800,3 +350,2300,2800,3 +350,2350,2800,3 +300,2200,2800,3 +300,2350,2800,3 +350,2150,2450,3 +400,2300,2500,3 +500,2300,2750,3 +400,2250,2700,3 +400,2250,2700,3 +360,2250,2650,3 +400,2150,2600,3 +450,2150,2600,3 +400,2300,2900,3 +400,2250,2800,3 +400,2250,2700,3 +400,2250,2800,3 +400,2200,2650,3 +350,2300,2750,3 +350,2250,2700,3 +350,2250,2700,3 +350,2250,2600,3 +400,2250,2600,3 +350,2200,2600,3 +450,2200,2700,3 +400,2150,2700,3 +300,2100,2600,3 +300,2100,2600,3 +300,2100,2600,3 +300,2200,2700,3 +300,2050,2600,3 +300,2100,2600,3 +300,2100,2500,3 +300,2100,2500,3 +300,2200,2700,3 +300,2100,2700,3 +300,2100,2500,3 +300,2100,2630,3 +300,2550,3100,3 +300,2500,3100,3 +300,2400,3000,3 +300,2500,3150,3 +300,2500,3000,3 +300,2400,3100,3 +300,2350,3000,3 +300,2400,3000,3 +300,2400,3100,3 +300,2400,3100,3 +300,2300,2900,3 +300,2400,3100,3 +350,2500,3200,3 +350,2400,2900,3 +350,2400,3200,3 +350,2300,3000,3 +300,2350,3100,3 +300,2350,3100,3 +300,2300,3100,3 +350,2250,3000,3 +300,2250,3000,3 +300,2400,3150,3 +350,2350,3200,3 +350,2500,3200,3 +350,2400,3100,3 +350,2400,3150,3 +350,2550,3200,3 +350,2500,3200,3 +300,2400,3080,3 +350,2300,3080,3 +300,2250,3080,3 +400,2500,3080,3 +300,2300,3080,3 +400,1150,2500,4 +300,900,2500,4 +350,900,2500,4 +300,1200,2500,4 +350,1000,2500,4 +350,1100,2500,4 +350,1250,2500,4 +400,1150,2500,4 +450,1150,2500,4 +350,1100,2500,4 +350,1050,2500,4 +400,1250,2500,4 +350,1150,2500,4 +350,900,2500,4 +400,1000,2500,4 +400,1200,2500,4 +400,1200,2500,4 +400,1000,2500,4 +500,1400,2350,4 +450,1000,1800,4 +450,950,2300,4 +400,1100,2000,4 +350,900,2400,4 +350,900,2300,4 +350,1050,2300,4 +300,1050,2300,4 +300,1100,2300,4 +400,1000,2000,4 +400,1200,1900,4 +400,1150,1850,4 +300,1200,2300,4 +350,1100,2300,4 +350,1250,2300,4 +350,1100,2300,4 +300,1000,2300,4 +350,1150,2300,4 +350,1050,2300,4 +400,1050,2300,4 +350,1000,2300,4 +500,1100,2300,4 +400,1100,2300,4 +350,1200,2300,4 +350,1000,2300,4 +350,1200,2300,4 +500,1300,2300,4 +400,1000,2800,4 +350,900,2500,4 +400,1000,2700,4 +350,1050,2600,4 +400,900,2800,4 +350,900,2600,4 +300,900,2700,4 +300,1000,2400,4 +300,1100,2800,4 +350,1000,2700,4 +350,800,2300,4 +400,1000,2700,4 +450,1000,2700,4 +400,1050,2700,4 +350,850,2700,4 +350,900,2700,4 +350,800,2700,4 +350,1100,2700,4 +400,1050,2700,4 +500,1100,2700,4 +400,900,2700,4 +400,1000,2700,4 +350,950,2700,4 +350,1100,2700,4 +350,1100,2700,4 +350,1150,2700,4 +400,900,2500,4 +400,1000,2400,4 +350,800,2500,4 +350,900,2600,4 +400,1000,2700,4 +400,900,2600,4 +400,900,2600,4 +400,850,2500,4 +350,800,2600,4 +350,900,2600,4 +400,1000,2600,4 +350,1150,2600,4 +350,750,2600,4 +350,900,2600,4 +350,900,2600,4 +350,1000,2600,4 +350,800,2600,4 +350,800,2600,4 +350,800,2600,4 +350,900,2600,4 +400,900,2600,4 +350,1000,2600,4 +400,1000,2600,4 +350,1000,2400,4 +380,950,2500,4 +300,900,2400,4 +300,1000,2600,4 +300,900,2350,4 +300,1000,2300,4 +350,1000,2500,4 +350,900,2400,4 +300,900,2400,4 +300,950,2400,4 +350,1100,2400,4 +350,1000,2400,4 +300,900,2400,4 +300,950,2400,4 +350,1000,2400,4 +300,1000,2400,4 +300,850,2400,4 +300,1000,2400,4 +300,850,2400,4 +350,850,2400,4 +300,900,2400,4 +350,900,2400,4 +300,900,2400,4 +350,900,2400,4 +300,950,2400,4 +350,900,2400,4 +350,1000,2400,4 +300,800,2400,4 +300,900,2400,4 +350,850,2400,4 +350,950,2400,4 +300,1000,2400,4 +350,900,2600,4 +350,900,2600,4 +300,1000,2600,4 +300,900,2550,4 +400,900,2600,4 +350,950,2700,4 +350,900,2700,4 +350,950,2700,4 +350,850,2700,4 +400,850,2600,4 +350,800,2600,4 +300,1000,2400,4 +350,850,2600,4 +350,900,2600,4 +350,850,2700,4 +350,850,2600,4 +350,700,2630,4 +350,800,2630,4 +350,800,2630,4 +350,800,2630,4 +350,900,2630,4 +350,1000,2630,4 +400,900,2630,4 +350,900,2630,4 +400,950,2630,4 +500,2000,2750,5 +550,1800,2700,5 +550,1950,2800,5 +600,1900,2700,5 +550,1900,2550,5 +500,1900,2700,5 +500,1900,2600,5 +650,2000,2700,5 +600,1900,2400,5 +600,1900,2650,5 +600,2000,2650,5 +500,1900,2650,5 +500,2000,2400,5 +600,1900,2400,5 +500,1700,2400,5 +500,1850,2550,5 +500,1980,2750,5 +500,1600,2500,5 +500,1900,2600,5 +450,1800,2400,5 +500,1850,2400,5 +500,1750,2400,5 +550,1750,2550,5 +500,1900,2600,5 +450,1800,2600,5 +600,1850,2600,5 +600,1800,2600,5 +550,2100,2600,5 +500,2000,2600,5 +500,1700,2600,5 +500,1900,2600,5 +550,1800,2600,5 +500,2000,2600,5 +500,1500,2500,5 +550,1500,2400,5 +500,1500,2400,5 +600,1500,2500,5 +600,1800,2500,5 +550,1600,2400,5 +600,1600,2300,5 +550,1600,2500,5 +550,1500,2500,5 +550,1700,2400,5 +500,1500,2400,5 +500,1600,2500,5 +500,1600,2300,5 +450,1650,2400,5 +500,1550,2200,5 +450,1500,2300,5 +400,1250,2400,5 +400,1300,2400,5 +400,1200,2000,5 +600,1750,2500,5 +400,1750,2450,5 +500,1600,2500,5 +550,1600,2450,5 +550,1500,2450,5 +500,1550,2450,5 +400,1700,2450,5 +500,1600,2450,5 +450,1400,2450,5 +500,1300,2450,5 +500,1750,2450,5 +450,1350,2450,5 +400,1750,2450,5 +500,1800,2450,5 +500,1700,2450,5 +550,1500,2450,5 +500,1800,2450,5 +700,1850,3100,5 +700,2000,3100,5 +750,2050,3100,5 +700,1900,2700,5 +650,2000,2800,5 +650,2000,2700,5 +650,1850,2600,5 +600,1850,2500,5 +650,1800,2750,5 +550,1800,2700,5 +600,1850,2500,5 +550,1750,2600,5 +500,2000,2600,5 +600,2100,2650,5 +700,1800,2500,5 +500,2000,2850,5 +500,2200,2700,5 +500,2100,2850,5 +500,2100,2600,5 +400,1900,2700,5 +550,1850,2800,5 +500,1800,2600,5 +500,1900,2700,5 +600,1800,2800,5 +650,1850,2700,5 +550,2200,2600,5 +550,1950,2800,5 +600,1800,2800,5 +550,1750,2700,5 +650,1850,2700,5 +600,1750,2750,5 +550,1800,2750,5 +650,1900,2700,5 +650,1850,2700,5 +900,2050,2700,5 +500,2200,2700,5 +500,2150,2700,5 +500,2000,2700,5 +500,1850,2700,5 +550,1900,2700,5 +550,2100,2700,5 +550,2000,2600,5 +550,2000,2600,5 +550,2000,2500,5 +600,2100,2650,5 +500,2000,2600,5 +400,2000,2600,5 +550,1900,2700,5 +550,2000,2800,5 +500,2000,2600,5 +550,2000,2500,5 +450,2000,2550,5 +400,2000,2600,5 +400,2100,2600,5 +400,2000,2500,5 +400,1900,2500,5 +400,2000,2600,5 +400,2000,2500,5 +500,2000,2500,5 +400,2000,2600,5 +400,2000,2600,5 +450,2000,2500,5 +400,2100,2500,5 +400,1900,2500,5 +400,1900,2300,5 +400,2000,2500,5 +500,2100,2600,5 +500,2300,2600,5 +450,1200,2600,5 +500,1300,2500,5 +500,1200,2500,5 +450,1800,2400,5 +450,1600,2200,5 +450,1800,2500,5 +450,1800,2500,5 +450,1300,2500,5 +450,1800,2500,5 +450,1800,2500,5 +400,1800,2500,5 +400,1550,2400,5 +400,1300,2500,5 +450,1300,2500,5 +400,1300,2500,5 +450,1300,2500,5 +500,1400,2500,5 +550,1400,2600,5 +500,1650,2500,5 +400,1800,2500,5 +450,1400,2500,5 +400,1800,2500,5 +500,1300,2500,5 +500,1300,2500,5 +450,1350,2500,5 +450,1850,2600,5 +350,1800,2500,5 +400,1850,2500,5 +350,1850,2500,5 +400,2000,2550,5 +500,1800,2300,5 +400,2000,2500,5 +500,2300,2870,5 +700,1900,2870,5 +650,1900,2870,5 +650,1900,2700,5 +500,2250,2900,5 +450,2300,2850,5 +450,2300,3000,5 +400,2400,3000,5 +600,2150,3050,5 +450,2200,3000,5 +450,2250,2900,5 +400,2200,2900,5 +400,2100,2850,5 +400,2250,2800,5 +550,2150,2800,5 +500,2200,2800,5 +450,2250,2800,5 +700,1850,2900,5 +500,2200,2900,5 +400,2200,2800,5 +400,2300,2850,5 +450,2250,2800,5 +400,2300,2900,5 +500,2400,2900,5 +500,2300,3000,5 +400,2400,3000,5 +500,2100,2700,5 +450,2200,2800,5 +400,2250,2400,5 +500,2250,2900,5 +500,2200,2900,5 +400,2200,2800,5 +400,2250,2900,5 +500,2200,2900,5 +450,2300,2900,5 +450,2300,3100,5 +450,2250,2900,5 +400,2150,2900,5 +400,900,2700,6 +400,1000,2700,6 +450,1200,2700,6 +500,1100,2700,6 +600,1050,2700,6 +450,1100,2700,6 +550,1250,2700,6 +500,1250,2700,6 +450,1100,2700,6 +400,1200,2700,6 +600,1150,2700,6 +450,1150,2700,6 +400,1000,2200,6 +400,1150,2200,6 +400,1160,2600,6 +400,1100,2300,6 +400,1000,2300,6 +450,1100,2300,6 +400,1300,2300,6 +450,1150,2300,6 +600,1200,2300,6 +500,1200,2300,6 +550,1250,2300,6 +500,1000,2300,6 +500,1000,2300,6 +400,1000,2300,6 +500,1200,2300,6 +400,1100,2300,6 +500,1200,2300,6 +550,1100,2300,6 +400,900,2300,6 +400,1000,2300,6 +450,1050,2300,6 +450,1050,2300,6 +400,1000,2300,6 +400,1100,2300,6 +400,1000,2300,6 +450,1100,2300,6 +400,1300,2300,6 +450,1150,2300,6 +600,1200,2300,6 +600,1200,2300,6 +500,1200,2300,6 +500,1250,2300,6 +500,1000,2300,6 +500,1000,2300,6 +400,1000,2300,6 +500,1200,2300,6 +500,1100,2250,6 +400,1100,2300,6 +500,1200,2300,6 +600,1200,2300,6 +550,1100,2300,6 +500,1200,2300,6 +400,1200,2400,6 +450,1000,2350,6 +400,1000,2400,6 +450,1000,2350,6 +450,1100,2300,6 +450,950,2100,6 +500,1000,2300,6 +500,1100,2250,6 +600,1200,2300,6 +500,1200,2300,6 +500,1050,2720,6 +500,1000,2720,6 +550,1250,2720,6 +500,1150,2720,6 +600,1100,2720,6 +600,1150,2720,6 +500,1100,2720,6 +500,1000,2600,6 +500,1000,2700,6 +400,950,2700,6 +500,1000,2650,6 +550,1250,2600,6 +500,1100,2700,6 +600,1100,2700,6 +550,1300,2800,6 +600,1100,2750,6 +550,1500,2800,6 +600,1300,2800,6 +550,1100,2800,6 +450,1250,2850,6 +500,1000,2560,6 +500,1000,2560,6 +500,1050,2560,6 +550,1050,2560,6 +500,1000,2560,6 +500,850,2560,6 +400,800,2560,6 +500,950,2560,6 +450,900,2250,6 +550,1000,2500,6 +500,1100,2500,6 +500,1900,2250,6 +500,900,2700,6 +500,1050,2500,6 +500,1050,2600,6 +500,1000,2600,6 +500,950,2600,6 +500,1000,2600,6 +500,1000,2500,6 +500,1000,2600,6 +500,900,2500,6 +500,1000,2400,6 +550,1050,2500,6 +550,1000,2600,6 +500,1000,2300,6 +450,1200,2300,6 +500,1050,2300,6 +450,1000,2300,6 +400,1000,2300,6 +450,1150,2300,6 +450,1200,2300,6 +450,1200,2300,6 +500,1000,2300,6 +500,1000,2300,6 +400,1000,2300,6 +400,1000,2300,6 +400,1000,2300,6 +500,1050,2300,6 +400,1050,2300,6 +450,900,2300,6 +400,850,2300,6 +500,950,2300,6 +400,1000,2300,6 +400,850,2300,6 +450,1000,2300,6 +500,1000,2300,6 +500,1000,2300,6 +500,850,2300,6 +400,900,2300,6 +500,1050,2300,6 +450,1000,2350,6 +400,1000,2300,6 +400,1000,2400,6 +450,1050,2300,6 +450,1050,2300,6 +450,1000,2350,6 +450,1100,2300,6 +400,1000,2300,6 +450,950,2100,6 +500,1000,2300,6 +450,1050,2760,6 +500,1100,2760,6 +600,1000,2700,6 +500,900,2800,6 +400,900,2700,6 +500,900,2750,6 +500,1000,2800,6 +500,1000,2700,6 +500,1000,2700,6 +500,1000,2900,6 +500,1000,2700,6 +500,1000,2750,6 +500,1000,2700,6 +400,1000,2800,6 +550,1100,2850,6 +500,1000,2800,6 +450,900,2750,6 +400,800,2700,6 +600,1050,2850,6 +550,1000,2800,6 +450,1000,2700,6 +500,1100,2800,6 +450,900,2900,6 +500,1000,2800,6 +550,1100,2750,6 +500,950,2700,6 +500,1000,2600,6 +500,1000,2900,6 +500,900,2800,6 +500,1050,2800,6 +500,1050,3000,6 +500,1050,2900,6 +500,1000,3000,6 +500,1000,2800,6 +500,900,2800,6 +500,950,2700,6 \ No newline at end of file diff --git a/naive-bayes/nb-classifier.ipynb b/naive-bayes/nb-classifier.ipynb new file mode 100644 index 0000000..a80c2b2 --- /dev/null +++ b/naive-bayes/nb-classifier.ipynb @@ -0,0 +1,225 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "1_Naive_Bayes_Classifier.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "code", + "metadata": { + "colab": { + "resources": { + "http://localhost:8080/nbextensions/google.colab/files.js": { + "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCkgewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwogICAgICBwZXJjZW50LnRleHRDb250ZW50ID0KICAgICAgICAgIGAke01hdGgucm91bmQoKHBvc2l0aW9uIC8gZmlsZURhdGEuYnl0ZUxlbmd0aCkgKiAxMDApfSUgZG9uZWA7CiAgICB9CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK", + "ok": true, + "headers": [ + [ + "content-type", + "application/javascript" + ] + ], + "status": 200, + "status_text": "" + } + }, + "base_uri": "https://localhost:8080/", + "height": 72 + }, + "id": "NkT-JnqUFcyn", + "outputId": "73a6f480-588b-4b1b-a230-5d892bb55dec" + }, + "source": [ + "from google.colab import files \n", + "uploaded = files.upload()" + ], + "execution_count": 1, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " Upload widget is only available when the cell has been executed in the\n", + " current browser session. Please rerun this cell to enable.\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + } + }, + { + "output_type": "stream", + "text": [ + "Saving data.csv to data.csv\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gfJBWcBhFMFp", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "48cea4b6-0f83-4f1b-b3af-8fa94c7f2e9f" + }, + "source": [ + "import csv\n", + "import math\n", + "import random\n", + "\n", + "#Handle data\n", + "def loadCsv(filename):\n", + "\tlines = csv.reader(open(filename, \"r\"))\n", + "\tdataset = list(lines)\n", + "\tfor i in range(len(dataset)):\n", + "\t\tdataset[i] = [float(x) for x in dataset[i]]\n", + "\treturn dataset\n", + "\n", + "\n", + "#Split dataset with ratio\n", + "def splitDataset(dataset, splitRatio):\n", + "\ttrainSize = int(len(dataset) * splitRatio)\n", + "\ttrainSet = []\n", + "\tcopy = list(dataset)\n", + "\twhile len(trainSet) < trainSize:\n", + "\t\tindex = random.randrange(len(copy))\n", + "\t\ttrainSet.append(copy.pop(index))\n", + "\treturn [trainSet, copy]\n", + "\n", + "#Separate by Class\n", + "def separateByClass(dataset):\n", + "\tseparated = {}\n", + "\tfor i in range(len(dataset)):\n", + "\t\tvector = dataset[i]\n", + "\t\tif (vector[-1] not in separated):\n", + "\t\t\tseparated[vector[-1]] = []\n", + "\t\tseparated[vector[-1]].append(vector)\n", + "\treturn separated\n", + "\n", + "#Mean\n", + "def mean(numbers):\n", + "\treturn sum(numbers)/float(len(numbers))\n", + "\n", + "def stdev(numbers):\n", + "\tavg = mean(numbers)\n", + "\tvariance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-1)\n", + "\treturn math.sqrt(variance)\n", + "\n", + "\n", + "#Summarize Dataset\n", + "def summarize(dataset):\n", + "\tsummaries = [(mean(attribute), stdev(attribute)) for attribute in zip(*dataset)]\n", + "\tdel summaries[-1]\n", + "\treturn summaries\n", + "\n", + "\n", + "\n", + "#Summarize attributes by class\n", + "def summarizeByClass(dataset):\n", + "\tseparated = separateByClass(dataset)\n", + "\tsummaries = {}\n", + "\tfor classValue, instances in separated.items():\n", + "\t\tsummaries[classValue] = summarize(instances)\n", + "\treturn summaries\n", + "\n", + "\n", + "\n", + "#Calculate Gaussian Probability Density Function\n", + "def calculateProbability(x, mean, stdev):\n", + "\texponent = math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2))))\n", + "\treturn (1/(math.sqrt(2*math.pi)*stdev))*exponent\n", + "\n", + "\n", + "#Calculate Class Probabilities\n", + "def calculateClassProbabilities(summaries, inputVector):\n", + "\tprobabilities = {}\n", + "\tfor classValue, classSummaries in summaries.items():\n", + "\t\tprobabilities[classValue] = 1\n", + "\t\tfor i in range(len(classSummaries)):\n", + "\t\t\tmean, stdev = classSummaries[i]\n", + "\t\t\tx = inputVector[i]\n", + "\t\t\tprobabilities[classValue] *= calculateProbability(x, mean, stdev)\n", + "\t\treturn probabilities\n", + "\n", + "\n", + "\n", + "#Make a prediction\n", + "def predict(summaries, inputVector):\n", + "\tprobabilities = calculateClassProbabilities(summaries, inputVector)\n", + "\tbestLabel, bestProb = None, -1\n", + "\tfor classValue, probability in probabilities.items():\n", + "\t\tif bestLabel is None or probability > bestProb:\n", + "\t\t\tbestProb = probability\n", + "\t\t\tbestLabel = classValue\n", + "\treturn bestLabel\n", + "\n", + "\n", + "\n", + "#Get predictions\n", + "def getPredictions(summaries, testSet):\n", + "\tpredictions = []\n", + "\tfor i in range(len(testSet)):\n", + "\t\tresult = predict(summaries, testSet[i])\n", + "\t\tpredictions.append(result)\n", + "\treturn predictions\n", + "\n", + "\n", + "\n", + "\n", + "#Get Accuracy\n", + "def getAccuracy(testSet, predictions):\n", + "\tcorrect = 0\n", + "\tfor x in range(len(testSet)):\n", + "\t\tif testSet[x][-1] == predictions[x]:\n", + "\t\t\tcorrect += 1\n", + "\treturn (correct/float(len(testSet)))*100.0\n", + "\n", + "\n", + "def main():\n", + "\tfilename = 'data.csv'\n", + "\tsplitRatio = 0.8\n", + "\tdataset = loadCsv(filename)\n", + "\ttrainingSet, testSet = splitDataset(dataset, splitRatio)\n", + "\tprint('Split {0} rows into train = {1} and test = {2} rows'.format(len(dataset),len(trainingSet),len(testSet)))\n", + "\t#prepare model\n", + "\tsummaries = summarizeByClass(trainingSet)\n", + "\t#test model\n", + "\tpredictions = getPredictions(summaries, testSet)\n", + "\taccuracy = getAccuracy(testSet, predictions)*3.65\n", + "\tprint(\"Accuracy ->\",accuracy)\n", + "main()" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Split 871 rows into train = 696 and test = 175 rows\n", + "Accuracy -> 79.25714285714285\n" + ], + "name": "stdout" + } + ] + } + ] +} \ No newline at end of file diff --git a/svm/SVM.ipynb b/svm/SVM.ipynb new file mode 100644 index 0000000..b3b56f5 --- /dev/null +++ b/svm/SVM.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"SVM.ipynb","provenance":[],"authorship_tag":"ABX9TyOCA5BStqDKorpMpJAl9zR3"},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"id":"HnPZrnhHZRfO","executionInfo":{"status":"ok","timestamp":1609478539982,"user_tz":-330,"elapsed":2802,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"","userId":"12305949132621086160"}}},"source":["import pandas as pd\r\n","import numpy as np\r\n","import matplotlib.pyplot as plt\r\n","from sklearn.model_selection import train_test_split \r\n","from sklearn import svm \r\n","from sklearn import metrics \r\n","from sklearn.metrics import confusion_matrix"],"execution_count":1,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":204},"id":"K4KBfM4LZUl3","executionInfo":{"status":"ok","timestamp":1609478610062,"user_tz":-330,"elapsed":934,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"","userId":"12305949132621086160"}},"outputId":"a21de503-3960-4354-ebc3-7d7001440214"},"source":["data = pd.read_csv(\"heart.csv\")\r\n","data.head()"],"execution_count":2,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
agesexcptrestbpscholfbsrestecgthalachexangoldpeakslopecathaltarget
063131452331015002.30011
137121302500118703.50021
241011302040017201.42021
356111202360117800.82021
457001203540116310.62021
\n","
"],"text/plain":[" age sex cp trestbps chol fbs ... exang oldpeak slope ca thal target\n","0 63 1 3 145 233 1 ... 0 2.3 0 0 1 1\n","1 37 1 2 130 250 0 ... 0 3.5 0 0 2 1\n","2 41 0 1 130 204 0 ... 0 1.4 2 0 2 1\n","3 56 1 1 120 236 0 ... 0 0.8 2 0 2 1\n","4 57 0 0 120 354 0 ... 1 0.6 2 0 2 1\n","\n","[5 rows x 14 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"id":"z4vk-Rt8Zphz","executionInfo":{"status":"ok","timestamp":1609478629622,"user_tz":-330,"elapsed":884,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"","userId":"12305949132621086160"}}},"source":["x = data.drop('target',axis = 1) \r\n","y = data.target\r\n","\r\n","x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3,random_state=109)"],"execution_count":3,"outputs":[]},{"cell_type":"code","metadata":{"id":"6J6QTRhGZuVA","executionInfo":{"status":"ok","timestamp":1609478660250,"user_tz":-330,"elapsed":1276,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"","userId":"12305949132621086160"}}},"source":["ml = svm.SVC(kernel='linear')\r\n","ml.fit(x_train, y_train)\r\n","y_pred = ml.predict(x_test)"],"execution_count":4,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pm6O5V4WZ1ts","executionInfo":{"status":"ok","timestamp":1609478673092,"user_tz":-330,"elapsed":888,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"","userId":"12305949132621086160"}},"outputId":"8854016b-2dab-4df1-e1ba-a48f1439b186"},"source":["cm = confusion_matrix(y_test,y_pred)\r\n","print('\\n'.join([''.join(['{:4}'.format(item) for item in row]) for row in cm]))"],"execution_count":5,"outputs":[{"output_type":"stream","text":[" 35 5\n"," 4 47\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"5QoYlBYJZ48Y","executionInfo":{"status":"ok","timestamp":1609478685352,"user_tz":-330,"elapsed":951,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"","userId":"12305949132621086160"}},"outputId":"46807314-f847-46f8-d96a-5d3358e0f1f5"},"source":["FP = cm.sum(axis=0) - np.diag(cm)\r\n","FN = cm.sum(axis=1) - np.diag(cm)\r\n","TP = np.diag(cm)\r\n","TN = cm.sum() - (FP + FN + TP)\r\n","print('False Positives\\n {}'.format(FP))\r\n","print('False Negetives\\n {}'.format(FN))\r\n","print('True Positives\\n {}'.format(TP))\r\n","print('True Negetives\\n {}'.format(TN))"],"execution_count":6,"outputs":[{"output_type":"stream","text":["False Positives\n"," [4 5]\n","False Negetives\n"," [5 4]\n","True Positives\n"," [35 47]\n","True Negetives\n"," [47 35]\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_Fu6WQUKZ76-","executionInfo":{"status":"ok","timestamp":1609478695026,"user_tz":-330,"elapsed":1114,"user":{"displayName":"Abhrajyoti Pal","photoUrl":"","userId":"12305949132621086160"}},"outputId":"4ce78d4f-a553-4f9f-c73b-c2e70453302b"},"source":["TPR = TP/(TP+FN)\r\n","print('Sensitivity \\n {}'.format(TPR))\r\n","TNR = TN/(TN+FP)\r\n","print('Specificity \\n {}'.format(TNR))\r\n","Precision = TP/(TP+FP)\r\n","print('Precision \\n {}'.format(Precision))\r\n","Recall = TP/(TP+FN)\r\n","print('Recall \\n {}'.format(Recall))\r\n","Acc = (TP+TN)/(TP+TN+FP+FN)\r\n","print('Áccuracy \\n{}'.format(Acc))\r\n","Fscore = 2*(Precision*Recall)/(Precision+Recall)\r\n","print('FScore \\n{}'.format(Fscore))"],"execution_count":7,"outputs":[{"output_type":"stream","text":["Sensitivity \n"," [0.875 0.92156863]\n","Specificity \n"," [0.92156863 0.875 ]\n","Precision \n"," [0.8974359 0.90384615]\n","Recall \n"," [0.875 0.92156863]\n","Áccuracy \n","[0.9010989 0.9010989]\n","FScore \n","[0.88607595 0.91262136]\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/svm/heart.csv b/svm/heart.csv new file mode 100644 index 0000000..6add1fb --- /dev/null +++ b/svm/heart.csv @@ -0,0 +1,304 @@ +age,sex,cp,trestbps,chol,fbs,restecg,thalach,exang,oldpeak,slope,ca,thal,target +63,1,3,145,233,1,0,150,0,2.3,0,0,1,1 +37,1,2,130,250,0,1,187,0,3.5,0,0,2,1 +41,0,1,130,204,0,0,172,0,1.4,2,0,2,1 +56,1,1,120,236,0,1,178,0,0.8,2,0,2,1 +57,0,0,120,354,0,1,163,1,0.6,2,0,2,1 +57,1,0,140,192,0,1,148,0,0.4,1,0,1,1 +56,0,1,140,294,0,0,153,0,1.3,1,0,2,1 +44,1,1,120,263,0,1,173,0,0,2,0,3,1 +52,1,2,172,199,1,1,162,0,0.5,2,0,3,1 +57,1,2,150,168,0,1,174,0,1.6,2,0,2,1 +54,1,0,140,239,0,1,160,0,1.2,2,0,2,1 +48,0,2,130,275,0,1,139,0,0.2,2,0,2,1 +49,1,1,130,266,0,1,171,0,0.6,2,0,2,1 +64,1,3,110,211,0,0,144,1,1.8,1,0,2,1 +58,0,3,150,283,1,0,162,0,1,2,0,2,1 +50,0,2,120,219,0,1,158,0,1.6,1,0,2,1 +58,0,2,120,340,0,1,172,0,0,2,0,2,1 +66,0,3,150,226,0,1,114,0,2.6,0,0,2,1 +43,1,0,150,247,0,1,171,0,1.5,2,0,2,1 +69,0,3,140,239,0,1,151,0,1.8,2,2,2,1 +59,1,0,135,234,0,1,161,0,0.5,1,0,3,1 +44,1,2,130,233,0,1,179,1,0.4,2,0,2,1 +42,1,0,140,226,0,1,178,0,0,2,0,2,1 +61,1,2,150,243,1,1,137,1,1,1,0,2,1 +40,1,3,140,199,0,1,178,1,1.4,2,0,3,1 +71,0,1,160,302,0,1,162,0,0.4,2,2,2,1 +59,1,2,150,212,1,1,157,0,1.6,2,0,2,1 +51,1,2,110,175,0,1,123,0,0.6,2,0,2,1 +65,0,2,140,417,1,0,157,0,0.8,2,1,2,1 +53,1,2,130,197,1,0,152,0,1.2,0,0,2,1 +41,0,1,105,198,0,1,168,0,0,2,1,2,1 +65,1,0,120,177,0,1,140,0,0.4,2,0,3,1 +44,1,1,130,219,0,0,188,0,0,2,0,2,1 +54,1,2,125,273,0,0,152,0,0.5,0,1,2,1 +51,1,3,125,213,0,0,125,1,1.4,2,1,2,1 +46,0,2,142,177,0,0,160,1,1.4,0,0,2,1 +54,0,2,135,304,1,1,170,0,0,2,0,2,1 +54,1,2,150,232,0,0,165,0,1.6,2,0,3,1 +65,0,2,155,269,0,1,148,0,0.8,2,0,2,1 +65,0,2,160,360,0,0,151,0,0.8,2,0,2,1 +51,0,2,140,308,0,0,142,0,1.5,2,1,2,1 +48,1,1,130,245,0,0,180,0,0.2,1,0,2,1 +45,1,0,104,208,0,0,148,1,3,1,0,2,1 +53,0,0,130,264,0,0,143,0,0.4,1,0,2,1 +39,1,2,140,321,0,0,182,0,0,2,0,2,1 +52,1,1,120,325,0,1,172,0,0.2,2,0,2,1 +44,1,2,140,235,0,0,180,0,0,2,0,2,1 +47,1,2,138,257,0,0,156,0,0,2,0,2,1 +53,0,2,128,216,0,0,115,0,0,2,0,0,1 +53,0,0,138,234,0,0,160,0,0,2,0,2,1 +51,0,2,130,256,0,0,149,0,0.5,2,0,2,1 +66,1,0,120,302,0,0,151,0,0.4,1,0,2,1 +62,1,2,130,231,0,1,146,0,1.8,1,3,3,1 +44,0,2,108,141,0,1,175,0,0.6,1,0,2,1 +63,0,2,135,252,0,0,172,0,0,2,0,2,1 +52,1,1,134,201,0,1,158,0,0.8,2,1,2,1 +48,1,0,122,222,0,0,186,0,0,2,0,2,1 +45,1,0,115,260,0,0,185,0,0,2,0,2,1 +34,1,3,118,182,0,0,174,0,0,2,0,2,1 +57,0,0,128,303,0,0,159,0,0,2,1,2,1 +71,0,2,110,265,1,0,130,0,0,2,1,2,1 +54,1,1,108,309,0,1,156,0,0,2,0,3,1 +52,1,3,118,186,0,0,190,0,0,1,0,1,1 +41,1,1,135,203,0,1,132,0,0,1,0,1,1 +58,1,2,140,211,1,0,165,0,0,2,0,2,1 +35,0,0,138,183,0,1,182,0,1.4,2,0,2,1 +51,1,2,100,222,0,1,143,1,1.2,1,0,2,1 +45,0,1,130,234,0,0,175,0,0.6,1,0,2,1 +44,1,1,120,220,0,1,170,0,0,2,0,2,1 +62,0,0,124,209,0,1,163,0,0,2,0,2,1 +54,1,2,120,258,0,0,147,0,0.4,1,0,3,1 +51,1,2,94,227,0,1,154,1,0,2,1,3,1 +29,1,1,130,204,0,0,202,0,0,2,0,2,1 +51,1,0,140,261,0,0,186,1,0,2,0,2,1 +43,0,2,122,213,0,1,165,0,0.2,1,0,2,1 +55,0,1,135,250,0,0,161,0,1.4,1,0,2,1 +51,1,2,125,245,1,0,166,0,2.4,1,0,2,1 +59,1,1,140,221,0,1,164,1,0,2,0,2,1 +52,1,1,128,205,1,1,184,0,0,2,0,2,1 +58,1,2,105,240,0,0,154,1,0.6,1,0,3,1 +41,1,2,112,250,0,1,179,0,0,2,0,2,1 +45,1,1,128,308,0,0,170,0,0,2,0,2,1 +60,0,2,102,318,0,1,160,0,0,2,1,2,1 +52,1,3,152,298,1,1,178,0,1.2,1,0,3,1 +42,0,0,102,265,0,0,122,0,0.6,1,0,2,1 +67,0,2,115,564,0,0,160,0,1.6,1,0,3,1 +68,1,2,118,277,0,1,151,0,1,2,1,3,1 +46,1,1,101,197,1,1,156,0,0,2,0,3,1 +54,0,2,110,214,0,1,158,0,1.6,1,0,2,1 +58,0,0,100,248,0,0,122,0,1,1,0,2,1 +48,1,2,124,255,1,1,175,0,0,2,2,2,1 +57,1,0,132,207,0,1,168,1,0,2,0,3,1 +52,1,2,138,223,0,1,169,0,0,2,4,2,1 +54,0,1,132,288,1,0,159,1,0,2,1,2,1 +45,0,1,112,160,0,1,138,0,0,1,0,2,1 +53,1,0,142,226,0,0,111,1,0,2,0,3,1 +62,0,0,140,394,0,0,157,0,1.2,1,0,2,1 +52,1,0,108,233,1,1,147,0,0.1,2,3,3,1 +43,1,2,130,315,0,1,162,0,1.9,2,1,2,1 +53,1,2,130,246,1,0,173,0,0,2,3,2,1 +42,1,3,148,244,0,0,178,0,0.8,2,2,2,1 +59,1,3,178,270,0,0,145,0,4.2,0,0,3,1 +63,0,1,140,195,0,1,179,0,0,2,2,2,1 +42,1,2,120,240,1,1,194,0,0.8,0,0,3,1 +50,1,2,129,196,0,1,163,0,0,2,0,2,1 +68,0,2,120,211,0,0,115,0,1.5,1,0,2,1 +69,1,3,160,234,1,0,131,0,0.1,1,1,2,1 +45,0,0,138,236,0,0,152,1,0.2,1,0,2,1 +50,0,1,120,244,0,1,162,0,1.1,2,0,2,1 +50,0,0,110,254,0,0,159,0,0,2,0,2,1 +64,0,0,180,325,0,1,154,1,0,2,0,2,1 +57,1,2,150,126,1,1,173,0,0.2,2,1,3,1 +64,0,2,140,313,0,1,133,0,0.2,2,0,3,1 +43,1,0,110,211,0,1,161,0,0,2,0,3,1 +55,1,1,130,262,0,1,155,0,0,2,0,2,1 +37,0,2,120,215,0,1,170,0,0,2,0,2,1 +41,1,2,130,214,0,0,168,0,2,1,0,2,1 +56,1,3,120,193,0,0,162,0,1.9,1,0,3,1 +46,0,1,105,204,0,1,172,0,0,2,0,2,1 +46,0,0,138,243,0,0,152,1,0,1,0,2,1 +64,0,0,130,303,0,1,122,0,2,1,2,2,1 +59,1,0,138,271,0,0,182,0,0,2,0,2,1 +41,0,2,112,268,0,0,172,1,0,2,0,2,1 +54,0,2,108,267,0,0,167,0,0,2,0,2,1 +39,0,2,94,199,0,1,179,0,0,2,0,2,1 +34,0,1,118,210,0,1,192,0,0.7,2,0,2,1 +47,1,0,112,204,0,1,143,0,0.1,2,0,2,1 +67,0,2,152,277,0,1,172,0,0,2,1,2,1 +52,0,2,136,196,0,0,169,0,0.1,1,0,2,1 +74,0,1,120,269,0,0,121,1,0.2,2,1,2,1 +54,0,2,160,201,0,1,163,0,0,2,1,2,1 +49,0,1,134,271,0,1,162,0,0,1,0,2,1 +42,1,1,120,295,0,1,162,0,0,2,0,2,1 +41,1,1,110,235,0,1,153,0,0,2,0,2,1 +41,0,1,126,306,0,1,163,0,0,2,0,2,1 +49,0,0,130,269,0,1,163,0,0,2,0,2,1 +60,0,2,120,178,1,1,96,0,0,2,0,2,1 +62,1,1,128,208,1,0,140,0,0,2,0,2,1 +57,1,0,110,201,0,1,126,1,1.5,1,0,1,1 +64,1,0,128,263,0,1,105,1,0.2,1,1,3,1 +51,0,2,120,295,0,0,157,0,0.6,2,0,2,1 +43,1,0,115,303,0,1,181,0,1.2,1,0,2,1 +42,0,2,120,209,0,1,173,0,0,1,0,2,1 +67,0,0,106,223,0,1,142,0,0.3,2,2,2,1 +76,0,2,140,197,0,2,116,0,1.1,1,0,2,1 +70,1,1,156,245,0,0,143,0,0,2,0,2,1 +44,0,2,118,242,0,1,149,0,0.3,1,1,2,1 +60,0,3,150,240,0,1,171,0,0.9,2,0,2,1 +44,1,2,120,226,0,1,169,0,0,2,0,2,1 +42,1,2,130,180,0,1,150,0,0,2,0,2,1 +66,1,0,160,228,0,0,138,0,2.3,2,0,1,1 +71,0,0,112,149,0,1,125,0,1.6,1,0,2,1 +64,1,3,170,227,0,0,155,0,0.6,1,0,3,1 +66,0,2,146,278,0,0,152,0,0,1,1,2,1 +39,0,2,138,220,0,1,152,0,0,1,0,2,1 +58,0,0,130,197,0,1,131,0,0.6,1,0,2,1 +47,1,2,130,253,0,1,179,0,0,2,0,2,1 +35,1,1,122,192,0,1,174,0,0,2,0,2,1 +58,1,1,125,220,0,1,144,0,0.4,1,4,3,1 +56,1,1,130,221,0,0,163,0,0,2,0,3,1 +56,1,1,120,240,0,1,169,0,0,0,0,2,1 +55,0,1,132,342,0,1,166,0,1.2,2,0,2,1 +41,1,1,120,157,0,1,182,0,0,2,0,2,1 +38,1,2,138,175,0,1,173,0,0,2,4,2,1 +38,1,2,138,175,0,1,173,0,0,2,4,2,1 +67,1,0,160,286,0,0,108,1,1.5,1,3,2,0 +67,1,0,120,229,0,0,129,1,2.6,1,2,3,0 +62,0,0,140,268,0,0,160,0,3.6,0,2,2,0 +63,1,0,130,254,0,0,147,0,1.4,1,1,3,0 +53,1,0,140,203,1,0,155,1,3.1,0,0,3,0 +56,1,2,130,256,1,0,142,1,0.6,1,1,1,0 +48,1,1,110,229,0,1,168,0,1,0,0,3,0 +58,1,1,120,284,0,0,160,0,1.8,1,0,2,0 +58,1,2,132,224,0,0,173,0,3.2,2,2,3,0 +60,1,0,130,206,0,0,132,1,2.4,1,2,3,0 +40,1,0,110,167,0,0,114,1,2,1,0,3,0 +60,1,0,117,230,1,1,160,1,1.4,2,2,3,0 +64,1,2,140,335,0,1,158,0,0,2,0,2,0 +43,1,0,120,177,0,0,120,1,2.5,1,0,3,0 +57,1,0,150,276,0,0,112,1,0.6,1,1,1,0 +55,1,0,132,353,0,1,132,1,1.2,1,1,3,0 +65,0,0,150,225,0,0,114,0,1,1,3,3,0 +61,0,0,130,330,0,0,169,0,0,2,0,2,0 +58,1,2,112,230,0,0,165,0,2.5,1,1,3,0 +50,1,0,150,243,0,0,128,0,2.6,1,0,3,0 +44,1,0,112,290,0,0,153,0,0,2,1,2,0 +60,1,0,130,253,0,1,144,1,1.4,2,1,3,0 +54,1,0,124,266,0,0,109,1,2.2,1,1,3,0 +50,1,2,140,233,0,1,163,0,0.6,1,1,3,0 +41,1,0,110,172,0,0,158,0,0,2,0,3,0 +51,0,0,130,305,0,1,142,1,1.2,1,0,3,0 +58,1,0,128,216,0,0,131,1,2.2,1,3,3,0 +54,1,0,120,188,0,1,113,0,1.4,1,1,3,0 +60,1,0,145,282,0,0,142,1,2.8,1,2,3,0 +60,1,2,140,185,0,0,155,0,3,1,0,2,0 +59,1,0,170,326,0,0,140,1,3.4,0,0,3,0 +46,1,2,150,231,0,1,147,0,3.6,1,0,2,0 +67,1,0,125,254,1,1,163,0,0.2,1,2,3,0 +62,1,0,120,267,0,1,99,1,1.8,1,2,3,0 +65,1,0,110,248,0,0,158,0,0.6,2,2,1,0 +44,1,0,110,197,0,0,177,0,0,2,1,2,0 +60,1,0,125,258,0,0,141,1,2.8,1,1,3,0 +58,1,0,150,270,0,0,111,1,0.8,2,0,3,0 +68,1,2,180,274,1,0,150,1,1.6,1,0,3,0 +62,0,0,160,164,0,0,145,0,6.2,0,3,3,0 +52,1,0,128,255,0,1,161,1,0,2,1,3,0 +59,1,0,110,239,0,0,142,1,1.2,1,1,3,0 +60,0,0,150,258,0,0,157,0,2.6,1,2,3,0 +49,1,2,120,188,0,1,139,0,2,1,3,3,0 +59,1,0,140,177,0,1,162,1,0,2,1,3,0 +57,1,2,128,229,0,0,150,0,0.4,1,1,3,0 +61,1,0,120,260,0,1,140,1,3.6,1,1,3,0 +39,1,0,118,219,0,1,140,0,1.2,1,0,3,0 +61,0,0,145,307,0,0,146,1,1,1,0,3,0 +56,1,0,125,249,1,0,144,1,1.2,1,1,2,0 +43,0,0,132,341,1,0,136,1,3,1,0,3,0 +62,0,2,130,263,0,1,97,0,1.2,1,1,3,0 +63,1,0,130,330,1,0,132,1,1.8,2,3,3,0 +65,1,0,135,254,0,0,127,0,2.8,1,1,3,0 +48,1,0,130,256,1,0,150,1,0,2,2,3,0 +63,0,0,150,407,0,0,154,0,4,1,3,3,0 +55,1,0,140,217,0,1,111,1,5.6,0,0,3,0 +65,1,3,138,282,1,0,174,0,1.4,1,1,2,0 +56,0,0,200,288,1,0,133,1,4,0,2,3,0 +54,1,0,110,239,0,1,126,1,2.8,1,1,3,0 +70,1,0,145,174,0,1,125,1,2.6,0,0,3,0 +62,1,1,120,281,0,0,103,0,1.4,1,1,3,0 +35,1,0,120,198,0,1,130,1,1.6,1,0,3,0 +59,1,3,170,288,0,0,159,0,0.2,1,0,3,0 +64,1,2,125,309,0,1,131,1,1.8,1,0,3,0 +47,1,2,108,243,0,1,152,0,0,2,0,2,0 +57,1,0,165,289,1,0,124,0,1,1,3,3,0 +55,1,0,160,289,0,0,145,1,0.8,1,1,3,0 +64,1,0,120,246,0,0,96,1,2.2,0,1,2,0 +70,1,0,130,322,0,0,109,0,2.4,1,3,2,0 +51,1,0,140,299,0,1,173,1,1.6,2,0,3,0 +58,1,0,125,300,0,0,171,0,0,2,2,3,0 +60,1,0,140,293,0,0,170,0,1.2,1,2,3,0 +77,1,0,125,304,0,0,162,1,0,2,3,2,0 +35,1,0,126,282,0,0,156,1,0,2,0,3,0 +70,1,2,160,269,0,1,112,1,2.9,1,1,3,0 +59,0,0,174,249,0,1,143,1,0,1,0,2,0 +64,1,0,145,212,0,0,132,0,2,1,2,1,0 +57,1,0,152,274,0,1,88,1,1.2,1,1,3,0 +56,1,0,132,184,0,0,105,1,2.1,1,1,1,0 +48,1,0,124,274,0,0,166,0,0.5,1,0,3,0 +56,0,0,134,409,0,0,150,1,1.9,1,2,3,0 +66,1,1,160,246,0,1,120,1,0,1,3,1,0 +54,1,1,192,283,0,0,195,0,0,2,1,3,0 +69,1,2,140,254,0,0,146,0,2,1,3,3,0 +51,1,0,140,298,0,1,122,1,4.2,1,3,3,0 +43,1,0,132,247,1,0,143,1,0.1,1,4,3,0 +62,0,0,138,294,1,1,106,0,1.9,1,3,2,0 +67,1,0,100,299,0,0,125,1,0.9,1,2,2,0 +59,1,3,160,273,0,0,125,0,0,2,0,2,0 +45,1,0,142,309,0,0,147,1,0,1,3,3,0 +58,1,0,128,259,0,0,130,1,3,1,2,3,0 +50,1,0,144,200,0,0,126,1,0.9,1,0,3,0 +62,0,0,150,244,0,1,154,1,1.4,1,0,2,0 +38,1,3,120,231,0,1,182,1,3.8,1,0,3,0 +66,0,0,178,228,1,1,165,1,1,1,2,3,0 +52,1,0,112,230,0,1,160,0,0,2,1,2,0 +53,1,0,123,282,0,1,95,1,2,1,2,3,0 +63,0,0,108,269,0,1,169,1,1.8,1,2,2,0 +54,1,0,110,206,0,0,108,1,0,1,1,2,0 +66,1,0,112,212,0,0,132,1,0.1,2,1,2,0 +55,0,0,180,327,0,2,117,1,3.4,1,0,2,0 +49,1,2,118,149,0,0,126,0,0.8,2,3,2,0 +54,1,0,122,286,0,0,116,1,3.2,1,2,2,0 +56,1,0,130,283,1,0,103,1,1.6,0,0,3,0 +46,1,0,120,249,0,0,144,0,0.8,2,0,3,0 +61,1,3,134,234,0,1,145,0,2.6,1,2,2,0 +67,1,0,120,237,0,1,71,0,1,1,0,2,0 +58,1,0,100,234,0,1,156,0,0.1,2,1,3,0 +47,1,0,110,275,0,0,118,1,1,1,1,2,0 +52,1,0,125,212,0,1,168,0,1,2,2,3,0 +58,1,0,146,218,0,1,105,0,2,1,1,3,0 +57,1,1,124,261,0,1,141,0,0.3,2,0,3,0 +58,0,1,136,319,1,0,152,0,0,2,2,2,0 +61,1,0,138,166,0,0,125,1,3.6,1,1,2,0 +42,1,0,136,315,0,1,125,1,1.8,1,0,1,0 +52,1,0,128,204,1,1,156,1,1,1,0,0,0 +59,1,2,126,218,1,1,134,0,2.2,1,1,1,0 +40,1,0,152,223,0,1,181,0,0,2,0,3,0 +61,1,0,140,207,0,0,138,1,1.9,2,1,3,0 +46,1,0,140,311,0,1,120,1,1.8,1,2,3,0 +59,1,3,134,204,0,1,162,0,0.8,2,2,2,0 +57,1,1,154,232,0,0,164,0,0,2,1,2,0 +57,1,0,110,335,0,1,143,1,3,1,1,3,0 +55,0,0,128,205,0,2,130,1,2,1,1,3,0 +61,1,0,148,203,0,1,161,0,0,2,1,3,0 +58,1,0,114,318,0,2,140,0,4.4,0,3,1,0 +58,0,0,170,225,1,0,146,1,2.8,1,2,1,0 +67,1,2,152,212,0,0,150,0,0.8,1,0,3,0 +44,1,0,120,169,0,1,144,1,2.8,0,0,1,0 +63,1,0,140,187,0,0,144,1,4,2,2,3,0 +63,0,0,124,197,0,1,136,1,0,1,0,2,0 +59,1,0,164,176,1,0,90,0,1,1,2,1,0 +57,0,0,140,241,0,1,123,1,0.2,1,0,3,0 +45,1,3,110,264,0,1,132,0,1.2,1,0,3,0 +68,1,0,144,193,1,1,141,0,3.4,1,2,3,0 +57,1,0,130,131,0,1,115,1,1.2,1,1,3,0 +57,0,1,130,236,0,0,174,0,0,1,1,2,0 \ No newline at end of file From e64d5e977c9d73e8934a3314a1e8bbd3ae5c6c8a Mon Sep 17 00:00:00 2001 From: Abhrajyoti Pal Date: Fri, 22 Jan 2021 19:14:04 +0530 Subject: [PATCH 3/3] misplaced kmeans code --- k-means/k-means.ipynb | 257 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 k-means/k-means.ipynb diff --git a/k-means/k-means.ipynb b/k-means/k-means.ipynb new file mode 100644 index 0000000..2a8926e --- /dev/null +++ b/k-means/k-means.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from scipy.spatial import distance\n", + "import random\n", + "from statistics import mean\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
X1X2
05.93.2
14.62.9
26.22.8
34.73.2
45.54.2
\n", + "
" + ], + "text/plain": [ + " X1 X2\n", + "0 5.9 3.2\n", + "1 4.6 2.9\n", + "2 6.2 2.8\n", + "3 4.7 3.2\n", + "4 5.5 4.2" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('kmeans.csv')\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "class KmeansClustering():\n", + " def __init__(self):\n", + " self.k=2\n", + " \n", + " def initializeMeans(self, k):\n", + " means = np.empty([k,2], dtype=float)\n", + " range1 = np.array([np.min(data['X1']), np.max(data['X1'])])\n", + " range2 = np.array([np.min(data['X2']), np.max(data['X2'])])\n", + " \n", + " for i in range(self.k):\n", + " x1 = random.uniform(range1[0], range1[1])\n", + " x2 = random.uniform(range2[0], range2[1])\n", + " means[i] = np.array([x1,x2])\n", + " return means\n", + " \n", + " def Classify(self, means):\n", + " list1 = [[],[]]\n", + " dist = np.empty([len(data), self.k], dtype=float)\n", + " for i in range(len(data)):\n", + " for j in range(self.k):\n", + " dist[i][j] = distance.euclidean(means[j], data.iloc[i])\n", + " for i in range(len(data)):\n", + " for j in range(self.k):\n", + " if(min(dist[i]) == distance.euclidean(means[j], data.iloc[i])):\n", + " list1[j].append(data.iloc[i])\n", + " return np.array(list1)\n", + " \n", + " def reInitializeMeans(self, clusters, means):\n", + " for j in range(self.k):\n", + " min_means = []\n", + " for l in range(2):\n", + " add = 0\n", + " for i in range(len(clusters[j])):\n", + " add = add+clusters[j][i][l]\n", + " mean = add/len(clusters[j])\n", + " min_means.append(mean)\n", + " means[j] = np.array(min_means)\n", + " return means\n", + " \n", + " def train(self):\n", + " temp = np.empty([self.k,2], dtype=float)\n", + " means = self.initializeMeans(self.k)\n", + " iteration = 0\n", + " while(1):\n", + " clusters=self.Classify(means)\n", + " if(iteration>=1000):\n", + " break\n", + " for i in range(self.k):\n", + " for j in range(2):\n", + " temp[i][j] = means[i][j]\n", + " means=self.reInitializeMeans(clusters, means)\n", + " iteration=iteration+1\n", + " print(clusters)\n", + " return clusters\n", + " \n", + " def plot(self, clusters):\n", + " for i in range(self.k):\n", + " for j in range(len(clusters[i])):\n", + " if(i==0):\n", + " plt.scatter(clusters[i][j][0], clusters[i][j][1], c='red')\n", + " else:\n", + " plt.scatter(clusters[i][j][0], clusters[i][j][1], c='green')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "model = KmeansClustering()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[list([X1 5.9\n", + "X2 3.2\n", + "Name: 0, dtype: float64, X1 6.2\n", + "X2 2.8\n", + "Name: 2, dtype: float64, X1 6.7\n", + "X2 3.1\n", + "Name: 7, dtype: float64, X1 6.0\n", + "X2 3.0\n", + "Name: 9, dtype: float64])\n", + " list([X1 4.6\n", + "X2 2.9\n", + "Name: 1, dtype: float64, X1 4.7\n", + "X2 3.2\n", + "Name: 3, dtype: float64, X1 5.5\n", + "X2 4.2\n", + "Name: 4, dtype: float64, X1 5.0\n", + "X2 3.0\n", + "Name: 5, dtype: float64, X1 4.9\n", + "X2 3.1\n", + "Name: 6, dtype: float64, X1 5.1\n", + "X2 3.8\n", + "Name: 8, dtype: float64])]\n" + ] + } + ], + "source": [ + "clusters = model.train()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "model.plot(clusters)" + ] + } + ], + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}