code: def test_imbalanced_target():
      df = pd.DataFrame(
          {
              "system_record_id": range(2000),
              "phone": np.random.randint(
                  10000000000, 99999999999, 2000
              ),
              "f": ["123"] * 2000,
              "target": ["a"] * 100
              + ["b"] * 400
              + ["c"] * 500
              + ["d"] * 1000,
          }
      )
      dataset = Dataset("test123", df=df)  # type: ignore
      dataset.meaning_types = {
          "system_record_id": FileColumnMeaningType.SYSTEM_RECORD_ID,
          "phone": FileColumnMeaningType.MSISDN,
          "f": FileColumnMeaningType.FEATURE,
          "target": FileColumnMeaningType.TARGET,
      }
      dataset.task_type = ModelTaskType.MULTICLASS
      dataset._Dataset__resample()
      assert len(dataset) == 400
      value_counts = dataset.data["target"].value_counts()
      assert len(value_counts) == 4
      for label in dataset.data["target"].unique():
          assert value_counts[label] == 100
  
imports: import ipaddress
  import random
  from datetime import date, datetime
  import numpy
  import pandas
  import pytest
  from pandas.testing import assert_frame_equal
  from upgini import Dataset, FileColumnMeaningType
  from upgini.errors import ValidationError
  from upgini.metadata import ModelTaskType, SearchKey
  from upgini.resource_bundle import bundle
  from upgini.utils.datetime_utils import DateTimeSearchKeyConverter
  from upgini.utils.email_utils import EmailSearchKeyConverter
  from upgini.utils.features_validator import FeaturesValidator
  from upgini.utils.warning_counter import WarningCounter
label_desc: Use image node_id 13 for calling a global function with example usage: test_imbalanced_target() without return types