

.. _sphx_glr_auto_examples_datasets_plot_make_imbalance.py:


===========================
make_imbalance function
===========================

An illustration of the make_imbalance function





.. image:: /auto_examples/datasets/images/sphx_glr_plot_make_imbalance_001.png
    :align: center





.. code-block:: python


    # Authors: Dayvid Oliveira
    #          Christos Aridas
    #          Guillaume Lemaitre <g.lemaitre58@gmail.com>
    # License: MIT

    from collections import Counter

    import matplotlib.pyplot as plt
    from sklearn.datasets import make_moons

    from imblearn.datasets import make_imbalance

    print(__doc__)


    def plot_decoration(ax):
        ax.spines['top'].set_visible(False)
        ax.spines['right'].set_visible(False)
        ax.get_xaxis().tick_bottom()
        ax.get_yaxis().tick_left()
        ax.spines['left'].set_position(('outward', 10))
        ax.spines['bottom'].set_position(('outward', 10))
        ax.set_xlim([-4, 4])


    # Generate the dataset
    X, y = make_moons(n_samples=200, shuffle=True, noise=0.5, random_state=10)

    # Two subplots, unpack the axes array immediately
    f, axs = plt.subplots(2, 3)

    axs = [a for ax in axs for a in ax]

    axs[0].scatter(X[y == 0, 0], X[y == 0, 1], label="Class #0", alpha=0.5)
    axs[0].scatter(X[y == 1, 0], X[y == 1, 1], label="Class #1", alpha=0.5)
    axs[0].set_title('Original set')
    plot_decoration(axs[0])


    def ratio_func(y, multiplier, minority_class):
        target_stats = Counter(y)
        return {minority_class: int(multiplier * target_stats[minority_class])}


    multipliers = [0.9, 0.75, 0.5, 0.25, 0.1]
    for i, multiplier in enumerate(multipliers, start=1):
        ax = axs[i]

        X_, y_ = make_imbalance(X, y, ratio=ratio_func,
                                **{"multiplier": multiplier,
                                   "minority_class": 1})
        ax.scatter(X_[y_ == 0, 0], X_[y_ == 0, 1], label="Class #0", alpha=0.5)
        ax.scatter(X_[y_ == 1, 0], X_[y_ == 1, 1], label="Class #1", alpha=0.5)
        ax.set_title('ratio = {}'.format(multiplier))
        plot_decoration(ax)

    plt.tight_layout()
    plt.show()

**Total running time of the script:** ( 0 minutes  0.482 seconds)



.. container:: sphx-glr-footer


  .. container:: sphx-glr-download

     :download:`Download Python source code: plot_make_imbalance.py <plot_make_imbalance.py>`



  .. container:: sphx-glr-download

     :download:`Download Jupyter notebook: plot_make_imbalance.ipynb <plot_make_imbalance.ipynb>`

.. rst-class:: sphx-glr-signature

    `Generated by Sphinx-Gallery <https://sphinx-gallery.readthedocs.io>`_
