{"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\/en\/clustering-jerarquico-con-python\/","title":{"rendered":"Hierarchical Clustering with Python"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Hierarchical Clustering with Python<\/h2>\n\n\n\n<p>As its name implies, Hierarchical clustering constructs a hierarchy of clusters to perform the analysis and there are two categories for this type of clustering:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Binder<\/li><li>Divisive<\/li><\/ul>\n\n\n\n<p>To represent the results of the group hierarchy, the dendrogram is used, which shows the hierarchies according to the distances that exist between the elements of the data set, which can be represented in a distance matrix.<\/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>Dendogram<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Clustering Hierarchical Binder<\/h3>\n\n\n\n<p>It is a bottom-up approach where the clusters are divided into sub-clusters and so on. Starting by assigning each simple sample to a cluster and in each successive iteration it agglomerates (mixing) the closest pair of closers satisfying some criterion of similarity, until all the elements belong to a single cluster. The clusters generated in the first steps are nested with the clusters generated in the following steps.<\/p>\n\n\n\n<p>The agglomeration cluster process is as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>First assign each element to a cluster<\/li><li>Then find the distance matrix<\/li><li>Find 2 clusters that have the shortest distance and mix them<\/li><li>Continue this process until a single large cluster is formed<\/li><\/ul>\n\n\n\n<p>The following diagram shows the binder process<\/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\">Divisive Hierarchical Clustering<\/h3>\n\n\n\n<p>This type of clustering is carried out with a top-down approach, starts with all the elements assigned to a single cluster and follows the algorithm until each element is an individual cluster.<\/p>\n\n\n\n<p>Unlike the bottom-up approach where the decisions to generate the clusters are based on local patterns without taking into account the global distribution, the top-down approach benefits from complete information about the overall distribution as partitions are made. .<\/p>\n\n\n\n<p>The following diagram shows the divisive process<\/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>For both cases, the distance measure that is used to generate the clusters is commonly the Euclidean distance. Another method can be selected according to the relevance of the problem, but, generally, the Euclidean distance is the most efficient if there are no restrictions in the model.<\/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\">Implementation of the Binder approach with Python<\/h2>\n\n\n\n<p>As mentioned above, the agglomeration approach is a bottom-up approach where initially each element is considered a cluster, then the two closest points are taken and a cluster of two elements is formed, starting from there the closest clusters are located to form a new cluster and so on, until all the elements belong to a single cluster. With this we create the dendogram to decide how many clusters the data sample will have.<\/p>\n\n\n\n<p>For this example with python, we will use a sample of 200 data from a store that has rated its customers with a score ranging from 1 to 100 according to their purchase frequency and other conditions that the store has used to qualify its customers. with that score. In the data set we have information about the gender, age and annual income in thousands of the client. However, to be able to graph the results we will only use the annual income and the score to generate the groups of clients that exist in this sample and analyze that result with the agglomerating approach.<\/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\">Customers_Shop.csv<\/a><\/strong><\/p>\n\n\n\n\n<pre><span class=\"coment\"># Hierarchical Clustering # Import of libraries<\/span>\n<span class=\"key\">import<\/span> numpy <span class=\"key\">ace<\/span> np\n<span class=\"key\">import<\/span> matplotlib.pyplot <span class=\"key\">ace<\/span> plt\n<span class=\"key\">import<\/span> pandas <span class=\"key\">ace<\/span> P.S\n\n<span class=\"coment\"># Loading the data set<\/span>\ndataset = pd.read_csv (&#039;<span class=\"text\">Customers_Shop.csv<\/span>&#039;) X = dataset.iloc [:, [3, 4]]. Values\n<\/pre>\n\n\n\n<p>We import the libraries and load the data set, indicating that the variable to be analyzed is a matrix with columns 3 and 4 of the data set, which correspond to the annual income in thousands and the customer&#039;s score.<\/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>The matrix X is the following:<\/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>To create the dendrogram we use the class sch of the scipy.hierarchy package<\/p>\n\n\n\n\n<pre><span class=\"coment\"># We create the dendrogram to find the optimal number of clusters\n\n<span class=\"key\">import<\/span> scipy.cluster.hierarchy <span class=\"key\">ace<\/span> sch dendrogram = sch.dendrogram (sch.linkage (X, method = &#039;<span class=\"text\">ward<\/span>&#039;)) plt.title (&#039;<span class=\"text\">Dendogram<\/span>&#039;) plt.xlabel (&#039;<span class=\"text\">customers<\/span>&#039;) plt.ylabel (&#039;<span class=\"text\">Euclidean distances<\/span>&#039;) plt.show ()\n<\/pre>\n\n\n\n<p>Executing the previous block we obtain the diagram of the dendrogram<\/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>In it we can see that the maximum distance is marked by the dark blue line that joins the red and light blue clusters, so if we make the cut in that area we obtain:<\/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>By marking the dendogram with the orange line where we observe the maximum distance, it generates 5 clusters that we have marked with numbers.<\/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>With this in mind, we generate the groups with the binder method using the AgglomerativeClustering class of the sklearn.cluster package<\/p>\n\n\n\n\n<pre><span class=\"coment\"># Adjusting Hierarchical Clustering to the data set<\/span>\n<span class=\"key\">desde<\/span> sklearn.cluster <span class=\"key\">import<\/span> AgglomerativeClustering hc = AgglomerativeClustering (n_clusters = 5, affinity = &#039;<span class=\"text\">euclidean<\/span>&#039;, linkage =&#039;<span class=\"text\">ward<\/span>&#039;) y_hc = hc.fit_predict (X)\n\n<\/pre>\n\n\n\n<p>In the variable <strong>y_hc<\/strong> the groups assigned to each client or row of the data set are saved. In this vector we can observe the 5 groups that go from 0 to 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>In order to graphically observe the assignment of the 200 clients to 5 groups or clusters, we perform the following:<\/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 = &#039;<span class=\"text\">net<\/span>&#039;, label =&#039;<span class=\"text\">Cluster 1<\/span>&#039;) plt.scatter (X [y_hc == 1, 0], X [y_hc == 1, 1], s = 100, c =&#039;<span class=\"text\">blue<\/span>&#039;, label =&#039;<span class=\"text\">Cluster 2<\/span>&#039;) plt.scatter (X [y_hc == 2, 0], X [y_hc == 2, 1], s = 100, c =&#039;<span class=\"text\">green<\/span>&#039;, label =&#039;<span class=\"text\">Cluster 3<\/span>&#039;) plt.scatter (X [y_hc == 3, 0], X [y_hc == 3, 1], s = 100, c =&#039;<span class=\"text\">cyan<\/span>&#039;, label =&#039;<span class=\"text\">Cluster 4<\/span>&#039;) plt.scatter (X [y_hc == 4, 0], X [y_hc == 4, 1], s = 100, c =&#039;<span class=\"text\">magenta<\/span>&#039;, label =&#039;<span class=\"text\">Cluster 5<\/span>&#039;) plt.title (&#039;<span class=\"text\">Clusters of customers<\/span>&#039;) plt.xlabel (&#039;<span class=\"text\">Annual Income (k $)<\/span>&#039;) plt.ylabel (&#039;<span class=\"text\">Spending Score (1-100)<\/span>&#039;) plt.legend () plt.show ()\n\n<\/pre>\n\n\n\n<p>The graph obtained is the following:<\/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>In relation to the annual income in thousands and the score generated by the store, we observed a group of customers that could be of interest to the store. The group of clients in green, which have high income and a high score, so they could be a target group for certain promotions. In purple we have low-scoring, low-income clients, while in light blue, we have low-income but high-scoring clients, which may indicate that these customers buy a lot despite low incomes. That is, cluster analysis allows making inferences and making business decisions.<\/p>\n\n\n\n<p>In the previous article <a href=\"https:\/\/www.jacobsoft.com.mx\/en\/k-means-clustering-con-python\/\">k-Means Clustering<\/a> We solve the same case but with the k-Means method and obtain the same results.<\/p>\n\n\n\n<p>One of the disadvantages of the hierarchical method is that it is not highly recommended for problems with large amounts of data, because a dendogram would be difficult to manipulate to select the optimal number of 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>","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\/en\/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\/en\/author\/jacob-avila\/"},"coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/algoritmos\/\" class=\"advgb-post-tax-term\">Algoritmos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/\" class=\"advgb-post-tax-term\">Inteligencia Artificial<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/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\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Ciencia de Datos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Clustering<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Data Mining<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Data Science<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Hierarchical Clustering<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">Inteligencia Artificial<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">machine learning<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/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":"Posted 8 years ago","modified":"Updated 1 year ago"},"absolute_dates":{"created":"Posted on October 21, 2018","modified":"Updated on February 20, 2025"},"absolute_dates_time":{"created":"Posted on October 21, 2018 10:59 pm","modified":"Updated on February 20, 2025 1:37 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/posts\/544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/comments?post=544"}],"version-history":[{"count":7,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/posts\/544\/revisions"}],"predecessor-version":[{"id":1800,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/posts\/544\/revisions\/1800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/media\/592"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/media?parent=544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/categories?post=544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/tags?post=544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}