Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save cordon-thiago/92816d447d1fd1779f9209e6f0152249 to your computer and use it in GitHub Desktop.
Save cordon-thiago/92816d447d1fd1779f9209e6f0152249 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Import libraries\n",
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"from sklearn import metrics\n",
"import xgboost as xgb\n",
"from functions import aux_functions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Import imbalanced dataset"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"hardbounce = pd.read_csv('datasets/hardbounce_featureEngineering.csv',sep=';')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"flgHardBounce_n\n",
"0 0.787886\n",
"1 0.212114\n",
"Name: __dummy__, dtype: float64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aux_functions.freqTable(\n",
" hardbounce['flgHardBounce_n']\n",
" ,\"\"\n",
" ,False\n",
" ,\"columns\"\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Build dummy variables"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"cat_vars=['emailDomain_cat','emailDomainPiece1','emailDomainPiece2']\n",
"\n",
"hardbounce_dummy = aux_functions.buildDummyVariables(hardbounce, cat_vars)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split dataset in Train / Test"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"x_vars = ['monthsSinceRegDate', 'age', 'percNumbersInEmailUser', 'emailUserCharQty', \n",
" 'emailDomain_cat_gmail.com', 'emailDomain_cat_hotmail.com',\n",
" 'emailDomainPiece1_com',\n",
" 'emailDomainPiece2_br', 'emailDomainPiece2_missing']\n",
"\n",
"X = hardbounce_dummy[x_vars]\n",
"\n",
"y = hardbounce_dummy['flgHardBounce_n']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(338377, 9)\n",
"(145019, 9)\n",
"(338377,)\n",
"(145019,)\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=123)\n",
"\n",
"print(X_train.shape)\n",
"print(X_test.shape)\n",
"\n",
"print(y_train.shape)\n",
"print(y_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Apply Extreme Gradient Boosting Model"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"import pickle\n",
"\n",
"xgb_model = pickle.load(open('models/xgb-classifier.sav', 'rb'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Probability Thresholds"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0, 1)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"from sklearn.metrics import precision_recall_curve\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Predict\n",
"y_scores_threshold = xgb_model.predict_proba(X_test)[:,1]\n",
"\n",
"precision, recall, thresholds = precision_recall_curve(y_test, y_scores_threshold) \n",
"\n",
"#retrieve probability of being 1(in second column of probs_y)\n",
"pr_auc = metrics.auc(recall, precision)\n",
"\n",
"plt.title(\"Precision-Recall vs Threshold Chart\")\n",
"plt.plot(thresholds, precision[: -1], \"b--\", label=\"Precision\")\n",
"plt.plot(thresholds, recall[: -1], \"r--\", label=\"Recall\")\n",
"plt.ylabel(\"Precision, Recall\")\n",
"plt.xlabel(\"Threshold\")\n",
"plt.legend(loc=\"lower left\")\n",
"plt.ylim([0,1])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# XGBoost Classifier predict\n",
"\n",
"threshold = 0.6\n",
"\n",
"y_pred = np.where(xgb_model.predict_proba(X_test)[:,1] > threshold, 1, 0)\n",
"y_scores = xgb_model.predict_proba(X_test)[:,1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### F1-score, precision and recall"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 1 0.91 0.83 0.87 114385\n",
" 0 0.52 0.68 0.59 30634\n",
"\n",
" accuracy 0.80 145019\n",
" macro avg 0.71 0.76 0.73 145019\n",
"weighted avg 0.82 0.80 0.81 145019\n",
"\n"
]
}
],
"source": [
"from sklearn.metrics import classification_report\n",
"target_names = hardbounce_dummy['flgHardBounce_n'].astype('str').unique()\n",
"print(classification_report(y_test, y_pred, target_names=target_names))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Accuracy"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 0.7986677607761742\n"
]
}
],
"source": [
"print(\"Accuracy:\",metrics.accuracy_score(y_test, y_pred))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Plot Confusion Matrix"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Normalized confusion matrix\n",
"[[0.83023998 0.16976002]\n",
" [0.31922047 0.68077953]]\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f73c8bfa128>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"class_names = hardbounce_dummy['flgHardBounce_n'].astype('str').unique()\n",
"aux_functions.plot_confusion_matrix(y_test, y_pred, classes=class_names, cmap=plt.cm.Blues, normalize=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### AVG Precision Score"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AVG Precision Score: 0.5882624906424684\n"
]
}
],
"source": [
"print(\"AVG Precision Score: \", metrics.average_precision_score(y_test, y_scores))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### AUC"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AUC: 0.8571\n"
]
}
],
"source": [
"auc_metric = metrics.roc_auc_score(y_test, y_scores)\n",
"print(\"AUC: %.4f\" % auc_metric)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ROC Curve"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"AUC: 0.8571\n"
]
},
{
"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": [
"fpr, tpr, auc_thresholds = metrics.roc_curve(y_test, y_scores)\n",
"print(\"AUC: %.4f\" % metrics.auc(fpr, tpr)) # AUC of ROC\n",
"aux_functions.plot_roc_curve(fpr, tpr, 'recall_optimized')"
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment