training_data_generation.ipynb 5.26 KB
Newer Older
1 2 3 4 5 6
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
7 8
    "**Training Data Generation** \\\n",
    "_Author: Joaquín Torres Bravo_"
9 10 11 12 13 14 15 16 17 18 19
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Set-up"
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
20
   "execution_count": null,
21 22 23 24 25 26
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.model_selection import train_test_split\n",
Joaquin Torres's avatar
Joaquin Torres committed
27 28
    "# Over/under sampling methods\n",
    "from imblearn.combine import SMOTETomek \n",
29 30 31 32 33
    "from imblearn.under_sampling import TomekLinks"
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
34
   "execution_count": null,
35 36 37 38
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load clean datasets\n",
Joaquin Torres's avatar
Joaquin Torres committed
39 40
    "df_pre = pd.read_csv('../01-EDA/results/datasets/pre_dataset.csv')\n",
    "df_post = pd.read_csv('../01-EDA/results/datasets/post_dataset.csv')"
41 42 43 44
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
45
   "execution_count": null,
46
   "metadata": {},
Joaquin Torres's avatar
Joaquin Torres committed
47
   "outputs": [],
48 49
   "source": [
    "# Creating a numpy matrix (X) without the target variable and a list with the target variable (y) \n",
Joaquin Torres's avatar
Joaquin Torres committed
50 51
    "X_pre, y_pre = df_pre.loc[:, df_pre.columns != \"Treatment_Outcome\"].to_numpy(), df_pre.Treatment_Outcome\n",
    "X_post, y_post = df_post.loc[:, df_post.columns != \"Treatment_Outcome\"].to_numpy(), df_post.Treatment_Outcome\n",
52 53 54 55 56 57
    "feat = np.delete(df_pre.columns.to_numpy(),-1) # Get labels and remove target \n",
    "\n",
    "print(X_pre.shape)\n",
    "print(X_post.shape)\n",
    "print(y_pre.shape)\n",
    "print(y_post.shape)\n",
Joaquin Torres's avatar
Joaquin Torres committed
58
    "print(feat)"
59 60 61 62 63 64 65 66 67
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training-Test Split & Sampling"
   ]
  },
Joaquin Torres's avatar
Joaquin Torres committed
68 69 70 71 72 73 74
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Pipelines 1 and 2: ORIG and ORIG_CW"
   ]
  },
75 76
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
77
   "execution_count": null,
78 79 80
   "metadata": {},
   "outputs": [],
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
81 82
    "# 90-10 split\n",
    "X_train_pre, X_test_pre, y_train_pre, y_test_pre = train_test_split(X_pre, y_pre, test_size=0.1, random_state=42) \n",
83 84 85 86 87
    "X_train_post, X_test_post, y_train_post, y_test_post = train_test_split(X_post, y_post, test_size=0.1, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
88
   "execution_count": null,
89 90 91 92
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save test data\n",
Joaquin Torres's avatar
Joaquin Torres committed
93 94 95 96
    "np.save('./results/pre/X_test_pre.npy', X_test_pre)\n",
    "np.save('./results/pre/y_test_pre.npy', y_test_pre)\n",
    "np.save('./results/post/X_test_post.npy', X_test_post)\n",
    "np.save('./results/post/y_test_post.npy', y_test_post)"
97 98 99 100
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
101
   "execution_count": null,
102 103 104 105
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save ORIGINAL training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
106 107 108 109
    "np.save('./results/pre/X_train_pre.npy', X_train_pre)\n",
    "np.save('./results/pre/y_train_pre.npy', y_train_pre)\n",
    "np.save('./results/post/X_train_post.npy', X_train_post)\n",
    "np.save('./results/post/y_train_post.npy', y_train_post)"
110 111
   ]
  },
Joaquin Torres's avatar
Joaquin Torres committed
112 113 114 115 116 117 118
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Pipeline 3: OVER"
   ]
  },
119 120
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
121
   "execution_count": null,
122 123 124
   "metadata": {},
   "outputs": [],
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
125
    "# OVERSAMPLED training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
126 127 128
    "smote_tomek = SMOTETomek()\n",
    "X_train_over_pre, y_train_over_pre = smote_tomek.fit_resample(X_train_pre, y_train_pre)\n",
    "X_train_over_post, y_train_over_post = smote_tomek.fit_resample(X_train_post, y_train_post)"
129 130 131 132
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
133
   "execution_count": null,
134 135 136 137
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save oversampled training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
138 139 140 141
    "np.save('./results/pre/X_train_over_pre.npy', X_train_over_pre)\n",
    "np.save('./results/pre/y_train_over_pre.npy', y_train_over_pre)\n",
    "np.save('./results/post/X_train_over_post.npy', X_train_over_post)\n",
    "np.save('./results/post/y_train_over_post.npy', y_train_over_post)"
142 143
   ]
  },
Joaquin Torres's avatar
Joaquin Torres committed
144 145 146 147 148 149 150
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Pipeline 4: UNDER"
   ]
  },
151 152
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
153
   "execution_count": null,
154 155 156
   "metadata": {},
   "outputs": [],
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
157
    "# 3. UNDERSAMPLING: TOMEK-LINKS \n",
158 159 160 161 162 163 164
    "tomek = TomekLinks()\n",
    "X_train_under_pre, y_train_under_pre = tomek.fit_resample(X_train_pre, y_train_pre)\n",
    "X_train_under_post, y_train_under_post = tomek.fit_resample(X_train_post, y_train_post)"
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
165
   "execution_count": null,
166 167 168 169
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save undersampled training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
170 171 172 173
    "np.save('./results/pre/X_train_under_pre.npy', X_train_under_pre)\n",
    "np.save('./results/pre/y_train_under_pre.npy', y_train_under_pre)\n",
    "np.save('./results/post/X_train_under_post.npy', X_train_under_post)\n",
    "np.save('./results/post/y_train_under_post.npy', y_train_under_post)"
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
   ]
  }
 ],
 "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.12.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}