{"id":544,"date":"2018-10-21T22:59:42","date_gmt":"2018-10-22T04:59:42","guid":{"rendered":"http:\/\/www.jacobsoft.com.mx\/?p=544"},"modified":"2025-02-20T13:37:50","modified_gmt":"2025-02-20T19:37:50","slug":"clustering-jerarquico-con-python","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/clustering-jerarquico-con-python\/","title":{"rendered":"Clustering Jer\u00e1rquico con Python"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Clustering Jer\u00e1rquico con Python<\/h2>\n\n\n\n<p>Como su nombre lo indica, el clustering Jer\u00e1rquico construye una jerarqu\u00eda de clusters para realizar el an\u00e1lisis y existen dos categor\u00edas para este tipo de clustering:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Aglomerante<\/li><li>Divisivo<\/li><\/ul>\n\n\n\n<p>Para representar los resultados de la jerarqu\u00eda de grupos se usa el dendograma que muestra las jerarqu\u00edas de acuerdo a las distancias que existen entre los elementos del conjunto de datos, las cuales se pueden representar en una matriz de distancias.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"617\" height=\"268\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma.png\" alt=\"\" class=\"wp-image-596\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma.png 617w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma-300x130.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><figcaption>Dendograma<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Clustering Jer\u00e1rquico Aglomerante<\/h3>\n\n\n\n<p>Es una aproximaci\u00f3n de abajo hacia arriba (bottom-up) donde se dividen los clusters en subclusters y as\u00ed sucesivamente. Iniciando asignando cada muestra simple a un cluster y en cada iteraci\u00f3n sucesiva va aglomerando (mezclando) el par de closters m\u00e1s cercanos satisfaciendo alg\u00fan criterio de similaridad, hasta que todos los elementos pertenecen a un solo cluster. Los clusters generados en los primeros pasos son anidados con los clusters generados en los siguientes pasos.<\/p>\n\n\n\n<p>El proceso de cluster aglomerante es el siguiente:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Primero asigna cada elemento a un cluster<\/li><li>Despu\u00e9s encuentra la matriz de distancias<\/li><li>Encuentra 2 clusters que tengan la distancia m\u00e1s corta y los mezcla<\/li><li>Continua este proceso hasta que se forma un solo cluster grande<\/li><\/ul>\n\n\n\n<p>El siguiente diagrama muestra el proceso aglomerante<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"643\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Aglomerativo.png\" alt=\"\" class=\"wp-image-593\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Aglomerativo.png 926w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Aglomerativo-300x208.png 300w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Aglomerativo-768x533.png 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/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<h3 class=\"wp-block-heading\">Clustering Jer\u00e1rquico Divisivo<\/h3>\n\n\n\n<p>Este tipo de clustering se lleva a cabo con un enfoque de arriba hacia abajo (top-down), Se inicia con todos los elementos asignado a un solo cluster y sigue el algoritmo hasta que cada elemento es un cluster individual.<\/p>\n\n\n\n<p>A diferencia del enfoque de abajo hacia arriba donde las decisiones para generar los clusters se basan en lo patrones locales sin tomar en cuenta la distribuci\u00f3n global, el enfoque de arriba hacia abajo se beneficia de la informaci\u00f3n completa sobre la distribuci\u00f3n global al ir haciendo las particiones.<\/p>\n\n\n\n<p>El siguiente diagrama muestra el proceso divisivo<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"511\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Divisivo.png\" alt=\"\" class=\"wp-image-594\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Divisivo.png 771w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Divisivo-300x199.png 300w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/Divisivo-768x509.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure><\/div>\n\n\n\n<p>Para ambos casos, la medida de distancia que se utiliza para generar los clusters es com\u00fanmente la distancia euclidiana. Se puede seleccionar otro m\u00e9todo de acuerdo la relevancia del problema, pero, generalmente la distancia euclidiana es la m\u00e1s eficiente si no existen restricciones en el modelo.<\/p>\n\n\n\n<p>Tambi\u00e9n puedes ver el tema en video. Ingresa tambi\u00e9n a Youtube y suscribete al canal<\/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=\"Clustering Jerarquico\" width=\"780\" height=\"439\" src=\"https:\/\/www.youtube.com\/embed\/g6vqPe3bl98?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 class=\"has-text-align-center\"><strong>Clustering Jer\u00e1rquico en Video<\/strong><\/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<h2 class=\"wp-block-heading\">Implementaci\u00f3n del enfoque Aglomerante con Python<\/h2>\n\n\n\n<p>Como se mencion\u00f3 anteriormente, el enfoque aglomerante es un enfoque de abajo hacia arriba (bottom-up) en donde inicialmente cada elemento es considerado un cluster, posteriormente se toman los dos puntos m\u00e1s cercanos y se forma un cluster de dos elementos, a partir de ah\u00ed se localizan los clusters m\u00e1s cercanos para formar un nuevo cluster y as\u00ed sucesivamente, hasta que todos los elementos pertenece a un solo cluster. Con ello creamos el dendograma para decidir cuantos cluster tendr\u00e1 la muestra de datos.<\/p>\n\n\n\n<p>Para este ejemplo con python, utilizaremos una muestra de 200 datos de una tienda que ha calificado a sus clientes con una puntuaci\u00f3n que va de 1 a 100 de acuerdo a su frecuencia de compra y otras condiciones que ha utilizado dicha tienda para calificar a sus clientes con esa puntuaci\u00f3n. En el conjunto de datos tenemos informaci\u00f3n sobre el g\u00e9nero, la edad y el ingreso anual en miles del cliente. Sin embargo, para poder graficar los resultados s\u00f3lo utilizaremos el ingreso anual y la puntuaci\u00f3n para generar los grupos de clientes que existen en esta muestra y analizar dicho resultado con el enfoque aglomerante.<\/p>\n\n\n\n<p>Puedes descargar el archivo de datos para el ejercicio siguiente en este enlace: <strong><a href=\"https:\/\/drive.google.com\/file\/d\/1d0P1elh1B3lX9g3tE981ZWpZLRl9zAt_\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">Clientes_Tienda.csv<\/a><\/strong><\/p>\n\n\n\n\n<pre><span class=\"coment\"># Clustering Jer\u00e1rquico\n\n# Importacion de librerias<\/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=\"coment\"># Carga del conjunto de datos<\/span>\ndataset = pd.read_csv('<span class=\"text\">Clientes_Tienda.csv<\/span>')\nX = dataset.iloc[:, [3, 4]].values\n<\/pre>\n\n\n\n<p>Importamos las librer\u00edas y cargamos el conjunto de datos, indicando que la variable que se analizar\u00e1 es una matriz con las columnas 3 y 4 de conjunto de datos, las cuales corresponden al ingreso anual en miles y la puntuaci\u00f3n del cliente.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"548\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/clientes_tienda.png\" alt=\"\" class=\"wp-image-581\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/clientes_tienda.png 700w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/clientes_tienda-300x235.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/figure><\/div>\n\n\n\n<p>La matriz X es la siguiente:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"416\" height=\"538\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/k_means_X.png\" alt=\"\" class=\"wp-image-582\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/k_means_X.png 416w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/k_means_X-232x300.png 232w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/figure><\/div>\n\n\n\n<p>Para crear el dendograma utilizamos la clase sch del paquete scipy.hierarchy<\/p>\n\n\n\n\n<pre><span class=\"coment\"># Creamos el dendograma para encontrar el n\u00famero \u00f3ptimo de clusters\n\n<span class=\"key\">import<\/span> scipy.cluster.hierarchy <span class=\"key\">as<\/span> sch\ndendrogram = sch.dendrogram(sch.linkage(X, method = '<span class=\"text\">ward<\/span>'))\n\nplt.title('<span class=\"text\">Dendograma<\/span>')\nplt.xlabel('<span class=\"text\">Clientes<\/span>')\nplt.ylabel('<span class=\"text\">Distancias Euclidianas<\/span>')\nplt.show()\n<\/pre>\n\n\n\n<p>El ejecutar el bloque anterior obtenemos el diagrama del dendograma<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"656\" height=\"584\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma_generado.png\" alt=\"\" class=\"wp-image-598\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma_generado.png 656w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma_generado-300x267.png 300w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/figure><\/div>\n\n\n\n<p>En el podemos observar que la distancia m\u00e1xima la marca la l\u00ednea azul oscuro que une los clusters rojo y azul claro, por lo que si realizamos el corte en esa zona obtenemos:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"656\" height=\"584\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma_generado_marcado5.png\" alt=\"\" class=\"wp-image-600\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma_generado_marcado5.png 656w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/dendograma_generado_marcado5-300x267.png 300w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/figure><\/div>\n\n\n\n<p>Al marcar con la l\u00ednea color naranja el dendograma donde observamos la distancia m\u00e1xima, nos genera 5 clusters que hemos marcado con n\u00fameros.<\/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<p>Con ello en mente, generamos los grupos con el m\u00e9todo aglomerante utilizando la clase AgglomerativeClustering del paquete sklearn.cluster<\/p>\n\n\n\n\n<pre><span class=\"coment\"># Ajustando Clustering Jer\u00e1rquico al conjunto de datos<\/span>\n<span class=\"key\">from<\/span> sklearn.cluster <span class=\"key\">import<\/span> AgglomerativeClustering\nhc = AgglomerativeClustering(n_clusters = 5, \n                    affinity = '<span class=\"text\">euclidean<\/span>', \n                    linkage = '<span class=\"text\">ward<\/span>')\n\ny_hc = hc.fit_predict(X)\n\n<\/pre>\n\n\n\n<p>En la variable <strong>y_hc<\/strong> se guardan los grupos asignados a cada cliente o rengl\u00f3n del conjunto de datos. En ese vector podemos observar los 5 grupos que van de 0 a 4<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"416\" height=\"538\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/y_hc.png\" alt=\"\" class=\"wp-image-601\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/y_hc.png 416w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/y_hc-232x300.png 232w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/figure><\/div>\n\n\n\n<p>Para poder observar gr\u00e1ficamente la asignaci\u00f3n de los 200 clientes a 5 grupos o clusters realizamos lo siguiente:<\/p>\n\n\n\n\n<pre><span class=\"coment\"># Visualising the clusters<\/span>\nplt.scatter(X[y_hc == 0, 0], X[y_hc == 0, 1], s = 100, c = '<span class=\"text\">red<\/span>', label = '<span class=\"text\">Cluster 1<\/span>')\nplt.scatter(X[y_hc == 1, 0], X[y_hc == 1, 1], s = 100, c = '<span class=\"text\">blue<\/span>', label = '<span class=\"text\">Cluster 2<\/span>')\nplt.scatter(X[y_hc == 2, 0], X[y_hc == 2, 1], s = 100, c = '<span class=\"text\">green<\/span>', label = '<span class=\"text\">Cluster 3<\/span>')\nplt.scatter(X[y_hc == 3, 0], X[y_hc == 3, 1], s = 100, c = '<span class=\"text\">cyan<\/span>', label = '<span class=\"text\">Cluster 4<\/span>')\nplt.scatter(X[y_hc == 4, 0], X[y_hc == 4, 1], s = 100, c = '<span class=\"text\">magenta<\/span>', label = '<span class=\"text\">Cluster 5<\/span>')\nplt.title('<span class=\"text\">Clusters of customers<\/span>')\nplt.xlabel('<span class=\"text\">Annual Income (k$)<\/span>')\nplt.ylabel('<span class=\"text\">Spending Score (1-100)<\/span>')\nplt.legend()\nplt.show()\n\n<\/pre>\n\n\n\n<p>La gr\u00e1fica obtenida es la siguiente:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"656\" height=\"584\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/clusters_hc.png\" alt=\"\" class=\"wp-image-602\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/clusters_hc.png 656w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/clusters_hc-300x267.png 300w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/figure><\/div>\n\n\n\n<p>En relaci\u00f3n al ingreso anual en miles y la puntuaci\u00f3n generada por la tienda, observamos un grupo de clientes que podr\u00eda ser de inter\u00e9s para la tienda. El grupo de clientes en color verde, lo cuales tienen ingresos altos y una puntuaci\u00f3n alta, por lo que podr\u00edan ser un grupo objetivo para ciertas promociones. En purpura tenemos a los clientes de baja puntuaci\u00f3n y bajos ingresos, mientras que en azul claro, a los clientes con ingresos bajos pero con alta puntuaci\u00f3n, lo cual podr\u00eda indicar que estos clientes compran mucho a pesar de los ingresos bajos. Es decir, el an\u00e1lisis cluster permite hacer inferencias y tomar decisiones de negocios.<\/p>\n\n\n\n<p>En el art\u00edculo anterior <a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/k-means-clustering-con-python\/\">k-Means Clustering<\/a> resolvemos el mismo caso pero con el m\u00e9todo k-Means y obtenemos los mismos resultados.<\/p>\n\n\n\n<p>Una de las desventajas del m\u00e9todo jer\u00e1rquico es que no es muy recomendable para problemas con grandes cantidades de datos, debido a que se generar\u00eda un dendograma dif\u00edcil de manipular para seleccionar el n\u00famero \u00f3ptimo de clusters.<\/p>\n<style class=\"advgb-styles-renderer\">\n.coment{color:gray;}\n.key{color:blue;}\n.text{color:green;}\n\n.coment{color:gray;}\n.key{color:blue;}\n.text{color:green;}\n\n.coment{color:gray;}\n.key{color:blue;}\n.text{color:green;}\n\n.coment{color:gray;}\n.key{color:blue;}\n.text{color:green;}\n<\/style>","protected":false},"excerpt":{"rendered":"<p>Clustering Jer\u00e1rquico con Python Como su nombre lo indica, el clustering Jer\u00e1rquico construye una jerarqu\u00eda &hellip; <\/p>\n","protected":false},"author":2,"featured_media":592,"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,85,58,56,87,82,50,59],"class_list":["post-544","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algoritmos","category-inteligencia-artificial","category-machine-learning","tag-ciencia-de-datos","tag-clustering","tag-data-mining","tag-data-science","tag-hierarchical-clustering","tag-inteligencia-artificial","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\/10\/destacada_clustering_jerarq-300x165.png","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/destacada_clustering_jerarq.png","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/destacada_clustering_jerarq.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\">Clustering<\/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\">Hierarchical Clustering<\/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\">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\">Clustering<\/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\">Hierarchical Clustering<\/span>","<span class=\"advgb-post-tax-term\">Inteligencia Artificial<\/span>","<span class=\"advgb-post-tax-term\">machine learning<\/span>","<span class=\"advgb-post-tax-term\">Miner\u00eda de Datos<\/span>"]}},"comment_count":"17","relative_dates":{"created":"Publicado 8 a\u00f1os hace","modified":"Actualizado 1 a\u00f1o hace"},"absolute_dates":{"created":"Publicado el octubre 21, 2018","modified":"Actualizado el febrero 20, 2025"},"absolute_dates_time":{"created":"Publicado el octubre 21, 2018 10:59 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\/544","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=544"}],"version-history":[{"count":7,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/544\/revisions"}],"predecessor-version":[{"id":1800,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/544\/revisions\/1800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media\/592"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media?parent=544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/categories?post=544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/tags?post=544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}