{"id":403,"date":"2018-10-07T16:30:34","date_gmt":"2018-10-07T22:30:34","guid":{"rendered":"http:\/\/www.jacobsoft.com.mx\/?p=403"},"modified":"2025-02-20T13:37:51","modified_gmt":"2025-02-20T19:37:51","slug":"support-vector-regression","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/en\/support-vector-regression\/","title":{"rendered":"Support Vector Regression (SVR)"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Regression Vector Support (Support Vector Regression - SVR)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Support Vector Regression is a variant of the analysis model <strong>Support Vector Machine<\/strong> used to classify, however, with this variant the support vector model is used as a regression scheme to predict values.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Vector Support Machine (SVM)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It is a set of supervised learning algorithms directly related to problems of classification and regression where, from a set of training data or samples and labeled classes, an SVM is trained to build the model that predicts the class of a new sample. .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Intuitively, the SVM is a model that represents the points of the sample in space, separating the classes into two spaces as wide as possible by means of a separation hyperplane, which is defined as the vector between the two points of the two more classes close and this vector is called support vector.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When a new sample is put in correspondence with said model, depending on the space to which it belongs, then it can be classified to one or another class. A good separation between the classes will allow a correct classification.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this sense, an SVM constructs a hyperplane or a set of hyperplanes in a space of very high or even infinite dimensionality that can be used in problems of classification or regression.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The models based on SVM are related to neural networks. Using a kernel function, we obtain an alternative training method for polynomial classifiers, radial base function and multilayer perceptron.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As with most supervised classification methods, the input data is viewed as a p-dimensional vector (an ordered list of p numbers). The SVM looks for a hyperplane that separates optimally the points of one class with respect to another, that previously could have been projected in a space of superior dimensionality.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this concept of optimal separation is where the fundamental characteristic of the SVM resides, looking for the hyperplane to have the maximum distance with the points closest to it. In this way the points of the vector that are on one side of the hyperplane are labeled with a category and those that are on the other side, are labeled with another category.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The predictor variable is called an attribute and the attributes used to define the hyperplane are called characteristics. The choice of the most appropriate representation of the universe studied is carried out through a process called feature selection. The vector formed by the points closest to the hyperplane is called the support vector.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"689\" height=\"508\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVM1.png\" alt=\"\" class=\"wp-image-455\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVM1.png 689w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVM1-300x221.png 300w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><figcaption>Suppose this data set<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The SVM will choose a hyperplane to separate the groups, with the greatest possible distance:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"689\" height=\"508\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVM2.png\" alt=\"\" class=\"wp-image-456\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVM2.png 689w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVM2-300x221.png 300w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A good margin is one in which you have the maximum distance from the support vectors to the two classes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When the data set is more complex, the SVM converts the data into a linear space using some equations to reach a higher dimensional space, use for example: z = x<sup>2<\/sup>&nbsp;+ and<sup>2<\/sup><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Support Vector Regression<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Support Vector Regression uses the same principle with some minor changes. In principle, since the output is a real number, it becomes difficult to predict the information by hand since there are infinite possibilities. For the case of regression, then a margin of tolerance (epsilon) is established near the vector in order to minimize the error taking into account that part of that error is tolerated.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"491\" height=\"281\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_2.png\" alt=\"\" class=\"wp-image-457\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_2.png 491w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_2-300x172.png 300w\" sizes=\"auto, (max-width: 491px) 100vw, 491px\" \/><figcaption>fuente:&nbsp;http:\/\/www.saedsayad.com\/support_vector_machine_reg.htm<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the case of a linear problem, the SVR is given by<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"84\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_4.png\" alt=\"\" class=\"wp-image-458\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">When the problem is not linear, the Kernel function transforms the data into a higher dimensional space characteristic to make it possible to perform the linear separation:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"302\" height=\"180\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_6.png\" alt=\"\" class=\"wp-image-459\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_6.png 302w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_6-300x179.png 300w\" sizes=\"auto, (max-width: 302px) 100vw, 302px\" \/><\/figure><\/div>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"494\" height=\"274\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_5.png\" alt=\"\" class=\"wp-image-460\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_5.png 494w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_5-300x166.png 300w\" sizes=\"auto, (max-width: 494px) 100vw, 494px\" \/><figcaption>fuente:&nbsp;http:\/\/www.saedsayad.com\/support_vector_machine_reg.htm<br><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The most common Kernel functions are:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"255\" height=\"217\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVM_kernel_1.png\" alt=\"\" class=\"wp-image-461\"\/><\/figure><\/div>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Support Vector Regression con Python\" width=\"780\" height=\"439\" src=\"https:\/\/www.youtube.com\/embed\/g2nNzRP21Sc?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<h2 class=\"wp-block-heading\">SVR - Support Vector Regression with Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We import the basic libraries and load the set of data that we will use for this example:<\/p>\n\n\n\n\n<pre class=\"wp-block-preformatted\"><span class=\"kw\">import<\/span> numpy <span class=\"kw\">ace<\/span> np\n<span class=\"kw\">import<\/span> matplotlib.pyplot <span class=\"kw\">ace<\/span> plt\n<span class=\"kw\">import<\/span> pandas <span class=\"kw\">ace<\/span> pd dataset = pd.read_csv (&#039;<span class=\"st\">Salario_por_Posicion.csv<\/span>&#039;) X = dataset.iloc [:, <span class=\"kw\">1<\/span>:<span class=\"kw\">2<\/span>] .values \u200b\u200by = dataset.iloc [:, <span class=\"kw\">2<\/span>] .values<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The data set contains 3 columns, of which we will use the second column that represents the level of a person&#039;s position, as the independent variable and the salary that is the last column as the dependent variable to predict<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"470\" height=\"428\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/Arboles_9.png\" alt=\"\" class=\"wp-image-394\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/Arboles_9.png 470w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/Arboles_9-300x273.png 300w\" sizes=\"auto, (max-width: 470px) 100vw, 470px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Now we make a scale adjustment through data standardization:<\/p>\n\n\n\n\n<pre class=\"wp-block-preformatted\"><span class=\"com\"># Scale settings<\/span>\n<span class=\"kw\">desde<\/span> sklearn.preprocessing <span class=\"kw\">import<\/span> StandardScaler sc_X = StandardScaler () sc_y = StandardScaler () X = sc_X.fit_transform (X) y = sc_y.fit_transform (y)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The data is now as follows for the independent variable X and the dependent variable Y<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"387\" height=\"415\" src=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_scalling.png\" alt=\"\" class=\"wp-image-468\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_scalling.png 387w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/SVR_scalling-280x300.png 280w\" sizes=\"auto, (max-width: 387px) 100vw, 387px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The next step is to create the SVR object from the sklearn library and the SVM subpackage to train it with the X and Y data using the RBF kernel function<\/p>\n\n\n\n\n<pre class=\"wp-block-preformatted\"><span class=\"kw\">desde<\/span> sklearn.svm <span class=\"kw\">import<\/span> SVR regressor = SVR (kernel = <span class=\"st\">&#039;rbf&#039;<\/span>) regressor.fit (X, y)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The output obtained after executing the previous block is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">SVR (C = 1.0, cache_size = 200, coef0 = 0.0, degree = 3, epsilon = 0.1, gamma = &#039;auto&#039;, kernel = &#039;rbf&#039;, max_iter = -1, shrinking = True, tol = 0.001, verbose = False )<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para las funciones kernel tenemos varias opciones: linear, poly, rbf, sigmoid o precomputed. la funcion rbf es la funci\u00f3n de base radial com\u00fanmente utilizada para&nbsp; el entrenamiento de algoritmos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now with the trained model, we can make a prediction, for the value of X (Level), for example 6.5, for this we first transform the value with the StandarScaler object and send it to the predict method (), the result is transformed in reverse to obtain the value of the calculated salary:<\/p>\n\n\n\n\n<pre class=\"wp-block-preformatted\"><span class=\"com\"># prediction of a new value<\/span>\nx_trans = sc_X.transform ([[<span class=\"kw\">6.5<\/span>]]) y_pred = regressor.predict (x_trans) y_pred = sc_y.inverse_transform (y_pred)\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The value of y_pred is 170,370.02 which is the salary calculated for level 6.5, we observe in the original table that the salary for level 6 is 150,000 and for level 7 it is 200,000, so the value of 170 thousand is in the prediction space<\/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\/10\/svr_pred.png\" alt=\"\" class=\"wp-image-471\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/svr_pred.png 416w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/svr_pred-300x244.png 300w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Now we graph the real values \u200b\u200bof x and Y with red and the line of the prediction with blue to observe the curve and the values \u200b\u200bcalculated with the prediction of the SVR<\/p>\n\n\n\n\n<pre class=\"wp-block-preformatted\"><span class=\"com\">#Graficando the real values<\/span>\nx_real = sc_X.inverse_transform (X) y_real = sc_y.inverse_transform (y) X_grid = np.arange (min (x_real), max (x_real), <span class=\"kw\">0.01<\/span>) X_grid = X_grid.reshape ((len (X_grid), <span class=\"kw\">1<\/span>)) x_grid_transform = sc_X.transform (X_grid) y_grid = regressor.predict (x_grid_transform) y_grid_real = sc_y.inverse_transform (y_grid) plt.scatter (x_real, y_real, color = <span class=\"st\">&#039;net&#039;<\/span>) plt.plot (X_grid, y_grid_real, color = <span class=\"st\">&#039;blue&#039;<\/span>) plt.title (&#039;SVR&#039;) plt.xlabel (&#039;Salary Level&#039;) plt.ylabel (&#039;Salary&#039;) plt.show ()\n<\/pre>\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\/svr_grafica-1.png\" alt=\"\" class=\"wp-image-477\" srcset=\"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/svr_grafica-1.png 656w, https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/10\/svr_grafica-1-300x267.png 300w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\n\nYou can compare the result with what is shown in the article on regression trees and observe the difference, in this case it is not a classification to assign the value to a group, but an interpolation.\n\n<\/p>\n<style class=\"advgb-styles-renderer\">\n.kw{color:blue;}\n.st{color:green;}\n\n.kw{color:blue;}\n.st{color:green;}\n\t.com{color:gray;}\n\n.kw{color:blue;}\n.st{color:green;}\n\t.com{color:gray;}\n\n.kw{color:blue;}\n.st{color:green;}\n\t.com{color:gray;}\n\n.kw{color:blue;}\n.st{color:green;}\n\t.com{color:gray;}\n<\/style>","protected":false},"excerpt":{"rendered":"<p>Regresi\u00f3n de Soporte Vectorial (Support Vector Regression &#8211; SVR) Support Vector Regression es una variante &hellip; <\/p>","protected":false},"author":2,"featured_media":405,"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,50,70,53,51,83],"class_list":["post-403","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-machine-learning","tag-metodos-predictivos","tag-prediccion","tag-regresion","tag-support-vector-regression"],"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\/09\/destacada_SVR-300x165.jpg","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada_SVR.jpg","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/2018\/09\/destacada_SVR.jpg","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\">clasificaci\u00f3n<\/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\">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\">m\u00e9todos predictivos<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">predicci\u00f3n<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">regresi\u00f3n<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/en\/category\/inteligencia-artificial\/machine-learning\/\" class=\"advgb-post-tax-term\">support vector regression<\/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\">machine learning<\/span>","<span class=\"advgb-post-tax-term\">m\u00e9todos predictivos<\/span>","<span class=\"advgb-post-tax-term\">predicci\u00f3n<\/span>","<span class=\"advgb-post-tax-term\">regresi\u00f3n<\/span>","<span class=\"advgb-post-tax-term\">support vector regression<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 8 years ago","modified":"Updated 1 year ago"},"absolute_dates":{"created":"Posted on October 7, 2018","modified":"Updated on February 20, 2025"},"absolute_dates_time":{"created":"Posted on October 7, 2018 4:30 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\/403","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=403"}],"version-history":[{"count":16,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/posts\/403\/revisions"}],"predecessor-version":[{"id":1449,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/posts\/403\/revisions\/1449"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/media\/405"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/media?parent=403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/categories?post=403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/en\/wp-json\/wp\/v2\/tags?post=403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}