{"id":1604,"date":"2019-03-19T07:42:29","date_gmt":"2019-03-19T07:42:29","guid":{"rendered":"https:\/\/cloudxlab.com\/blog\/?p=1604"},"modified":"2019-04-16T10:52:05","modified_gmt":"2019-04-16T10:52:05","slug":"fashion-mnist-using-machine-learning","status":"publish","type":"post","link":"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/","title":{"rendered":"Fashion-MNIST using  Machine Learning"},"content":{"rendered":"\n<p style=\"text-align:left\">One of the classic problem that has been used in the Machine Learning world for quite sometime is the MNIST problem. The objective is to identify the digit based on image. But MNIST is not very great problem because we come up with great accuracy even if we are looking at few pixels in the image. So, another common example problem against which we test algorithms is Fashion-MNIST.<\/p>\n\n\n\n<p>The complete code for this project you can find here : <a href=\"https:\/\/github.com\/cloudxlab\/ml\/tree\/master\/projects\/Fashion-MNIST\">https:\/\/github.com\/cloudxlab\/ml\/tree\/master\/projects\/Fashion-MNIST<\/a><\/p>\n\n\n\n<p>Fashion-MNIST is a dataset of Zalando&#8217;s fashion article images \u2014consisting of a <strong>training set of 60,000<\/strong> examples and <strong>a test set of 10,000<\/strong> examples. Each instance is a 28&#215;28 grayscale image, associated with a label.<\/p>\n\n\n\n<!--more-->\n\n\n\n<figure class=\"wp-block-image is-resized\"><img src=\"https:\/\/lh5.googleusercontent.com\/HeRBlvyNtsA01qVfp35V-BXHiTcD8tRR208bR1JZyB7KXEBPTiyl6xQQp6_QKpMML25HOJM-b2pyndg_FyoDk6-xwJcDKm10S_0TmwT5iC7lXv-qNBELIiNDi7ts0rW4ynPTCoYv\" alt=\"Fashion MNIST dataset images\" width=\"192\" height=\"203\"\/><figcaption>Fashion-MNIST dataset images<\/figcaption><\/figure>\n\n\n<h2><strong>Objective<\/strong><\/h2>\n\n\n<p>This work is part of my experiments with Fashion-MNIST dataset using various Machine Learning algorithms\/models. The objective is to identify (predict) different fashion products from the given images using various best possible Machine Learning Models (Algorithms) and compare their results (performance measures\/scores) to arrive at the best ML model. I have also experimented with \u2018dimensionality reduction\u2019 technique for this problem.<br><\/p>\n\n\n<h2>Acknowledgements<\/h2>\n\n\n<p>I have used Fashion-MNIST dataset for this experiment with Machine Learning. Fashion-MNIST dataset is a collection of fashion articles images provided by <a href=\"http:\/\/www.zalando.com\/\">Zalando<\/a> . Thanks to Zalando Research for <a href=\"https:\/\/github.com\/zalandoresearch\/fashion-mnist\">hosting the dataset<\/a>. <br><\/p>\n\n\n<h2><strong>Understanding and Analysing the dataset<\/strong><\/h2>\n\n\n<p>Fashion MNIST Training dataset consists of 60,000 images and each image has 784 features (i.e. 28&#215;28 pixels). Each pixel is a value from 0 to 255, describing the pixel intensity. 0 for white and 255 for black.<\/p>\n\n\n\n<p>The class labels for Fashion MNIST are: <\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td><strong>Label\ufeff<\/strong><\/td><td><strong>Description\ufeff<\/strong><\/td><\/tr><tr><td>0<\/td><td>T-shirt\/top<\/td><\/tr><tr><td>1<\/td><td>Trouser<\/td><\/tr><tr><td>2<\/td><td>Pullover<\/td><\/tr><tr><td>3<\/td><td>Dress<\/td><\/tr><tr><td>4<\/td><td>Coat<\/td><\/tr><tr><td>5<\/td><td>Sandal<\/td><\/tr><tr><td>6<\/td><td>Shirt<\/td><\/tr><tr><td>7<\/td><td>Sneaker<\/td><\/tr><tr><td>8<\/td><td>Bag<\/td><\/tr><tr><td>9<\/td><td>Ankle boot<\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>Let us have a look at one instance (an article image) of the training dataset.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img src=\"https:\/\/blog.cloudxlab.com\/wp-content\/uploads\/2019\/03\/sample-image-F-MNIST.png\" alt=\"A sample instance(image) from Fashion-MNIST dataset.\" class=\"wp-image-1862\" width=\"173\" height=\"214\" srcset=\"https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/sample-image-F-MNIST.png 273w, https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/sample-image-F-MNIST-243x300.png 243w\" sizes=\"(max-width: 173px) 85vw, 173px\" \/><figcaption>sample image Fashion-MNIST<\/figcaption><\/figure>\n\n\n<h2><strong>Problem Definition<\/strong><\/h2>\n\n\n<p>The \u2018target\u2019 dataset has 10 class labels, as we can see from above (0 &#8211; T-shirt\/top, 1 \u2013 Trouser,,\u2026.9 \u2013 Ankle Boot). <\/p>\n\n\n\n<p>Given the images of the articles, we need to classify them into one of these classes, hence, it is essentially a <strong>\u2018Multi-class Classification\u2019<\/strong> problem.<br><\/p>\n\n\n\n<p>We will be using various Classifiers and comparing their results\/scores. <\/p>\n\n\n<h2><strong>Preparing the Data<\/strong><\/h2>\n\n\n<p>We already have the splitted dataset (training and test) available in ratio 85:15 (60,000:10,000) from Zalando Research, we will use the same for this experiment.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>X_train, X_test, y_train, y_test = trainSet, testSet, trainLabel, testLabel\n\nprint(X_train.shape)\nprint(y_train.shape)\nprint(X_test.shape)\nprint(y_test.shape)\n\n# Output\n(60000, 784)\n(60000,)\n(10000, 784)\n(10000,)<\/code><\/pre>\n\n\n\n<p>As part of data preparation, following techniques were applied on the dataset:<\/p>\n\n\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Shuffling<\/li>\n<li>Feature Scaling<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<p>We shuffle the training dataset to get uniform samples for cross-validation. This also &nbsp;ensures that we don&#8217;t miss out any article in a cross-validation fold.<br><\/p>\n\n\n\n<p>Each image (instance) in the dataset has 784 pixels (features) and value of each feature(pixel) ranges from 0 to 255, this range is too wide, hence we have performed <a href=\"https:\/\/en.wikipedia.org\/wiki\/Feature_scaling\">feature scaling<\/a> (using Standardization) on the training dataset, so that values of all features (pixels) are in a small range.<br><\/p>\n\n\n\n<p>The scaled dataset is created using the below formula:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>x_scaled = (x - x_mean) \/ standard deviation <\/code><\/pre>\n\n\n\n<p>This essentially means that we calculate how many standard deviation away is each point from the mean.<br><\/p>\n\n\n\n<p>Please note that scaling is not needed for Decision Tree based ML algorithms which also includes Random Forest and XGBoost.<br><\/p>\n\n\n<h2><strong>Training various ML Models<\/strong><\/h2>\n\n\n<p>Based on the problem type (multi-class classification), various relevant classifiers were used to train the model.<br><\/p>\n\n\n\n<p>Training dataset was trained on following ML Algorithms:<\/p>\n\n\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li style=\"list-style-type: none;\">\n<ol id=\"mce_6\" class=\"editor-rich-text__tinymce mce-content-body\" role=\"textbox\" contenteditable=\"true\" aria-label=\"Write list\u2026\" aria-autocomplete=\"list\" aria-multiline=\"true\" data-is-placeholder-visible=\"false\">\n<li>SGD Classifier<\/li>\n<li>Softmax Regression<\/li>\n<li>Decision Tree Classifier<\/li>\n<li>Random Forest Classifier<\/li>\n<li>Ensemble with soft voting (with Softmax Regression and Random Forest Classifier)<\/li>\n<li>XGBoost Classifier<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n<p>Since, accuracy score is not relevant for skewed dataset, and in future we may get skewed dataset, I decided to go for other scores too like \u2013 Precision, Recall, F1 score.<br><\/p>\n\n\n<h2><strong>Validating the Training Results<\/strong><\/h2>\n\n\n<p>During the training phase, I validated the results using <strong>k-fold<\/strong> <strong>cross-validation<\/strong>. Generally, 10 folds (cv=10) are used, but, &nbsp;in this case, I used only 3 folds (cv=3), just to reduce the cross-validation time.<br><\/p>\n\n\n\n<p>Below are the results for various ML models (algorithms) from cross-validation:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img width=\"639\" height=\"408\" src=\"https:\/\/blog.cloudxlab.com\/wp-content\/uploads\/2019\/03\/F-MNIST-Training.png\" alt=\"Fashion MNIST training dataset results for various ML algorithms\" class=\"wp-image-1788\" srcset=\"https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/F-MNIST-Training.png 639w, https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/F-MNIST-Training-300x192.png 300w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><figcaption>F-MNIST training<\/figcaption><\/figure>\n\n\n\n<p>Standard deviation in all cases was around 0.0020, except for XGBoost (standard deviation &#8211; 0.00063).<br><\/p>\n\n\n\n<p>Cross-validation was used to find the proper score of each model, and also to ensure that the model is not <em>overfitting<\/em> or <em>underfitting<\/em>. <br><\/p>\n\n\n\n<p>From the cross-validation results above, we see that <strong>XGBoost model performs best in the training phase, hence, it was selected <\/strong>for the next steps of this problem.<br><\/p>\n\n\n<h2><strong>Fine-Tuning the Selected Model<\/strong><\/h2>\n\n\n<p>For fine-tuning of the selected XGBoost model, I used <em>Grid Search<\/em> technique.<\/p>\n\n\n\n<p>Grid search process on training dataset (with 784 features) was taking a lot of time, hence I decided to go for <strong>Dimensionality Reduction<\/strong> (to get the <em>reduced <\/em>training dataset) <strong>to reduce the grid search and prediction time<\/strong>.<br><\/p>\n\n\n\n<p>For dimensionality reduction, since it\u2019s not Swiss-roll kind of data, I decided to go for <strong>PCA<\/strong> for this dataset.<br><\/p>\n\n\n\n<p>I tried various values of <em>variance ratio<\/em> (0.95, 0.97, 0.99), but, since, 0.99 variance ratio gave enough number of features(<strong>459 features<\/strong> out of original 784 features) without losing any significant information (quality), I selected variance ratio of <strong>0.99<\/strong>for performing the dimensionality reduction on the dataset.<br><\/p>\n\n\n\n<p>Grid search was performed on the <em>selected<\/em> XGBoost model, on <em>reduced<\/em> training dataset with below set of hyperparameters:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n_estimators = [20]\nmax_depth=[8,10,12]<\/code><\/pre>\n\n\n\n<p>Below are the grid search results:<br><\/p>\n\n\n\n<p><strong>Best Parameters<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n_estimators = 20\nmax_depth = 10<\/code><\/pre>\n\n\n\n<p><strong>Best Estimator <\/strong>&#8211;<strong> XGBClassifier<\/strong> with following parameter values:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>learning_rate = 0.1\nmin_child_weight = 1\nn_estimators=20\nmax_depth=10<\/code><\/pre>\n\n\n<h2><strong>Evaluating the Final Model on Test Dataset<\/strong><\/h2>\n\n\n<p>I have used the final model, that we got from grid search (best estimator) above, for predictions on the <em>reduced <\/em>test dataset (got after applying dimensionality reduction with 0.99 variance ratio).<br><\/p>\n\n\n\n<p>Following are the results for the <strong>test dataset<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img width=\"635\" height=\"147\" src=\"https:\/\/blog.cloudxlab.com\/wp-content\/uploads\/2019\/03\/F-MNIST-Test.png\" alt=\"Fashion MNIST test dataset results\" class=\"wp-image-1791\" srcset=\"https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/F-MNIST-Test.png 635w, https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/F-MNIST-Test-300x69.png 300w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><figcaption>F-MNIST test<\/figcaption><\/figure>\n\n\n\n<p>Below are the Results from <strong>training dataset<\/strong> that we got earlier:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img width=\"635\" height=\"130\" src=\"https:\/\/blog.cloudxlab.com\/wp-content\/uploads\/2019\/03\/F-MNIST-training-selcted.png\" alt=\"Fashion MNIST training dataset results for final model\" class=\"wp-image-1793\" srcset=\"https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/F-MNIST-training-selcted.png 635w, https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/F-MNIST-training-selcted-300x61.png 300w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><figcaption>F-MNIST training final<\/figcaption><\/figure>\n\n\n<h2><strong>Conclusion<\/strong><\/h2>\n\n\n<p>Difference between results (say accuracy score) of test dataset and training dataset is<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img width=\"231\" height=\"49\" src=\"https:\/\/blog.cloudxlab.com\/wp-content\/uploads\/2019\/03\/calculation-1.png\" alt=\"\" class=\"wp-image-1847\"\/><\/figure><\/div>\n\n\n\n<p>As we see, the <strong>difference between scores of test dataset and training dataset is very low (3.3%), <\/strong>hence, the <strong>conclusion is that our final model (XGBoost) is good enough, and it doesn\u2019t have any <em>overfitting<\/em> or <em>underfitting<\/em>.<\/strong><br><\/p>\n\n\n\n<p>Although XGBoost (with n_estimators=20 and max_depth = 10) is good enough, there may be a chance to improve this model further, by say, increasing the number of estimators and trying out some more hyperparameters. <br><\/p>\n\n\n\n<p>As we see above, Ensemble also has given good results, we can try Ensemble with some more models and with some more hyperparameters to improve the results further. <br><\/p>\n\n\n\n<p>This experiment was limited to Machine Learning algorithms. You can try Deep Learning techniques (say CNN, etc.) to improve the results further.<br><\/p>\n\n\n\n<p>I didn\u2019t try SVM for this problem, because for larger dataset, SVM (kernel=poly) takes a long time to train.<br><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Again, for your reference, the complete code for this project you can find here : <a href=\"https:\/\/github.com\/cloudxlab\/ml\/tree\/master\/projects\/Fashion-MNIST\">https:\/\/github.com\/cloudxlab\/ml\/tree\/master\/projects\/Fashion-MNIST<\/a><\/p>\n\n\n\n<p>For the complete course on Machine Learning, please visit&nbsp;<a href=\"https:\/\/cloudxlab.com\/course\/specialization\/1\/machine-learning-specialization\">Specialization Course on Machine Learning &amp; Deep Learning<\/a><br><\/p>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the classic problem that has been used in the Machine Learning world for quite sometime is the MNIST problem. The objective is to identify the digit based on image. But MNIST is not very great problem because we come up with great accuracy even if we are looking at few pixels in the &hellip; <a href=\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Fashion-MNIST using  Machine Learning&#8221;<\/span><\/a><\/p>\n","protected":false},"author":21,"featured_media":1866,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[28,13],"tags":[16],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fashion-MNIST using Machine Learning | CloudxLab Blog<\/title>\n<meta name=\"description\" content=\"This blog involves experiments with Fashion-MNIST dataset using various Machine Learning algorithms like - XGBoost, Random Forest, Softmax Regression, etc.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fashion-MNIST using Machine Learning | CloudxLab Blog\" \/>\n<meta property=\"og:description\" content=\"This blog involves experiments with Fashion-MNIST dataset using various Machine Learning algorithms like - XGBoost, Random Forest, Softmax Regression, etc.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/\" \/>\n<meta property=\"og:site_name\" content=\"CloudxLab Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cloudxlab\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-19T07:42:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-16T10:52:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/fashion-mnist-sprite.png\" \/>\n\t<meta property=\"og:image:width\" content=\"840\" \/>\n\t<meta property=\"og:image:height\" content=\"840\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CloudxLab\" \/>\n<meta name=\"twitter:site\" content=\"@CloudxLab\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"6 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/#website\",\"url\":\"https:\/\/cloudxlab.com\/blog\/\",\"name\":\"CloudxLab Blog\",\"description\":\"Learn AI, Machine Learning, Deep Learning, Devops &amp; Big Data\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/cloudxlab.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/fashion-mnist-sprite.png\",\"contentUrl\":\"https:\/\/cloudxlab.com\/blog\/wp-content\/uploads\/2019\/03\/fashion-mnist-sprite.png\",\"width\":840,\"height\":840,\"caption\":\"Machine Learning with Fashion MNIST\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/#webpage\",\"url\":\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/\",\"name\":\"Fashion-MNIST using Machine Learning | CloudxLab Blog\",\"isPartOf\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/#primaryimage\"},\"datePublished\":\"2019-03-19T07:42:29+00:00\",\"dateModified\":\"2019-04-16T10:52:05+00:00\",\"author\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/#\/schema\/person\/cb0503c4e740565d85cd28a1b167f48b\"},\"description\":\"This blog involves experiments with Fashion-MNIST dataset using various Machine Learning algorithms like - XGBoost, Random Forest, Softmax Regression, etc.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/\",\"url\":\"https:\/\/cloudxlab.com\/blog\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"https:\/\/cloudxlab.com\/blog\/fashion-mnist-using-machine-learning\/#webpage\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/#\/schema\/person\/cb0503c4e740565d85cd28a1b167f48b\",\"name\":\"Deepak Singh\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/cloudxlab.com\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/93f963a3a3600e7852f1a3677966d5c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/93f963a3a3600e7852f1a3677966d5c4?s=96&d=mm&r=g\",\"caption\":\"Deepak Singh\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts\/1604"}],"collection":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/comments?post=1604"}],"version-history":[{"count":105,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts\/1604\/revisions"}],"predecessor-version":[{"id":2082,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/posts\/1604\/revisions\/2082"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/media\/1866"}],"wp:attachment":[{"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/media?parent=1604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/categories?post=1604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudxlab.com\/blog\/wp-json\/wp\/v2\/tags?post=1604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}