gen_train_data.ipynb 6.04 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": 1,
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": 2,
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('../EDA/output/datasets/pre_dataset.csv')\n",
    "df_post = pd.read_csv('../EDA/output/datasets/post_dataset.csv')"
41 42 43 44
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
45
   "execution_count": 3,
46
   "metadata": {},
Joaquin Torres's avatar
Joaquin Torres committed
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(22861, 39)\n",
      "(10677, 39)\n",
      "(22861,)\n",
      "(10677,)\n",
      "['Ed_Not_Complete_Primary' 'Ed_Primary' 'Ed_Secondary'\n",
      " 'Ed_Secondary_Technical' 'Ed_Tertiary' 'Social_Protection'\n",
      " 'JobIn_Unstable' 'JobIn_Stable' 'JobIn_Unemployed' 'Hous_Institutional'\n",
      " 'Hous_Stable' 'Hous_Unstable' 'Early_Alterations' 'SocInc_Family_Friends'\n",
      " 'SocInc_Alone' 'SocInc_Instit' 'Risk_Stigma' 'Structural_Conflict' 'Age'\n",
      " 'Sex' 'Num_Children' 'Smoking' 'Bio_Vulner' 'Opiods_DXCIE'\n",
      " 'Cannabis_DXCIE' 'BZD_DXCIE' 'Cocaine_DXCIE' 'Hallucin_DXCIE'\n",
      " 'Tobacco_DXCIE' 'Freq_1dpw' 'Freq_2-3dpw' 'Freq_4-6dpw' 'Freq_l1dpw'\n",
      " 'Freq_None' 'Freq_Everyday' 'Years_Drug_Use' 'Other_Psychiatric_DX'\n",
      " 'Previous_Treatments' 'Treatment_Adherence']\n"
     ]
    }
   ],
69 70
   "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
71 72
    "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",
73 74 75 76 77 78
    "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
79
    "print(feat)"
80 81 82 83 84 85 86 87 88
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Training-Test Split & Sampling"
   ]
  },
Joaquin Torres's avatar
Joaquin Torres committed
89 90 91 92 93 94 95
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Pipelines 1 and 2: ORIG and ORIG_CW"
   ]
  },
96 97
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
98
   "execution_count": null,
99 100 101
   "metadata": {},
   "outputs": [],
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
102 103
    "# 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",
104 105 106 107 108
    "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
109
   "execution_count": null,
110 111 112 113
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save test data\n",
Joaquin Torres's avatar
Joaquin Torres committed
114 115 116 117
    "np.save('./output/pre/X_test_pre.npy', X_test_pre)\n",
    "np.save('./output/pre/y_test_pre.npy', y_test_pre)\n",
    "np.save('./output/post/X_test_post.npy', X_test_post)\n",
    "np.save('./output/post/y_test_post.npy', y_test_post)"
118 119 120 121
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
122
   "execution_count": null,
123 124 125 126
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save ORIGINAL training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
127 128 129 130
    "np.save('./output/pre/X_train_pre.npy', X_train_pre)\n",
    "np.save('./output/pre/y_train_pre.npy', y_train_pre)\n",
    "np.save('./output/post/X_train_post.npy', X_train_post)\n",
    "np.save('./output/post/y_train_post.npy', y_train_post)"
131 132
   ]
  },
Joaquin Torres's avatar
Joaquin Torres committed
133 134 135 136 137 138 139
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Pipeline 3: OVER"
   ]
  },
140 141
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
142
   "execution_count": null,
143 144 145
   "metadata": {},
   "outputs": [],
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
146
    "# OVERSAMPLED training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
147 148 149
    "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)"
150 151 152 153
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
154
   "execution_count": null,
155 156 157 158
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save oversampled training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
159 160 161 162
    "np.save('./output/pre/X_train_over_pre.npy', X_train_over_pre)\n",
    "np.save('./output/pre/y_train_over_pre.npy', y_train_over_pre)\n",
    "np.save('./output/post/X_train_over_post.npy', X_train_over_post)\n",
    "np.save('./output/post/y_train_over_post.npy', y_train_over_post)"
163 164 165 166
   ]
  },
  {
   "cell_type": "code",
Joaquin Torres's avatar
Joaquin Torres committed
167
   "execution_count": null,
168 169 170
   "metadata": {},
   "outputs": [],
   "source": [
Joaquin Torres's avatar
Joaquin Torres committed
171
    "# 3. UNDERSAMPLING: TOMEK-LINKS \n",
172 173 174 175 176 177 178
    "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
179
   "execution_count": null,
180 181 182 183
   "metadata": {},
   "outputs": [],
   "source": [
    "# Save undersampled training data\n",
Joaquin Torres's avatar
Joaquin Torres committed
184 185 186 187
    "np.save('./output/pre/X_train_under_pre.npy', X_train_under_pre)\n",
    "np.save('./output/pre/y_train_under_pre.npy', y_train_under_pre)\n",
    "np.save('./output/post/X_train_under_post.npy', X_train_under_post)\n",
    "np.save('./output/post/y_train_under_post.npy', y_train_under_post)"
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
   ]
  }
 ],
 "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
}