{ "cells": [ { "cell_type": "code", "execution_count": 395, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import math\n", "import random\n", "import scipy.io\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 396, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = pd.read_csv('data.txt', sep=',', header=None)\n", "first = 4\n", "second = 6\n", "count = len(df[0])\n", "plt.plot(df[first], df[second], '.')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 397, "metadata": {}, "outputs": [], "source": [ "def len1(i, j): #Manhattan distance\n", " a = abs(df[first][i] - df[first][j])\n", " b = abs(df[second][i] - df[second][j])\n", " return a+b" ] }, { "cell_type": "code", "execution_count": 398, "metadata": {}, "outputs": [], "source": [ "def len2(i, j): #Euclidean distance\n", " a = (df[first][i] - df[first][j])*(df[first][i] - df[first][j])\n", " b = (df[second][i] - df[second][j])*(df[second][i] - df[second][j])\n", " return math.sqrt(a+b)" ] }, { "cell_type": "code", "execution_count": 399, "metadata": {}, "outputs": [], "source": [ "def lenglst(dot, l):\n", " lst = []\n", " for i in range(count):\n", " if i == dot:\n", " lst.append(-1)\n", " elif color[i] == 0:\n", " lst.append(-1)\n", " elif l == 1:\n", " lst.append(len1(dot, i))\n", " elif l == 2:\n", " lst.append(len2(dot, i))\n", " return lst " ] }, { "cell_type": "code", "execution_count": 400, "metadata": {}, "outputs": [], "source": [ "def findNeighb(dot, lst):\n", " neighb = []\n", " for i in range(count):\n", " if lst[i] > 0:\n", " if len(neighb) < k:\n", " neighb.append(i)\n", " else:\n", " j = 0\n", " while (j < k) and (lst[neighb[j]] < lst[i]): j = j + 1\n", " if j < k:\n", " neighb.insert(j, i)\n", " neighb.pop()\n", " return neighb" ] }, { "cell_type": "code", "execution_count": 403, "metadata": {}, "outputs": [], "source": [ "color = count*[0]\n", "classcount = 3\n", "classstart = []\n", "for i in range(classcount):\n", " classstart.append(random.randint(0,count))\n", " color[classstart[i]] = i + 1\n", "k = classcount\n" ] }, { "cell_type": "code", "execution_count": 406, "metadata": {}, "outputs": [], "source": [ "def kNN(l):\n", " for i in range(count):\n", " if color[i] == 0:\n", " lst = lenglst(i,l)\n", " neighb = findNeighb(i, lst)\n", " defclass = classcount*[0]\n", " for j in range(k):\n", " cl = color[neighb[j]] - 1\n", " defclass[cl] = defclass[cl] + 1/lst[neighb[j]]\n", " cl = 1\n", " for j in range(classcount): \n", " if defclass[cl-1] < defclass[j]:\n", " cl = j+1\n", " color[i] = cl\n" ] }, { "cell_type": "code", "execution_count": 407, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "kNN(2)\n", "plt.title(\"Euclidean distance\")\n", "for i in range(count):\n", " if color[i] == 1:\n", " plt.scatter(df[first][i], df[second][i], color = 'red')\n", " elif color[i] == 2:\n", " plt.scatter(df[first][i], df[second][i], color = 'blue')\n", " elif color[i] == 3:\n", " plt.scatter(df[first][i], df[second][i], color = 'green')" ] }, { "cell_type": "code", "execution_count": 411, "metadata": {}, "outputs": [], "source": [ "color = count*[0]\n", "for i in range(classcount):\n", " color[classstart[i]] = i + 1\n" ] }, { "cell_type": "code", "execution_count": 412, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "kNN(1)\n", "plt.title(\"Manhattan distance\")\n", "for i in range(count):\n", " if color[i] == 1:\n", " plt.scatter(df[first][i], df[second][i], color = 'red')\n", " elif color[i] == 2:\n", " plt.scatter(df[first][i], df[second][i], color = 'blue')\n", " elif color[i] == 3:\n", " plt.scatter(df[first][i], df[second][i], color = 'green')" ] }, { "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }