{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# How to Fix an Imbalanced Dataset\n",
    "\n",
    "- [Article](https://towardsdatascience.com/having-an-imbalanced-dataset-here-is-how-you-can-solve-it-1640568947eb)\n",
    "- [Credit Card Fraud Prediction with XGBoost](https://github.com/wmlba/innovate2019/blob/master/Credit_Card_Fraud_Detection.ipynb)\n",
    "- [Credit Card Fraud Prediction - Kaggle Kernel](https://www.kaggle.com/janiobachmann/credit-fraud-dealing-with-imbalanced-datasets)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. Resampling\n",
    "\n",
    "- Oversampling\n",
    "    - SMOTE\n",
    "- Undersampling\n",
    "\n",
    "### 2. Ensembling Methods\n",
    "\n",
    "- BalancedBaggingClassifier\n",
    "\n",
    "![resampling](img/resampling.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Demo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from imblearn.over_sampling import SMOTE\n",
    "from io import BytesIO\n",
    "from matplotlib import pyplot as plt\n",
    "from urllib import request\n",
    "from zipfile import ZipFile\n",
    "import pandas as pd\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# download data\n",
    "r = request.urlopen(\"https://github.com/wmlba/innovate2019/raw/master/creditcardfraud.zip\").read()\n",
    "file = ZipFile(BytesIO(r))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Time</th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "      <th>V3</th>\n",
       "      <th>V4</th>\n",
       "      <th>V5</th>\n",
       "      <th>V6</th>\n",
       "      <th>V7</th>\n",
       "      <th>V8</th>\n",
       "      <th>V9</th>\n",
       "      <th>...</th>\n",
       "      <th>V21</th>\n",
       "      <th>V22</th>\n",
       "      <th>V23</th>\n",
       "      <th>V24</th>\n",
       "      <th>V25</th>\n",
       "      <th>V26</th>\n",
       "      <th>V27</th>\n",
       "      <th>V28</th>\n",
       "      <th>Amount</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.359807</td>\n",
       "      <td>-0.072781</td>\n",
       "      <td>2.536347</td>\n",
       "      <td>1.378155</td>\n",
       "      <td>-0.338321</td>\n",
       "      <td>0.462388</td>\n",
       "      <td>0.239599</td>\n",
       "      <td>0.098698</td>\n",
       "      <td>0.363787</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.018307</td>\n",
       "      <td>0.277838</td>\n",
       "      <td>-0.110474</td>\n",
       "      <td>0.066928</td>\n",
       "      <td>0.128539</td>\n",
       "      <td>-0.189115</td>\n",
       "      <td>0.133558</td>\n",
       "      <td>-0.021053</td>\n",
       "      <td>149.62</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.191857</td>\n",
       "      <td>0.266151</td>\n",
       "      <td>0.166480</td>\n",
       "      <td>0.448154</td>\n",
       "      <td>0.060018</td>\n",
       "      <td>-0.082361</td>\n",
       "      <td>-0.078803</td>\n",
       "      <td>0.085102</td>\n",
       "      <td>-0.255425</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.225775</td>\n",
       "      <td>-0.638672</td>\n",
       "      <td>0.101288</td>\n",
       "      <td>-0.339846</td>\n",
       "      <td>0.167170</td>\n",
       "      <td>0.125895</td>\n",
       "      <td>-0.008983</td>\n",
       "      <td>0.014724</td>\n",
       "      <td>2.69</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.358354</td>\n",
       "      <td>-1.340163</td>\n",
       "      <td>1.773209</td>\n",
       "      <td>0.379780</td>\n",
       "      <td>-0.503198</td>\n",
       "      <td>1.800499</td>\n",
       "      <td>0.791461</td>\n",
       "      <td>0.247676</td>\n",
       "      <td>-1.514654</td>\n",
       "      <td>...</td>\n",
       "      <td>0.247998</td>\n",
       "      <td>0.771679</td>\n",
       "      <td>0.909412</td>\n",
       "      <td>-0.689281</td>\n",
       "      <td>-0.327642</td>\n",
       "      <td>-0.139097</td>\n",
       "      <td>-0.055353</td>\n",
       "      <td>-0.059752</td>\n",
       "      <td>378.66</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.966272</td>\n",
       "      <td>-0.185226</td>\n",
       "      <td>1.792993</td>\n",
       "      <td>-0.863291</td>\n",
       "      <td>-0.010309</td>\n",
       "      <td>1.247203</td>\n",
       "      <td>0.237609</td>\n",
       "      <td>0.377436</td>\n",
       "      <td>-1.387024</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.108300</td>\n",
       "      <td>0.005274</td>\n",
       "      <td>-0.190321</td>\n",
       "      <td>-1.175575</td>\n",
       "      <td>0.647376</td>\n",
       "      <td>-0.221929</td>\n",
       "      <td>0.062723</td>\n",
       "      <td>0.061458</td>\n",
       "      <td>123.50</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-1.158233</td>\n",
       "      <td>0.877737</td>\n",
       "      <td>1.548718</td>\n",
       "      <td>0.403034</td>\n",
       "      <td>-0.407193</td>\n",
       "      <td>0.095921</td>\n",
       "      <td>0.592941</td>\n",
       "      <td>-0.270533</td>\n",
       "      <td>0.817739</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.009431</td>\n",
       "      <td>0.798278</td>\n",
       "      <td>-0.137458</td>\n",
       "      <td>0.141267</td>\n",
       "      <td>-0.206010</td>\n",
       "      <td>0.502292</td>\n",
       "      <td>0.219422</td>\n",
       "      <td>0.215153</td>\n",
       "      <td>69.99</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Time        V1        V2        V3        V4        V5        V6        V7  \\\n",
       "0   0.0 -1.359807 -0.072781  2.536347  1.378155 -0.338321  0.462388  0.239599   \n",
       "1   0.0  1.191857  0.266151  0.166480  0.448154  0.060018 -0.082361 -0.078803   \n",
       "2   1.0 -1.358354 -1.340163  1.773209  0.379780 -0.503198  1.800499  0.791461   \n",
       "3   1.0 -0.966272 -0.185226  1.792993 -0.863291 -0.010309  1.247203  0.237609   \n",
       "4   2.0 -1.158233  0.877737  1.548718  0.403034 -0.407193  0.095921  0.592941   \n",
       "\n",
       "         V8        V9  ...       V21       V22       V23       V24       V25  \\\n",
       "0  0.098698  0.363787  ... -0.018307  0.277838 -0.110474  0.066928  0.128539   \n",
       "1  0.085102 -0.255425  ... -0.225775 -0.638672  0.101288 -0.339846  0.167170   \n",
       "2  0.247676 -1.514654  ...  0.247998  0.771679  0.909412 -0.689281 -0.327642   \n",
       "3  0.377436 -1.387024  ... -0.108300  0.005274 -0.190321 -1.175575  0.647376   \n",
       "4 -0.270533  0.817739  ... -0.009431  0.798278 -0.137458  0.141267 -0.206010   \n",
       "\n",
       "        V26       V27       V28  Amount  Class  \n",
       "0 -0.189115  0.133558 -0.021053  149.62      0  \n",
       "1  0.125895 -0.008983  0.014724    2.69      0  \n",
       "2 -0.139097 -0.055353 -0.059752  378.66      0  \n",
       "3 -0.221929  0.062723  0.061458  123.50      0  \n",
       "4  0.502292  0.219422  0.215153   69.99      0  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "creditcard_csv = file.open(\"creditcard.csv\")\n",
    "credit_df = pd.read_csv(creditcard_csv)\n",
    "credit_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot('Class', data=credit_df)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Undersampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Shuffle the Dataset.\n",
    "shuffled_df = credit_df.sample(frac=1,random_state=4)\n",
    "\n",
    "# Put all the fraud class in a separate dataset.\n",
    "fraud_df = shuffled_df.loc[shuffled_df['Class'] == 1]\n",
    "\n",
    "#Randomly select 492 observations from the non-fraud (majority class)\n",
    "non_fraud_df = shuffled_df.loc[shuffled_df['Class'] == 0].sample(n=492,random_state=42)\n",
    "\n",
    "# Concatenate both dataframes again\n",
    "normalized_df = pd.concat([fraud_df, non_fraud_df])\n",
    "\n",
    "#plot the dataset after the undersampling\n",
    "plt.figure(figsize=(8, 8))\n",
    "sns.countplot('Class', data=normalized_df)\n",
    "plt.title('Balanced Classes')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Oversampling - SMOTE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Time</th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "      <th>V3</th>\n",
       "      <th>V4</th>\n",
       "      <th>V5</th>\n",
       "      <th>V6</th>\n",
       "      <th>V7</th>\n",
       "      <th>V8</th>\n",
       "      <th>V9</th>\n",
       "      <th>...</th>\n",
       "      <th>V21</th>\n",
       "      <th>V22</th>\n",
       "      <th>V23</th>\n",
       "      <th>V24</th>\n",
       "      <th>V25</th>\n",
       "      <th>V26</th>\n",
       "      <th>V27</th>\n",
       "      <th>V28</th>\n",
       "      <th>Amount</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.359807</td>\n",
       "      <td>-0.072781</td>\n",
       "      <td>2.536347</td>\n",
       "      <td>1.378155</td>\n",
       "      <td>-0.338321</td>\n",
       "      <td>0.462388</td>\n",
       "      <td>0.239599</td>\n",
       "      <td>0.098698</td>\n",
       "      <td>0.363787</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.018307</td>\n",
       "      <td>0.277838</td>\n",
       "      <td>-0.110474</td>\n",
       "      <td>0.066928</td>\n",
       "      <td>0.128539</td>\n",
       "      <td>-0.189115</td>\n",
       "      <td>0.133558</td>\n",
       "      <td>-0.021053</td>\n",
       "      <td>149.62</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.191857</td>\n",
       "      <td>0.266151</td>\n",
       "      <td>0.166480</td>\n",
       "      <td>0.448154</td>\n",
       "      <td>0.060018</td>\n",
       "      <td>-0.082361</td>\n",
       "      <td>-0.078803</td>\n",
       "      <td>0.085102</td>\n",
       "      <td>-0.255425</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.225775</td>\n",
       "      <td>-0.638672</td>\n",
       "      <td>0.101288</td>\n",
       "      <td>-0.339846</td>\n",
       "      <td>0.167170</td>\n",
       "      <td>0.125895</td>\n",
       "      <td>-0.008983</td>\n",
       "      <td>0.014724</td>\n",
       "      <td>2.69</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.358354</td>\n",
       "      <td>-1.340163</td>\n",
       "      <td>1.773209</td>\n",
       "      <td>0.379780</td>\n",
       "      <td>-0.503198</td>\n",
       "      <td>1.800499</td>\n",
       "      <td>0.791461</td>\n",
       "      <td>0.247676</td>\n",
       "      <td>-1.514654</td>\n",
       "      <td>...</td>\n",
       "      <td>0.247998</td>\n",
       "      <td>0.771679</td>\n",
       "      <td>0.909412</td>\n",
       "      <td>-0.689281</td>\n",
       "      <td>-0.327642</td>\n",
       "      <td>-0.139097</td>\n",
       "      <td>-0.055353</td>\n",
       "      <td>-0.059752</td>\n",
       "      <td>378.66</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.966272</td>\n",
       "      <td>-0.185226</td>\n",
       "      <td>1.792993</td>\n",
       "      <td>-0.863291</td>\n",
       "      <td>-0.010309</td>\n",
       "      <td>1.247203</td>\n",
       "      <td>0.237609</td>\n",
       "      <td>0.377436</td>\n",
       "      <td>-1.387024</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.108300</td>\n",
       "      <td>0.005274</td>\n",
       "      <td>-0.190321</td>\n",
       "      <td>-1.175575</td>\n",
       "      <td>0.647376</td>\n",
       "      <td>-0.221929</td>\n",
       "      <td>0.062723</td>\n",
       "      <td>0.061458</td>\n",
       "      <td>123.50</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-1.158233</td>\n",
       "      <td>0.877737</td>\n",
       "      <td>1.548718</td>\n",
       "      <td>0.403034</td>\n",
       "      <td>-0.407193</td>\n",
       "      <td>0.095921</td>\n",
       "      <td>0.592941</td>\n",
       "      <td>-0.270533</td>\n",
       "      <td>0.817739</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.009431</td>\n",
       "      <td>0.798278</td>\n",
       "      <td>-0.137458</td>\n",
       "      <td>0.141267</td>\n",
       "      <td>-0.206010</td>\n",
       "      <td>0.502292</td>\n",
       "      <td>0.219422</td>\n",
       "      <td>0.215153</td>\n",
       "      <td>69.99</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Time        V1        V2        V3        V4        V5        V6        V7  \\\n",
       "0   0.0 -1.359807 -0.072781  2.536347  1.378155 -0.338321  0.462388  0.239599   \n",
       "1   0.0  1.191857  0.266151  0.166480  0.448154  0.060018 -0.082361 -0.078803   \n",
       "2   1.0 -1.358354 -1.340163  1.773209  0.379780 -0.503198  1.800499  0.791461   \n",
       "3   1.0 -0.966272 -0.185226  1.792993 -0.863291 -0.010309  1.247203  0.237609   \n",
       "4   2.0 -1.158233  0.877737  1.548718  0.403034 -0.407193  0.095921  0.592941   \n",
       "\n",
       "         V8        V9  ...       V21       V22       V23       V24       V25  \\\n",
       "0  0.098698  0.363787  ... -0.018307  0.277838 -0.110474  0.066928  0.128539   \n",
       "1  0.085102 -0.255425  ... -0.225775 -0.638672  0.101288 -0.339846  0.167170   \n",
       "2  0.247676 -1.514654  ...  0.247998  0.771679  0.909412 -0.689281 -0.327642   \n",
       "3  0.377436 -1.387024  ... -0.108300  0.005274 -0.190321 -1.175575  0.647376   \n",
       "4 -0.270533  0.817739  ... -0.009431  0.798278 -0.137458  0.141267 -0.206010   \n",
       "\n",
       "        V26       V27       V28  Amount  Class  \n",
       "0 -0.189115  0.133558 -0.021053  149.62      0  \n",
       "1  0.125895 -0.008983  0.014724    2.69      0  \n",
       "2 -0.139097 -0.055353 -0.059752  378.66      0  \n",
       "3 -0.221929  0.062723  0.061458  123.50      0  \n",
       "4  0.502292  0.219422  0.215153   69.99      0  \n",
       "\n",
       "[5 rows x 31 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Resample the minority class. You can change the strategy to 'auto' if you are not sure.\n",
    "sm = SMOTE(sampling_strategy='minority', random_state=7)\n",
    "\n",
    "# Fit the model to generate the data.\n",
    "oversampled_trainX, oversampled_trainY = sm.fit_sample(credit_df.drop('Class', axis=1), credit_df['Class'])\n",
    "oversampled_train = pd.concat([pd.DataFrame(oversampled_trainX),  pd.DataFrame(oversampled_trainY)], axis=1)\n",
    "\n",
    "oversampled_train.columns = credit_df.columns\n",
    "oversampled_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Before Resampling:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Sample figsize in inches\n",
    "fig, ax = plt.subplots(figsize=(20,10))         \n",
    "# Imbalanced DataFrame Correlation\n",
    "corr = credit_df.corr()\n",
    "sns.heatmap(corr, cmap='YlGnBu', annot_kws={'size':30}, ax=ax)\n",
    "ax.set_title(\"Imbalanced Correlation Matrix\", fontsize=14)\n",
    "ax.set(adjustable='box', aspect='equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**After Resampling:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x720 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Sample figsize in inches\n",
    "fig, ax = plt.subplots(figsize=(20,10))         \n",
    "# Imbalanced DataFrame Correlation\n",
    "corr = oversampled_train.corr()\n",
    "sns.heatmap(corr, cmap='YlGnBu', annot_kws={'size':30}, ax=ax)\n",
    "ax.set_title(\"Imbalanced Correlation Matrix\", fontsize=14)\n",
    "ax.set(adjustable='box', aspect='equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the feature correlation is much more obvious now. Before fixing the imbalance problem, most of the features did not show any correlation to Y which would definitely have impacted the performance of the model. Since the feature correlation really matters to the overall model’s performance, it is important to fix the imbalance as it will also impact the ML model performance."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Ensemble methods - BalancedBaggingClassifier\n",
    "\n",
    "We can use `BalancedBaggingClassifier` from `imblearn` library. It allows the resampling of each subset of the dataset before training each estimator of the ensemble."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from imblearn.ensemble import BalancedBaggingClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "# Create an object of the classifier.\n",
    "bbc = BalancedBaggingClassifier(base_estimator=DecisionTreeClassifier(),\n",
    "                                sampling_strategy='auto',\n",
    "                                replacement=False,\n",
    "                                random_state=0)\n",
    "\n",
    "y_train = credit_df['Class']\n",
    "X_train = credit_df.drop(['Class'], axis=1, inplace=False)\n",
    "\n",
    "# Train the classifier.\n",
    "bbc.fit(X_train, y_train)\n",
    "preds = bbc.predict(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
