{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# K-Nearest Neighbors (KNN)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "O K-Nearest Neighbors (KNN) é um dos algoritmos mais simples de classificação da aprendizagem de máquina. Uma nova entrada é classificada de acordo com os exemplos dos dados de treinamento que são mais parecidos com ela, ou seja, que estão mais próximos num espaço n-dimensional de atributos.\n", "\n", "Para começar, vamos carregar os dados que usaremos em toda a explicação." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn import datasets\n", "\n", "iris_data = datasets.load_iris()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Neste dataset temos dados sobre flores. Os atributos são:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['sepal length (cm)',\n", " 'sepal width (cm)',\n", " 'petal length (cm)',\n", " 'petal width (cm)']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris_data.feature_names" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Um pouco de biologia para entendermos o que é uma pétala (petal) e uma sépala (sepal)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQEARgBGAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdC\nIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAA\nAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtk\nZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAA\nABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAH\nbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAA\nAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNh\nRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAAC\nZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAe\nAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAA\nAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVz\nRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAE\npHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBv\nAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcA\nQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQBy\nAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAE\nPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBC\nkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIA\naQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg\n1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAA\nUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBp\nAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBj\nz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABn\nAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkA\nbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcABy\nAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwA\nIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBp\nAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkE\nOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYn\nBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIA\nZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3\nIEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFla\nIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2\nY3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wA\nAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAA\nAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAARgAAAAEAAABGAAAAAQACoAIABAAAAAEA\nAAGtoAMABAAAAAEAAAEvAAAAAP/bAEMAAgICAgIBAgICAgICAgMDBgQDAwMDBwUFBAYIBwgICAcI\nCAkKDQsJCQwKCAgLDwsMDQ4ODg4JCxARDw4RDQ4ODv/bAEMBAgICAwMDBgQEBg4JCAkODg4ODg4O\nDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODv/AABEIAS8BrQMBIgAC\nEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAA\nAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4\nOTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaan\nqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD\nAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEG\nEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpT\nVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4\nubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP34oooo\n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\n", "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import Image \n", "Image(filename='flower_parts.jpg') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "O dataset contém dados de 150 flores com 4 atributos para cada flor:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(150, 4)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris_data.data.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vejamos os valores das 10 primeiras flores:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 5.1, 3.5, 1.4, 0.2],\n", " [ 4.9, 3. , 1.4, 0.2],\n", " [ 4.7, 3.2, 1.3, 0.2],\n", " [ 4.6, 3.1, 1.5, 0.2],\n", " [ 5. , 3.6, 1.4, 0.2],\n", " [ 5.4, 3.9, 1.7, 0.4],\n", " [ 4.6, 3.4, 1.4, 0.3],\n", " [ 5. , 3.4, 1.5, 0.2],\n", " [ 4.4, 2.9, 1.4, 0.2],\n", " [ 4.9, 3.1, 1.5, 0.1]])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris_data.data[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cada linha na matriz representa uma flor, e para cada flor temos os seus quatro atributos.\n", "\n", "Por exemplo, na primeira linha temos:\n", "\n", "- sepal length (cm): 5.1\n", "- sepal width (cm): 3.5\n", "- petal length (cm): 1.4\n", "- petal width (cm): 0.2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No dataset existem três classificações (rótulos) possíveis para as flores: 0, 1 e 2" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris_data.target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Se você quiser saber qual o rótulo da primeira linha dos dados (iris_data.data) basta acessar a primeira posição do iris_data.target. Se quiser saber o rótulo da segunda linha dos dados é só acessar a segunda posição e assim por diante." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vamos plotar os dados num gráfico para visualizarmos a distribuição dos tipos de flores de acordo com seus atributos. Como temos um espaço de 4 dimensões (uma dimensão para cada atributo) foi escolhido apenas as colunas 2 e 3 da matriz para o gráfico abaixo." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ndB03g/LmTZleKUQNKiwsZN++fbi6utKiRYsqWXYgPz+fffv2YTKZCAsLu6EXLRMVI9Mrhahjzpw5\nw609enDh1CkKbDY6dO3Kd3FxuLq6XnebJ06coM+APhRoC8i9kMuAvgP48rMvcXZ2vnZlcdOQMXoh\nasijDz2E1/Hj3J+Tw1SzmZNbtvD2W29Vqs37HrqP0HsaMWnvBKYcvY/EY4ksWLCgagIWDkMSvRA1\n5PfffqNFYSEa7DNpwvLy2LNrV6Xa3L9/Py3G2F9ectG7EDo0hL3791Y+WOFQJNELUUNaRUZywMUF\nBViBI3o9raOjK9VmREQEB5ceBKAwr5ATP5ygdUTrygcrHIp8GStEDTlz5gx9uncnIy2NApuN9l26\nsGLVqkqP0ffu35si10JyL5jp27svX33+lYzR3yRkUTMh6qCCgoJSs24qslNSWSwWS8msm2bNmsms\nm5uIbDwiRB2jlGLOvDmMn3wX4yePZ9m3yy4rs2PHDrrf2p3wyHD+9ujfrvr26B/c3Nxo164d4eHh\naDQaFny+gDYd2xDZoTXvf/h+jTxA/frrr/Ts0oXwkBAemDSJ3Aq+jSuqlzzRC1FDZr87m9mfvU3f\nD/qQf7GA1ZN/5OsFX9OvXz8AkpKSaNepHT3e6IZ/Gz+2vrSN1qZIFn2xqNx9LF22lIcee4gBn/bD\n2cWJNfet5dWnXmXSxEnVdVmkpqbSJiKC7tnZBAAJbm6E9OnD8pUrq61PYSdDN0LUMdFdo4l8rRWh\nMSEAbJ+3A/9fG7Lg4wUAfPjhh3y67RMGfjYAgPzsfN6pPxdLnqXcwzHDRg/D+XYNkXfbv5A9sPwg\n5+afZ92q9VV/QcU+//xz3n34YW4vXnOnCHjd2ZncvLySZRBE9ZChGyHqGIPegPmcueQ475wFg95Q\ncqzX68k79+dQjflcHq5uFfui1qg3YD57aR956C/pozro9Xry+HPhszzsCUi+EK475IleiBqyZs0a\nxk0YR7t/RFOQVcDvn+wjYVNCyeYb2dnZtOvcDs+uHvi2rcdv7+9h2uRHefLx8m/zt3v3bvr0703b\nv7VB4+LE7nd+YeXylXTr1q26Lguz2UzHtm1xO3kS/4ICfjMYmPz3v/Piyy9XW5/CToZuhKiDtm7d\nyleLv8LV1ZUH73+QZs2alTqfkZHBO3Pe4fSZ0/Tv05877rijwn3s3buXTz77BJvNxsR7JtKuXbuq\n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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(iris_data.data[:,2], iris_data.data[:,3], c=iris_data.target);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "É possível perceber que existe uma organização nos dados e que nosso classificador deverá funcionar muito bem. Existe um grupo azul no canto inferior esquerdo, os verdes estão no centro, e o grupo marrom está mais afastado para o canto superior direito." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Para avaliarmos a nossa implementação do KNN, vamos usar validação cruzada dos dados. 30% dos dados carregados serão usados para teste e 70% para treinamento.\n", "\n", "No exemplo abaixo, data_train são os dados de treinamento, target_train são os rótulos para os dados de treinamento, data_test são os dados de teste e target_test são os rótulos para os dados de teste." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn import cross_validation\n", "\n", "data_train, data_test, target_train, target_test = \\\n", "cross_validation.train_test_split(iris_data.data, iris_data.target, test_size=0.3, random_state=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vejamos quantos exemplos tem cada conjunto de dados:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(105, 45)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(data_train), len(data_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No KNN, para cada exemplo no conjunto de testes, nós vamos calcular a distância para todos os exemplos do conjunto de treinamento. Em seguida, atribuiremos como rótulo do exemplo de teste o rótulo da maioria dos K exemplos mais próximos a ele.\n", "\n", "De forma mais concreta, supondo um exemplo de teste X e três exemplos de treinamento: Y1 com rótulo 0, Y2 também com rótulo 0 e Y3 com rótulo 1, que são os três exemplos mais próximos de X, e que K=3. Dessa forma, a classificação do ponto X será 0, pois dos 3 exemplos mais próximos (já que K=3), dois possuem rótulo 0 e apenas um possui rótulo 1.\n", "\n", "Vamos agora classificar a primeira linha dos dados de teste (data_test)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "row = data_test[0]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 5.8, 2.8, 5.1, 2.4])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "row" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Precisamos calcular a distância desse ponto para todos os outros dos dados de treinamento" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from scipy.spatial.distance import euclidean\n", "\n", "# para cada ponto em data_train (x), calcule a sua distância euclidiana para o ponto de teste (row)\n", "distances = np.fromiter((euclidean(row, x) for x in data_train), np.float)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2.40831892, 1.02469508, 1.19582607, 1.1045361 , 1.32287566,\n", " 1.80554701, 2.15870331, 1.14017543, 1.90525589, 0.81240384,\n", " 1.02956301, 1.32287566, 0.77459667, 1.66132477, 0.83666003,\n", " 1.18321596, 4.26380112, 0.50990195, 1.43874946, 1.8734994 ,\n", " 1.61245155, 1.17473401, 1.81383571, 4.34281015, 4.85592422,\n", " 0.81240384, 1.51657509, 4.11339276, 4.41927596, 1.46628783,\n", " 4.39658959, 0.64031242, 2.5845696 , 4.4609416 , 1.3 ,\n", " 1.9 , 1.42828569, 4.47437146, 1.56843871, 1.3190906 ,\n", " 1.02956301, 0.83666003, 4.31045241, 4.29534632, 0.9 ,\n", " 1.22882057, 4.55960525, 0.78740079, 4.40227214, 0.51961524,\n", " 1.21655251, 4.6260134 , 4.45084262, 1.7691806 , 4.36806593,\n", " 4.61302504, 4.11460812, 1.66132477, 1.3453624 , 2.37065392,\n", " 4.41701257, 4.3760713 , 4.38748219, 1.25698051, 1.47309199,\n", " 4.56618002, 3.98873414, 1.48996644, 4.18090899, 2.62678511,\n", " 2.48394847, 2.69443872, 1.54596248, 4.50555213, 0.72801099,\n", " 4.63573079, 2.51594913, 4.34281015, 4.29651021, 1.95192213,\n", " 4.40681291, 0.92736185, 1.48996644, 1.7 , 2.13775583,\n", " 0.75498344, 0.93273791, 1.09087121, 1.161895 , 4.21544778,\n", " 2.04205779, 1.07238053, 0.50990195, 4.31856458, 1.4525839 ,\n", " 1.5132746 , 0.78740079, 1.4832397 , 4.45645599, 4.27317212,\n", " 4.3760713 , 0.93273791, 1.72336879, 2.68514432, 4.48664685])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "distances" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Em seguida vamos descobrir em quais índices estão os menores elementos." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "rank = distances.argsort()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 92, 17, 49, 31, 74, 85, 12, 96, 47, 9, 25, 14, 41,\n", " 44, 81, 101, 86, 1, 10, 40, 91, 87, 3, 7, 88, 21,\n", " 15, 2, 50, 45, 63, 34, 39, 11, 4, 58, 36, 18, 94,\n", " 29, 64, 97, 82, 67, 95, 26, 72, 38, 20, 57, 13, 83,\n", " 102, 53, 5, 22, 19, 35, 8, 79, 90, 84, 6, 59, 0,\n", " 70, 76, 32, 69, 103, 71, 66, 27, 56, 68, 89, 16, 99,\n", " 43, 78, 42, 93, 23, 77, 54, 100, 61, 62, 30, 48, 80,\n", " 60, 28, 52, 98, 33, 37, 104, 73, 46, 65, 55, 51, 75, 24])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rank" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nesse caso, a posição 92 do array distances tem o menor elemento, a posiçao 17 tem o segundo menor elemento e assim por diante. \n", "\n", "Com isso podemos concluir que o ponto da linha 92 nos dados de treinamento é o ponto mais próximo do ponto de teste." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vamos usar K=5 e pegar as 5 menores distâncias:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "K=5\n", "closer = rank[:K]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([92, 17, 49, 31, 74])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "closer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como cada distância do array distances corresponde a uma flor nos dados de treinamento (data_train). E, cada linha de data_train tem o seu rótulo em target_train. Se acessarmos a posição 92 de target_train, estaremos acessando o rótulo do ponto de menor distância para a linha de teste que estamos usando." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "closer_labels = target_train.take(closer)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2, 2, 2, 2, 2])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "closer_labels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos perceber facilmente que o exemplo de teste será rotulado como 2, já que todos os pontos mais próximos também são do tipo 2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vamos verificar se nossa resposta está correta." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_test[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Acertou :)" ] } ], "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.7.2" } }, "nbformat": 4, "nbformat_minor": 1 }