
    ZPh                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
  e
dgdgeed	gd
gdgdd          d	d	ddd            Zd	S )z/Transform a dataset into an imbalanced dataset.    )Counter)Mapping   )RandomUnderSampler)check_sampling_strategy)validate_paramsz
array-likeNrandom_stateboolean)Xysampling_strategyr	   verboseT)prefer_skip_nested_validationF)r   r	   r   c                N   t          |          }t          |t                    st          |          rt	          ||dfi |}|rt          d|            t          |d|          }|                    | |          \  }	}
|rt          dt          |
                      |	|
fS )aT
  Turn a dataset into an imbalanced dataset with a specific sampling strategy.

    A simple toy dataset to visualize clustering and classification
    algorithms.

    Read more in the :ref:`User Guide <make_imbalanced>`.

    Parameters
    ----------
    X : {array-like, dataframe} of shape (n_samples, n_features)
        Matrix containing the data to be imbalanced.

    y : array-like of shape (n_samples,)
        Corresponding label for each sample in X.

    sampling_strategy : dict or callable,
        Ratio to use for resampling the data set.

        - When ``dict``, the keys correspond to the targeted classes. The
          values correspond to the desired number of samples for each targeted
          class.

        - When callable, function taking ``y`` and returns a ``dict``. The keys
          correspond to the targeted classes. The values correspond to the
          desired number of samples for each class.

    random_state : int, RandomState instance or None, default=None
        If int, random_state is the seed used by the random number generator;
        If RandomState instance, random_state is the random number generator;
        If None, the random number generator is the RandomState instance used
        by np.random.

    verbose : bool, default=False
        Show information regarding the sampling.

    **kwargs : dict
        Dictionary of additional keyword arguments to pass to
        ``sampling_strategy``.

    Returns
    -------
    X_resampled : {ndarray, dataframe} of shape (n_samples_new, n_features)
        The array containing the imbalanced data.

    y_resampled : ndarray of shape (n_samples_new)
        The corresponding label of `X_resampled`.

    Notes
    -----
    See
    :ref:`sphx_glr_auto_examples_applications_plot_multi_class_under_sampling.py`,
    :ref:`sphx_glr_auto_examples_datasets_plot_make_imbalance.py`, and
    :ref:`sphx_glr_auto_examples_api_plot_sampling_strategy_usage.py`.

    Examples
    --------
    >>> from collections import Counter
    >>> from sklearn.datasets import load_iris
    >>> from imblearn.datasets import make_imbalance

    >>> data = load_iris()
    >>> X, y = data.data, data.target
    >>> print(f'Distribution before imbalancing: {Counter(y)}')
    Distribution before imbalancing: Counter({0: 50, 1: 50, 2: 50})
    >>> X_res, y_res = make_imbalance(X, y,
    ...                               sampling_strategy={0: 10, 1: 20, 2: 30},
    ...                               random_state=42)
    >>> print(f'Distribution after imbalancing: {Counter(y_res)}')
    Distribution after imbalancing: Counter({2: 30, 1: 20, 0: 10})
    zunder-samplingz4The original target distribution in the dataset is: F)r   replacementr	   zMake the dataset imbalanced: )r   
isinstancer   callabler   printr   fit_resample)r   r   r   r	   r   kwargstarget_statssampling_strategy_rusX_resampledy_resampleds              \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/imblearn/datasets/_imbalance.pymake_imbalancer      s    f 1::L#W-- 
:K1L1L 
4q"2
 
6<
 
  US\SSTTT
,!  C
  #//155K FDgk.B.BDDEEE##    )__doc__collectionsr   collections.abcr   under_samplingr   utilsr   utils._sklearn_compatr   r   r    r   r   <module>r&      s    5 5        # # # # # # / / / / / / + + + + + + 3 3 3 3 3 3 ^^%x6'(;  #'	 	 	  $$[$ [$ [$ [$	 	[$ [$ [$r   