{"id":117243,"date":"2026-06-19T22:50:35","date_gmt":"2026-06-19T17:20:35","guid":{"rendered":"https:\/\/www.guvi.in\/blog\/?p=117243"},"modified":"2026-06-19T22:50:37","modified_gmt":"2026-06-19T17:20:37","slug":"imbalanced-dataset-in-python","status":"publish","type":"post","link":"https:\/\/www.guvi.in\/blog\/imbalanced-dataset-in-python\/","title":{"rendered":"Imbalanced Datasets in Python: SMOTE, Class Weights, and Best Practices"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>TL;DR<\/strong><\/h2>\n\n\n\n<ol>\n<li><strong>An imbalanced dataset<\/strong> in python occurs when one class significantly outnumbers another, making it difficult for machine learning models to learn minority-class patterns effectively.<\/li>\n\n\n\n<li><strong>Accuracy is often misleading<\/strong> for imbalanced classification because a model can achieve high accuracy while missing important minority-class predictions.<\/li>\n\n\n\n<li><strong>Precision, Recall, F1-Score, and PR-AUC<\/strong> are better metrics for evaluating performance on imbalanced datasets.<\/li>\n\n\n\n<li><strong>Class weights<\/strong> provide a simple way to improve minority-class learning without changing the dataset.<\/li>\n\n\n\n<li><strong>SMOTE<\/strong> generates synthetic minority-class samples to help models learn underrepresented patterns.<\/li>\n\n\n\n<li><strong>Threshold tuning<\/strong> can improve minority-class detection and should be evaluated alongside SMOTE and class weights.<\/li>\n\n\n\n<li><strong>The most effective approach<\/strong> is to compare multiple techniques and choose the one that performs best on validation data.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Introduction<\/strong><\/h2>\n\n\n\n<p>Machine learning models learn patterns from data, but their performance can suffer when one class significantly outnumbers another. This challenge, known as class imbalance, is common in applications such as fraud detection, medical diagnosis, cybersecurity, and customer churn prediction. Understanding how to handle imbalanced datasets is an essential machine learning skill, and learners can build hands-on experience with such concepts through<strong> HCL GUVI&#8217;s <\/strong><a href=\"https:\/\/www.guvi.in\/zen-class\/data-science-course\/?utm_source=blog&amp;utm_medium=hyperlink&amp;utm_campaign=Imbalanced+Datasets+in+Python%3A+SMOTE%2C+Class+Weights%2C+and+Best+Practices\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Data Science<\/strong><\/a><strong> Course.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Are Imbalanced Datasets?<\/strong><\/h2>\n\n\n\n<p>An imbalanced dataset is a dataset where one class contains significantly more samples than another.<\/p>\n\n\n\n<p>Consider a fraud detection dataset:<\/p>\n\n\n\n<ol>\n<li>Legitimate transactions: 99,000<\/li>\n\n\n\n<li>Fraudulent transactions: 1,000<\/li>\n<\/ol>\n\n\n\n<p>Although fraud is the most important outcome, it represents only 1% of the data.<\/p>\n\n\n\n<p>Imbalanced datasets are common in:<\/p>\n\n\n\n<ol>\n<li>Credit card fraud detection<\/li>\n\n\n\n<li>Medical diagnosis systems<\/li>\n\n\n\n<li>Equipment failure prediction<\/li>\n\n\n\n<li>Cybersecurity threat detection<\/li>\n\n\n\n<li><a href=\"https:\/\/www.guvi.in\/hub\/customer-churn-prediction-project-using-classification-techniques\/\" target=\"_blank\" rel=\"noreferrer noopener\">Customer churn prediction<\/a><\/li>\n\n\n\n<li>Insurance claim analysis<\/li>\n<\/ol>\n\n\n\n<p>Because <a href=\"https:\/\/www.guvi.in\/blog\/data-science-algorithms-for-machine-learning\/\" target=\"_blank\" rel=\"noreferrer noopener\">machine learning algorithms<\/a> are designed to optimize overall performance, they often prioritize the majority class and struggle to learn minority-class patterns effectively.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Accuracy Fails on Imbalanced Data<\/strong><\/h2>\n\n\n\n<p>Accuracy measures the percentage of correct predictions made by a model.<\/p>\n\n\n\n<p>Imagine a dataset where 99% of transactions are legitimate and only 1% are fraudulent.<\/p>\n\n\n\n<p>A model that predicts every transaction as legitimate would achieve:<\/p>\n\n\n\n<p><strong>Accuracy = 99%<\/strong><\/p>\n\n\n\n<p>At first glance, this appears impressive.<\/p>\n\n\n\n<p>However, the model would fail to identify a single fraudulent transaction.<\/p>\n\n\n\n<p>This demonstrates why accuracy alone should never be used to evaluate imbalanced classification problems. A high accuracy score may hide poor minority-class performance.<\/p>\n\n\n\n<p>Instead, practitioners focus on metrics that better reflect a model&#8217;s ability to detect important events.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Metrics That Matter More Than Accuracy<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Precision<\/strong><\/h3>\n\n\n\n<p>Precision measures how many positive predictions were actually correct.<\/p>\n\n\n\n<p>A high precision score indicates that the model generates fewer false alarms.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Recall<\/strong><\/h3>\n\n\n\n<p>Recall measures how many actual positive cases were successfully identified.<\/p>\n\n\n\n<p>For fraud detection and disease diagnosis, recall is often the most important metric because missing positive cases can be costly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. F1-Score<\/strong><\/h3>\n\n\n\n<p><a href=\"https:\/\/www.guvi.in\/blog\/understanding-f1-score-in-machine-learning\/\" target=\"_blank\" rel=\"noreferrer noopener\">F1-Score<\/a> balances precision and recall into a single metric.<\/p>\n\n\n\n<p>It is particularly useful when both false positives and false negatives matter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. PR-AUC<\/strong><\/h3>\n\n\n\n<p>Precision-Recall Area Under Curve (PR-AUC) is often more informative than ROC-AUC for highly imbalanced datasets because it focuses on minority-class performance.<\/p>\n\n\n\n<p>When evaluating imbalanced classification models, these metrics provide a much clearer picture than accuracy.<\/p>\n\n\n\n<p>If you&#8217;d like to explore these evaluation metrics in greater detail, check out our <strong>guide<\/strong> on <a href=\"https:\/\/www.guvi.in\/blog\/precision-and-recall-in-machine-learning\/\" target=\"_blank\" rel=\"noreferrer noopener\">Precision and Recall in Machine Learning<\/a>.<\/p>\n\n\n\n<div style=\"background-color: #099f4e; border: 3px solid #110053; border-radius: 12px; padding: 18px 22px; color: #FFFFFF; font-family: Montserrat, Helvetica, sans-serif; line-height: 1.6; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); max-width: 800px;\">\n  <strong style=\"font-size: 22px; color: #FFFFFF;\">\ud83d\udca1 Did You Know?<\/strong>\n  <p style=\"margin-top: 14px;\">\n    In many real-world <strong>fraud detection systems<\/strong>, fraudulent transactions often make up less than <strong>1%<\/strong> of all records. This leads to a classic problem in machine learning: <strong>class imbalance<\/strong>. A model that simply predicts every transaction as legitimate can still achieve over <strong>99% accuracy<\/strong> while completely failing to detect fraud. Because of this, accuracy alone is not a reliable metric in such scenarios. Instead, practitioners rely on metrics like precision, recall, F1-score, and AUC, along with techniques such as resampling, anomaly detection, and cost-sensitive learning. Handling imbalanced datasets is therefore a critical challenge in building effective real-world ML systems.\n  <\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Detecting Imbalance in Python<\/strong><\/h2>\n\n\n\n<p>Before applying any balancing technique, you should examine class distribution.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(df&#91;'target'].value_counts())<\/code><\/pre>\n\n\n\n<p>To view class percentages:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(df&#91;'target'].value_counts(normalize=True) * 100)<\/code><\/pre>\n\n\n\n<p>Visualizing the distribution can make the imbalance easier to identify.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import matplotlib.pyplot as plt\n\ndf&#91;'target'].value_counts().plot(kind='bar')\n\nplt.show()<\/code><\/pre>\n\n\n\n<p>When splitting data, always preserve class ratios using stratification.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from sklearn.model_selection import train_test_split\n\nX_train, X_test, y_train, y_test = train_test_split(\n\n&nbsp;&nbsp;&nbsp;X,\n\n&nbsp;&nbsp;&nbsp;y,\n\n&nbsp;&nbsp;&nbsp;test_size=0.2,\n\n&nbsp;&nbsp;&nbsp;stratify=y,\n\n&nbsp;&nbsp;&nbsp;random_state=42\n\n)<\/code><\/pre>\n\n\n\n<p>This ensures both training and testing datasets contain similar class distributions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Using Class Weights<\/strong><\/h2>\n\n\n\n<p>Class weights are often the simplest solution for handling imbalanced datasets in <a href=\"https:\/\/www.guvi.in\/hub\/python\/what-is-python\/\">Python<\/a>.<\/p>\n\n\n\n<p>Instead of modifying the dataset, class weights increase the penalty for misclassifying minority-class samples.<\/p>\n\n\n\n<p>Many <a href=\"https:\/\/www.guvi.in\/blog\/what-is-sklearn-in-python\/\" target=\"_blank\" rel=\"noreferrer noopener\">Scikit-learn<\/a> models support the class_weight parameter.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from sklearn.linear_model import LogisticRegression\n\nmodel = LogisticRegression(\n\n&nbsp;&nbsp;&nbsp;class_weight='balanced',\n\n&nbsp;&nbsp;&nbsp;random_state=42\n\n)\n\nmodel.fit(X_train, y_train)<\/code><\/pre>\n\n\n\n<p>Class weights are easy to implement, require no synthetic data generation, and work well with many algorithms. However, they may struggle with extremely imbalanced datasets, and results can vary depending on the model.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Using SMOTE<\/strong><\/h2>\n\n\n\n<p>SMOTE (<strong>Synthetic Minority Over-sampling Technique<\/strong>) is one of the most popular oversampling techniques in machine learning.<\/p>\n\n\n\n<p>Instead of duplicating minority-class records, SMOTE creates synthetic samples between existing minority observations.<\/p>\n\n\n\n<p>This helps models learn minority-class patterns more effectively.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Installing SMOTE<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install imbalanced-learn<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Applying SMOTE<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from imblearn.over_sampling import SMOTE\n\nsmote = SMOTE(random_state=42)\n\nX_train_smote, y_train_smote = smote.fit_resample(\n\n&nbsp;&nbsp;X_train,\n\n&nbsp;&nbsp;&nbsp;y_train\n\n)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Training the Model<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from sklearn.ensemble import RandomForestClassifier\n\nmodel = RandomForestClassifier(random_state=42)\n\nmodel.fit(X_train_smote, y_train_smote)<\/code><\/pre>\n\n\n\n<p>SMOTE improves minority-class representation and often boosts recall by generating synthetic samples. However, it can introduce noise, create unrealistic observations, and increase training time.&nbsp;<\/p>\n\n\n\n<p>For learners looking to strengthen their machine learning and data science skills, <strong>HCL GUVI&#8217;s <\/strong><a href=\"https:\/\/www.guvi.in\/zen-class\/data-science-course\/?utm_source=blog&amp;utm_medium=hyperlink&amp;utm_campaign=Imbalanced+Datasets+in+Python%3A+SMOTE%2C+Class+Weights%2C+and+Best+Practices\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Data Science<\/strong><\/a><strong> Course <\/strong>covers practical workflows used in real-world projects.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Threshold Tuning: The Overlooked Technique<\/strong><\/h2>\n\n\n\n<p>Many <a href=\"https:\/\/www.guvi.in\/blog\/classification-in-data-science\/\" target=\"_blank\" rel=\"noreferrer noopener\">classification<\/a> models use a default probability threshold of 0.5.<\/p>\n\n\n\n<p>However, this threshold may not be optimal for imbalanced datasets.<\/p>\n\n\n\n<p>For example, reducing the threshold from 0.5 to 0.3 may allow the model to identify more minority-class cases, improving recall.<\/p>\n\n\n\n<p>Threshold tuning is particularly valuable when:<\/p>\n\n\n\n<ol>\n<li>Missing positive cases is expensive<\/li>\n\n\n\n<li>Recall is more important than precision<\/li>\n\n\n\n<li>Probability estimates are reliable<\/li>\n<\/ol>\n\n\n\n<p>Recent research suggests threshold tuning can sometimes deliver performance gains comparable to or better than oversampling techniques.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Class Weights vs SMOTE vs Threshold Tuning<\/strong><\/h2>\n\n\n\n<p>Choosing the right technique depends on your dataset and business objective.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Use Class Weights When<\/strong><\/h3>\n\n\n\n<ol>\n<li>You need a simple baseline solution<\/li>\n\n\n\n<li>The dataset size is limited<\/li>\n\n\n\n<li>Models support class weighting<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Use SMOTE When<\/strong><\/h3>\n\n\n\n<ol>\n<li>Minority samples are extremely scarce<\/li>\n\n\n\n<li>Models struggle to learn minority patterns<\/li>\n\n\n\n<li>Recall is a critical metric<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Use Threshold Tuning When<\/strong><\/h3>\n\n\n\n<ol>\n<li>False negatives are expensive<\/li>\n\n\n\n<li>Probability outputs are available<\/li>\n\n\n\n<li>You want to improve recall without changing the dataset<\/li>\n<\/ol>\n\n\n\n<p>In practice, experienced machine learning engineers often evaluate all three approaches and compare results before deployment.<\/p>\n\n\n\n<p>Looking to strengthen your Python and machine learning fundamentals? Download <strong>HCL GUVI&#8217;s free <\/strong><a href=\"https:\/\/www.guvi.in\/mlp\/python-ebook\/?utm_source=blog&amp;utm_medium=hyperlink&amp;utm_campaign=Imbalanced+Datasets+in+Python%3A+SMOTE%2C+Class+Weights%2C+and+Best+Practices\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Python<\/strong><\/a><strong> eBook <\/strong>for practical concepts, examples, and hands-on learning resources.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Real-World Workflow for Handling Imbalanced Datasets<\/strong><\/h2>\n\n\n\n<p>Analyze Class Distribution<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Stratified Train-Test Split<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Train Baseline Model<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Evaluate Precision, Recall &amp; F1-Score<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Apply Class Weights or SMOTE<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Compare Performance<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Tune Decision Thresholds<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Cross-Validation<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2193<\/p>\n\n\n\n<p>Deploy Best Model<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Practices<\/strong><\/h2>\n\n\n\n<ol>\n<li>Always inspect class distribution before training.<\/li>\n\n\n\n<li>Use stratified splitting to preserve class ratios.<\/li>\n\n\n\n<li>Evaluate models using Precision, Recall, F1-Score, and PR-AUC.<\/li>\n\n\n\n<li>Start with class weights before exploring more advanced techniques.<\/li>\n\n\n\n<li>Apply SMOTE only to training data.<\/li>\n\n\n\n<li>Experiment with threshold tuning.<\/li>\n\n\n\n<li>Use cross-validation to verify results.<\/li>\n\n\n\n<li>Compare multiple approaches instead of assuming one technique will always win.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>Handling imbalanced datasets in Python is not about choosing a single technique but selecting the approach that best fits your data and objectives. While class weights, SMOTE, and threshold tuning each offer unique advantages, their effectiveness depends on the problem being solved. By combining proper evaluation metrics, validation strategies, and balancing techniques, you can build more reliable and accurate machine learning models.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQs<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1781754531729\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>1. What is an imbalanced dataset in Python?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>An imbalanced dataset occurs when one class contains significantly more samples than another class, making it difficult for machine learning models to learn minority-class patterns effectively.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1781754537336\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>2. Why is accuracy misleading for imbalanced datasets?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Accuracy can appear high even when a model completely fails to identify minority-class samples. Metrics such as Recall and F1-Score provide a more reliable evaluation.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1781754546981\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>3. What is SMOTE in machine learning?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>SMOTE is an oversampling technique that generates synthetic minority-class samples to balance training data and improve model performance.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1781754556745\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>4. When should I use class weights?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Class weights are ideal when you want a simple solution that does not modify the dataset, and your algorithm supports weighted learning.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1781754569179\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>6. Should SMOTE be applied before train-test splitting?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. SMOTE should only be applied to the training dataset to avoid data leakage.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1781754583483\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>7. Which metric is best for imbalanced datasets?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>There is no single best metric. Precision, Recall, F1-Score, and PR-AUC are commonly used depending on business objectives.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>TL;DR Introduction Machine learning models learn patterns from data, but their performance can suffer when one class significantly outnumbers another. This challenge, known as class imbalance, is common in applications such as fraud detection, medical diagnosis, cybersecurity, and customer churn prediction. Understanding how to handle imbalanced datasets is an essential machine learning skill, and learners [&hellip;]<\/p>\n","protected":false},"author":63,"featured_media":117769,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[717],"tags":[],"views":"20","authorinfo":{"name":"Vishalini Devarajan","url":"https:\/\/www.guvi.in\/blog\/author\/vishalini\/"},"thumbnailURL":"https:\/\/www.guvi.in\/blog\/wp-content\/uploads\/2026\/06\/imbalanced-dataset-in-python-300x115.webp","_links":{"self":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/117243"}],"collection":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/comments?post=117243"}],"version-history":[{"count":2,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/117243\/revisions"}],"predecessor-version":[{"id":117770,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/117243\/revisions\/117770"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/media\/117769"}],"wp:attachment":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/media?parent=117243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/categories?post=117243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/tags?post=117243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}