{"id":782,"date":"2018-11-25T18:38:18","date_gmt":"2018-11-26T00:38:18","guid":{"rendered":"http:\/\/www.jacobsoft.com.mx\/?p=782"},"modified":"2025-02-20T13:37:49","modified_gmt":"2025-02-20T19:37:49","slug":"k-nearest-neighbors","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/k-nearest-neighbors\/","title":{"rendered":"K-Nearest Neighbors"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">K-Vecinos m\u00e1s cercanos (KNN)<\/h2>\n\n\n\n<p>KNN es un m\u00e9todo de <strong>clasificaci\u00f3n supervisada<\/strong> que sirve para estimar la funci\u00f3n de densidad:<\/p>\n\n\n\n<p><strong>f(x\/Cj)<\/strong><\/p>\n\n\n\n<p>Don de <strong>x<\/strong> es la variable independiente y <strong>Cj<\/strong> la clase j, por lo que la funci\u00f3n determina la probabilidad a posteriori de que la variable x pertenezca a la clase j.<\/p>\n\n\n\n<p>En el <strong><a rel=\"noreferrer noopener\" aria-label=\"En el reconocimiento de patrones, el algoritmo KNN es utilizado como m\u00e9todo de clasificaci\u00f3n de objetos con un entrenamiento a trav\u00e9s de ejemplos cercanos en el espacio de diversos elementos. Cada elemento esta descrito en t\u00e9rminos de p atributos considerando q clases para la clasificaci\u00f3n. (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.462&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\">reconocimiento de patrones<\/a><\/strong>, el algoritmo KNN es utilizado como m\u00e9todo de clasificaci\u00f3n de objetos con un <strong>entrenamiento <\/strong>a trav\u00e9s de ejemplos cercanos en el espacio de diversos elementos. Cada elemento esta descrito en t\u00e9rminos de <strong>p<\/strong> atributos considerando <strong>q<\/strong> clases para la clasificaci\u00f3n.<\/p>\n\n\n\n<p><strong>Ch\u00e9calo en video aqu\u00ed:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Los K Vecinos m\u00e1s Cercanos | K Nearest Neighbors | KNN Algoritmo con Python\" width=\"780\" height=\"439\" src=\"https:\/\/www.youtube.com\/embed\/RBw3hRJmX7I?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>El espacio de los valores de la variable independiente es <strong>particionado <\/strong>en regiones por localizaciones y etiquetas de los elementos de <strong>entrenamiento<\/strong>. De esta forma un punto en el espacio es asignado a la clase<strong> C<\/strong>, si \u00e9sta es la clase <strong>m\u00e1s frecuente<\/strong> entre los <strong>k<\/strong> elementos m\u00e1s cercanos.<\/p>\n\n\n\n<p>Para determinar la cercan\u00eda de los elementos se utiliza com\u00fanmente la distancia euclidiana:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"309\" height=\"122\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/distancia_euclidiana.png\" alt=\"\" class=\"wp-image-784\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/distancia_euclidiana.png 309w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/distancia_euclidiana-300x118.png 300w\" sizes=\"auto, (max-width: 309px) 100vw, 309px\" \/><figcaption>Ecuaci\u00f3n de la distancia euclidiana<\/figcaption><\/figure><\/div>\n\n\n\n<p>La fase de <strong>entrenamiento <\/strong>consiste en almacenar los vectores caracter\u00edsticos y las etiquetas de las clases de dichos elementos de entrenamiento.<\/p>\n\n\n\n<p>En la fase de <strong>clasificaci\u00f3n <\/strong>se calcula la distancia entre los vectores almacenados y el nuevo vector y se seleccionan los <strong>k<\/strong> elementos m\u00e1s cercanos.<\/p>\n\n\n\n<p>El <strong>nuevo vector<\/strong> es clasificado con la clase que m\u00e1s se repite en los vectores seleccionados.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-2380084220870127\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2380084220870127\"\n     data-ad-slot=\"2437322509\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"543\" height=\"474\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn1.png\" alt=\"\" class=\"wp-image-785\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn1.png 543w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn1-300x262.png 300w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><figcaption>Conjunto de datos clasificados en dos categor\u00edas<\/figcaption><\/figure><\/div>\n\n\n\n<p>Considerando un conjunto de datos clasificados en <strong>dos categor\u00edas<\/strong>, como se muestra en la gr\u00e1fica anterior, se requiere clasificar un nuevo vector de datos que se encuentra en la regi\u00f3n mostrada en la siguiente gr\u00e1fica.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"521\" height=\"474\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn2.png\" alt=\"\" class=\"wp-image-786\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn2.png 521w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn2-300x273.png 300w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><figcaption>Clasificaci\u00f3n de un nuevo vector de datos<\/figcaption><\/figure><\/div>\n\n\n\n<p>El algoritmo KNN sigue los siguientes pasos para determinar a que categor\u00eda pertenece el nuevo dato que se desea clasificar:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Paso 1<\/strong>: Selecciona el n\u00famero de K vecinos<\/li><li><strong>Paso 2<\/strong>: Toma los K vecinos m\u00e1s cercanos al nuevo elemento de acuerdo con la distancia euclidiana<\/li><li><strong>Paso 3<\/strong>: Entre los K vecinos, contar el n\u00famero de elementos que pertenece a cada categor\u00eda<\/li><li><strong>Paso 4<\/strong>: Asignar el nuevo elemento a la categor\u00eda donde se contaron m\u00e1s vecinos<\/li><\/ul>\n\n\n\n<p>Tomando para el ejemplo que K = 5, marcamos los 5 vecinos m\u00e1s cercanos al nuevo elemento<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"757\" height=\"474\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn3.png\" alt=\"\" class=\"wp-image-788\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn3.png 757w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn3-300x188.png 300w\" sizes=\"auto, (max-width: 757px) 100vw, 757px\" \/><figcaption>Selecci\u00f3n de los K=5 vecinos m\u00e1s cercanos al nuevo elemento<\/figcaption><\/figure><\/div>\n\n\n\n<p>Contamos que existen 3 elementos de la categor\u00eda 1 y dos elementos de la categor\u00eda 2 de entre los 5 vecinos m\u00e1s cercanos<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"858\" height=\"416\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn4.png\" alt=\"\" class=\"wp-image-789\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn4.png 858w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn4-300x145.png 300w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn4-768x372.png 768w\" sizes=\"auto, (max-width: 858px) 100vw, 858px\" \/><figcaption>3 elementos de la categor\u00eda 1 y 2 elementos de la categor\u00eda 2<\/figcaption><\/figure><\/div>\n\n\n\n<p>Por lo tanto, la categor\u00eda con m\u00e1s elementos contados es la categor\u00eda 1, por lo que el nuevo elemento se asigna a la <strong>categor\u00eda 1<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"858\" height=\"422\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn5.png\" alt=\"\" class=\"wp-image-790\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn5.png 858w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn5-300x148.png 300w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn5-768x378.png 768w\" sizes=\"auto, (max-width: 858px) 100vw, 858px\" \/><figcaption>El nuevo elemento se asign\u00f3 a la categor\u00eda 1, dado que para K = 5 existen m\u00e1s vecinos de dicha categor\u00eda<\/figcaption><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-2380084220870127\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2380084220870127\"\n     data-ad-slot=\"2437322509\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">KNN con Python<\/h2>\n\n\n\n<p>Para el ejemplo con <strong><a rel=\"noreferrer noopener\" aria-label=\"Para el ejemplo con Python utilizaremos un conjunto de datos (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000502&amp;type=3&amp;subid=0\" target=\"_blank\">Python <\/a><\/strong>utilizaremos un conjunto de datos con registros de clientes que compraron y no compraron. Por lo que tenemos dos categor\u00edas: Compr\u00f3 = 1 y No Compro = 0.<\/p>\n\n\n\n<p>La variable independiente esta compuesta por datos sobre el g\u00e9nero, la edad y el salario estimado del cliente, sin embargo para el ejemplo gr\u00e1fico utilizaremos s\u00f3lo la edad y el salario estimado como variables independientes:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"679\" height=\"538\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn6.png\" alt=\"\" class=\"wp-image-794\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn6.png 679w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn6-300x238.png 300w\" sizes=\"auto, (max-width: 679px) 100vw, 679px\" \/><figcaption>Conjunto de datos para el ejemplo con python<\/figcaption><\/figure><\/div>\n\n\n\n<p>El primer paso es cargar las librer\u00edas necesarias para el modelo de machine learning y cargar el archivo de datos separando las variables independiente en X y la variable dependiente en Y<\/p>\n\n\n\n\n<pre><span class=\"com\">\n# K-Nearest Neighbors (K-NN)\n\n# Importar librerias\n<\/span>\n<span class=\"key\">import<\/span> numpy <span class=\"key\">as<\/span> np\n<span class=\"key\">import<\/span> matplotlib.pyplot <span class=\"key\">as<\/span> plt\n<span class=\"key\">import<\/span> pandas <span class=\"key\">as<\/span> pd\n\n<span class=\"com\"># Importar el dataset<\/span>\ndataset = pd.read_csv('<span class=\"tex\">Social_Network_Ads.csv<\/span>')\nX = dataset.iloc[:, [<span class=\"key\">2<\/span>, <span class=\"key\">3<\/span>]].values\ny = dataset.iloc[:, <span class=\"key\">4<\/span>].values\n<\/pre>\n\n\n\n<p>Al ejecutar el c\u00f3digo anterior tenemos para la variable X y Y lo siguiente:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"723\" height=\"541\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn7.png\" alt=\"\" class=\"wp-image-795\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn7.png 723w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn7-300x224.png 300w\" sizes=\"auto, (max-width: 723px) 100vw, 723px\" \/><figcaption>Variable independiente X con edad y salario, variable dependiente Y (compro 1, no compro 0)<\/figcaption><\/figure><\/div>\n\n\n\n<p>Ahora separamos los datos en con sub conjuntos, entrenamiento y prueba, dejando el 25% de los registros para prueba y el 75% para entrenamiento, posteriormente ajustamos las escalas.<\/p>\n\n\n\n\n<pre><span class=\"com\"># Creamos el conjunto de entrenamiento y \n# lo separamos del conjunto de prueba<\/span>\n<span class=\"key\">from<\/span> sklearn.model_selection <span class=\"key\">import<\/span> train_test_split\nX_train, X_test, y_train, y_test = train_test_split(X, y, \n                                                    test_size = <span class=\"key\">0.25<\/span>, \n                                                    random_state = <span class=\"key\">0<\/span>)\n\n<span class=\"com\"># Ajuste de escalas<\/span>\n<span class=\"key\">from<\/span> sklearn.preprocessing <span class=\"key\">import<\/span> StandardScaler\nsc = StandardScaler()\nX_train = sc.fit_transform(X_train)\nX_test = sc.transform(X_test)\n\n<\/pre>\n\n\n\n<p>Despu\u00e9s de ajustar las escalas tenemos para X_train y X_test lo siguiente:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"543\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn8.png\" alt=\"\" class=\"wp-image-796\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn8.png 735w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn8-300x222.png 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><figcaption>Conjunto de entrenamiento y conjunto de prueba con ajuste de escalas<\/figcaption><\/figure><\/div>\n\n\n\n<p>Ahora entrenamos el modelo y predecimos el conjunto X_test. El modelo para el algoritmo <strong>KNN <\/strong>lo obtenemos de la clase <strong>KNeighborsClassifier <\/strong>de la librer\u00eda <strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000502&amp;type=3&amp;subid=0\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Ahora entrenamos el modelo y predecimos el conjunto X_test. El modelo para el algoritmo KNN lo obtenemos de la clase KNeighborsClassifier de la librer\u00eda sklearn (opens in a new tab)\">sklearn<\/a><\/strong><\/p>\n\n\n\n\n<pre><span class=\"com\"># Entrenamiento del modelo KNN<\/span>\n<span class=\"key\">from<\/span> sklearn.neighbors <span class=\"key\">import<\/span> KNeighborsClassifier\nclassifier = KNeighborsClassifier(n_neighbors = <span class=\"key\">5<\/span>, metric = 'minkowski', p = <span class=\"key\">2<\/span>)\nclassifier.fit(X_train, y_train)\n\n<span class=\"com\"># Predicci\u00f3n del conjunto de prueba<\/span>\ny_pred = classifier.predict(X_test)\n\n<span class=\"com\"># Matriz de confusion<\/span>\n<span class=\"key\">from<\/span> sklearn.metrics <span class=\"key\">import<\/span> confusion_matrix\ncm = confusion_matrix(y_test, y_pred)\n<\/pre>\n\n\n\n<p>Con la m\u00e9trica <strong>minkowski<\/strong> y <strong>p = 2<\/strong> en los argumentos del constructor de la clase <strong>KNeighborsClassifier <\/strong>le estamos indicando que use la <strong>distancia euclidiana<\/strong> como m\u00e9todo para encontrar los vecinos m\u00e1s cercanos.<\/p>\n\n\n\n<p>Con la predicci\u00f3n del conjunto de prueba <strong>X_test<\/strong> nos presenta el resultado el <strong>y_pred<\/strong> y creamos la matriz de confusi\u00f3n <strong>cm<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"416\" height=\"338\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn9.png\" alt=\"\" class=\"wp-image-797\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn9.png 416w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn9-300x244.png 300w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><figcaption>Matriz de confusi\u00f3n para el conjunto de prueba y la predicci\u00f3n<\/figcaption><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-2380084220870127\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2380084220870127\"\n     data-ad-slot=\"2437322509\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<p>Observamos que de 100 registros del conjunto de prueba, hubo 4 falsos negativos y 3 falsos positivos que dan 7 errores, lo cual representa un <strong>93% de precisi\u00f3n<\/strong> del modelo de clasificaci\u00f3n para los K-vecimos m\u00e1s cercanos.<\/p>\n\n\n\n<p>Si graficamos la predicci\u00f3n del conjunto de prueba obtenemos lo siguiente:<\/p>\n\n\n\n\n<pre><span class=\"com\"># Visualizacion de los datos de prueba<\/span>\n<span class=\"key\">from<\/span> matplotlib.colors <span class=\"key\">import<\/span> ListedColormap\nX_set, y_set = X_test, y_test\nX1, X2 = np.meshgrid(np.arange(start = X_set[:, <span class=\"key\">0<\/span>].min() - <span class=\"key\">1<\/span>, stop = X_set[:, <span class=\"key\">0<\/span>].max() + <span class=\"key\">1<\/span>, step = <span class=\"key\">0.01<\/span>),\n                     np.arange(start = X_set[:, <span class=\"key\">1<\/span>].min() - <span class=\"key\">1<\/span>, stop = X_set[:, <span class=\"key\">1<\/span>].max() + <span class=\"key\">1<\/span>, step = <span class=\"key\">0.01<\/span>))\nplt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),\n             alpha = <span class=\"key\">0.75<\/span>, cmap = ListedColormap(('<span class=\"tex\">red<\/span>', '<span class=\"tex\">green<\/span>')))\nplt.xlim(X1.min(), X1.max())\nplt.ylim(X2.min(), X2.max())\nfor i, j in enumerate(np.unique(y_set)):\n    plt.scatter(X_set[y_set == j, <span class=\"key\">0<\/span>], X_set[y_set == j, <span class=\"key\">1<\/span>],\n                c = ListedColormap(('<span class=\"tex\">red<\/span>', '<span class=\"tex\">green<\/span>'))(i), label = j)\nplt.title('<span class=\"tex\">K-NN (Prueba)<\/span>')\nplt.xlabel('<span class=\"tex\">Edad<\/span>')\nplt.ylabel('<span class=\"tex\">Salario Estimado<\/span>')\nplt.legend()\nplt.show()\n\n<\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"474\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn10.png\" alt=\"\" class=\"wp-image-798\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn10.png 533w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn10-300x267.png 300w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><figcaption>Gr\u00e1fica de la predicci\u00f3n del conjunto de pruebas<\/figcaption><\/figure><\/div>\n\n\n\n<p>En la gr\u00e1fica podemos observar los 4 puntos rojos sobre el \u00e1rea verde y los 3 puntos verdes sobre el \u00e1rea roja que representan tanto los falsos negativos como los falsos positivos respectivamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comentarios finales<\/h3>\n\n\n\n<p>Para el manejo de python, este <strong><a rel=\"noreferrer noopener\" aria-label=\"Para el manejo de python, este curso podr\u00eda ser el indicado para iniciar con python. Adicionalmente&nbsp; (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000502&amp;type=3&amp;subid=0\" target=\"_blank\">curso podr\u00eda ser el indicado<\/a><\/strong> para iniciar con python. Adicionalmente, si te interesa ejecutar estos modelos en la <strong><a rel=\"noreferrer noopener\" aria-label=\"Para el manejo de python, este curso podr\u00eda ser el indicado para iniciar con python. Adicionalmente, si te interesa ejecutar estos modelos en la nube,&nbsp;&nbsp; (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000384&amp;type=3&amp;subid=0\" target=\"_blank\">nube<\/a><\/strong>,&nbsp; este webinar gratuito de <strong><a rel=\"noreferrer noopener\" aria-label=\"Para el manejo de python, este curso podr\u00eda ser el indicado para iniciar con python. Adicionalmente, si te interesa ejecutar estos modelos en la nube,&nbsp; este webinar gratuito de Azure te podr\u00e1 servir para conocer&nbsp; (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.462&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\">Azure <\/a><\/strong>te podr\u00e1 servir para conocer los detalles de operaci\u00f3n de dicha plataforma, que al igual que <strong><a rel=\"noreferrer noopener\" aria-label=\"Para el manejo de python, este curso podr\u00eda ser el indicado para iniciar con python. Adicionalmente, si te interesa ejecutar estos modelos en la nube,&nbsp; este webinar gratuito de Azure te podr\u00e1 servir para conocer los detalles de operaci\u00f3n de dicha plataforma, que al igual que Amazon Web Service son&nbsp; (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.373&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\">Amazon Web Service<\/a><\/strong> son esquemas de procesamiento y servicios en la nube para <strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.372&amp;type=3&amp;subid=0&amp;LSNSUBSITE=LSNSUBSITE\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Para el manejo de python, este curso podr\u00eda ser el indicado para iniciar con python. Adicionalmente, si te interesa ejecutar estos modelos en la nube,&nbsp; este webinar gratuito de Azure te podr\u00e1 servir para conocer los detalles de operaci\u00f3n de dicha plataforma, que al igual que Amazon Web Service son esquemas de procesamiento y servicios en la nube para machine learning y otras soluciones. (opens in a new tab)\">machine learning<\/a><\/strong> y otras soluciones.<\/p>\n\n\n\n<p>Por \u00faltimo, para el manejo de bases de datos podemos iniciar con estos <strong><a rel=\"noreferrer noopener\" aria-label=\"Por \u00faltimo, para el manejo de bases de datos podemos iniciar con estos cursos tanto de dise\u00f1o como de pr\u00e1ctica de SQL. (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000671&amp;type=3&amp;subid=0\" target=\"_blank\">cursos <\/a><\/strong>tanto de <strong><a rel=\"noreferrer noopener\" aria-label=\"Por \u00faltimo, para el manejo de bases de datos podemos iniciar con estos cursos tanto de dise\u00f1o como de pr\u00e1ctica de SQL. (opens in a new tab)\" href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000671&amp;type=3&amp;subid=0\" target=\"_blank\">dise\u00f1o <\/a><\/strong>como de <strong><a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=347188.10000506&amp;type=3&amp;subid=0\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Por \u00faltimo, para el manejo de bases de datos podemos iniciar con estos cursos tanto de dise\u00f1o como de pr\u00e1ctica de SQL. (opens in a new tab)\">pr\u00e1ctica de SQL<\/a><\/strong>.<\/p>\n\n\n\n<a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=579862.40&amp;subid=0&amp;type=4&amp;LSNSUBSITE=LSNSUBSITE\"><img decoding=\"async\" border=\"0\" alt=\"QuickStart\" src=\"https:\/\/ad.linksynergy.com\/fs-bin\/show?id=cTjR400Zjac&amp;bids=579862.40&amp;subid=0&amp;type=4&amp;gridnum=16\" data-lazy-src=\"https:\/\/ad.linksynergy.com\/fs-bin\/show?id=cTjR400Zjac&amp;is-pending-load=1#038;bids=579862.40&amp;subid=0&amp;type=4&amp;gridnum=16\" srcset=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" class=\" jetpack-lazy-image\"><noscript><img decoding=\"async\" border=\"0\" alt=\"QuickStart\" src=\"https:\/\/ad.linksynergy.com\/fs-bin\/show?id=cTjR400Zjac&amp;bids=579862.40&amp;subid=0&amp;type=4&amp;gridnum=16\"><\/noscript><\/a>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<a href=\"https:\/\/click.linksynergy.com\/fs-bin\/click?id=cTjR400Zjac&amp;offerid=584883.11&amp;subid=0&amp;type=4\"><img decoding=\"async\" border=\"0\" alt=\"Alibaba Cloud\" src=\"https:\/\/ad.linksynergy.com\/fs-bin\/show?id=cTjR400Zjac&amp;bids=584883.11&amp;subid=0&amp;type=4&amp;gridnum=16\" data-lazy-src=\"https:\/\/ad.linksynergy.com\/fs-bin\/show?id=cTjR400Zjac&amp;is-pending-load=1#038;bids=584883.11&amp;subid=0&amp;type=4&amp;gridnum=16\" srcset=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" class=\" jetpack-lazy-image\"><noscript><img decoding=\"async\" border=\"0\" alt=\"Alibaba Cloud\" src=\"https:\/\/ad.linksynergy.com\/fs-bin\/show?id=cTjR400Zjac&amp;bids=584883.11&amp;subid=0&amp;type=4&amp;gridnum=16\"><\/noscript><\/a>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<style class=\"advgb-styles-renderer\">\n.com{color:gray;}\n.key{color:blue;}\n.tex{color:green;}\n\n.com{color:gray;}\n.key{color:blue;}\n.tex{color:green;}\n\n.com{color:gray;}\n.key{color:blue;}\n.tex{color:green;}\n\n.com{color:gray;}\n.key{color:blue;}\n.tex{color:green;}\n<\/style>","protected":false},"excerpt":{"rendered":"<p>K-Vecinos m\u00e1s cercanos (KNN) KNN es un m\u00e9todo de clasificaci\u00f3n supervisada que sirve para estimar &hellip; <\/p>\n","protected":false},"author":2,"featured_media":783,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[25,35,46],"tags":[57,55,58,56,82,96,50,59],"class_list":["post-782","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algoritmos","category-inteligencia-artificial","category-machine-learning","tag-ciencia-de-datos","tag-clasificacion","tag-data-mining","tag-data-science","tag-inteligencia-artificial","tag-knn","tag-machine-learning","tag-mineria-de-datos"],"aioseo_notices":[],"author_meta":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"featured_img":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn-300x165.png","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn.png","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/11\/knn.png","author_info":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/algoritmos\/\" class=\"advgb-post-tax-term\">Algoritmos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/\" class=\"advgb-post-tax-term\">Inteligencia Artificial<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Machine Learning<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Algoritmos<\/span>","<span class=\"advgb-post-tax-term\">Inteligencia Artificial<\/span>","<span class=\"advgb-post-tax-term\">Machine Learning<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Ciencia de Datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">clasificaci\u00f3n<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Data Mining<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Data Science<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Inteligencia Artificial<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">knn<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">machine learning<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Miner\u00eda de Datos<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Ciencia de Datos<\/span>","<span class=\"advgb-post-tax-term\">clasificaci\u00f3n<\/span>","<span class=\"advgb-post-tax-term\">Data Mining<\/span>","<span class=\"advgb-post-tax-term\">Data Science<\/span>","<span class=\"advgb-post-tax-term\">Inteligencia Artificial<\/span>","<span class=\"advgb-post-tax-term\">knn<\/span>","<span class=\"advgb-post-tax-term\">machine learning<\/span>","<span class=\"advgb-post-tax-term\">Miner\u00eda de Datos<\/span>"]}},"comment_count":"10","relative_dates":{"created":"Publicado 7 a\u00f1os hace","modified":"Actualizado 1 a\u00f1o hace"},"absolute_dates":{"created":"Publicado el noviembre 25, 2018","modified":"Actualizado el febrero 20, 2025"},"absolute_dates_time":{"created":"Publicado el noviembre 25, 2018 6:38 pm","modified":"Actualizado el febrero 20, 2025 1:37 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/comments?post=782"}],"version-history":[{"count":10,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/782\/revisions"}],"predecessor-version":[{"id":1797,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/782\/revisions\/1797"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media\/783"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media?parent=782"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/categories?post=782"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/tags?post=782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}