Created
July 21, 2021 01:01
-
-
Save audhiaprilliant/439bf65fc8d3c73c26568dc08b7ae3eb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# Optimal Threshold for Imbalanced Classification" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### Audhi Aprilliant" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "**Source:** https://machinelearningmastery.com/threshold-moving-for-imbalanced-classification/" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "---" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Import modules" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Import module for data manipulation\n", | |
| "import pandas as pd\n", | |
| "# Import module for linear algebra\n", | |
| "import numpy as np\n", | |
| "# Import module for data simulation\n", | |
| "from sklearn.datasets import make_classification # Create a synthetic dataframe\n", | |
| "from sklearn.linear_model import LogisticRegression # Classification model\n", | |
| "from sklearn.model_selection import train_test_split # Split the dataframe\n", | |
| "from sklearn.metrics import roc_curve # Calculate the ROC curve\n", | |
| "from sklearn.metrics import precision_recall_curve # Calculate the Precision-Recall curve\n", | |
| "from sklearn.metrics import f1_score # Calculate the F-score\n", | |
| "# Import module for data visualization\n", | |
| "from plotnine import *\n", | |
| "import plotnine" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Simulation" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Generate the dataset\n", | |
| "X, y = make_classification(n_samples = 10000, n_features = 2, n_redundant = 0,\n", | |
| " n_clusters_per_class = 1, weights = [0.99], flip_y = 0, random_state = 0)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Data partitioning\n", | |
| "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0, stratify=y)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "LogisticRegression(random_state=0)" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Fit the model\n", | |
| "reglogModel = LogisticRegression(random_state = 0)\n", | |
| "reglogModel.fit(X_train, y_train)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Predict the probabilities\n", | |
| "y_pred = reglogModel.predict_proba(X_test)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Get the probabilities for positive class\n", | |
| "y_pred = y_pred[:, 1]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### ROC curve" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Create the ROC curve\n", | |
| "fpr, tpr, thresholds = roc_curve(y_test, y_pred)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "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>FPR</th>\n", | |
| " <th>TPR</th>\n", | |
| " <th>Threshold</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.00</td>\n", | |
| " <td>2.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.02</td>\n", | |
| " <td>1.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.56</td>\n", | |
| " <td>0.401504</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>0.000202</td>\n", | |
| " <td>0.56</td>\n", | |
| " <td>0.362945</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>0.000202</td>\n", | |
| " <td>0.58</td>\n", | |
| " <td>0.350252</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " FPR TPR Threshold\n", | |
| "0 0.000000 0.00 2.000000\n", | |
| "1 0.000000 0.02 1.000000\n", | |
| "2 0.000000 0.56 0.401504\n", | |
| "3 0.000202 0.56 0.362945\n", | |
| "4 0.000202 0.58 0.350252" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Plot the ROC curve\n", | |
| "df_fpr_tpr = pd.DataFrame({'FPR':fpr, 'TPR':tpr, 'Threshold':thresholds})\n", | |
| "df_fpr_tpr.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 800x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<ggplot: (142215149309)>" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "plotnine.options.figure_size = (8, 4.8)\n", | |
| "(\n", | |
| " ggplot(data = df_fpr_tpr)+\n", | |
| " geom_point(aes(x = 'FPR',\n", | |
| " y = 'TPR'),\n", | |
| " size = 0.4)+\n", | |
| " geom_line(aes(x = 'FPR',\n", | |
| " y = 'TPR'))+\n", | |
| " labs(title = 'ROC Curve')+\n", | |
| " xlab('False Positive Rate (FPR)')+\n", | |
| " ylab('True Positive Rate (TPR)')+\n", | |
| " theme_minimal()\n", | |
| ")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### ROC curve - G-mean" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Calculate the G-mean\n", | |
| "gmean = np.sqrt(tpr * (1 - fpr))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Best Threshold: 0.0131 with G-Mean: 0.8525\n", | |
| "FPR: 0.0683, TPR: 0.78\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Find the optimal threshold\n", | |
| "index = np.argmax(gmean)\n", | |
| "thresholdOpt = round(thresholds[index], ndigits = 4)\n", | |
| "gmeanOpt = round(gmean[index], ndigits = 4)\n", | |
| "fprOpt = round(fpr[index], ndigits = 4)\n", | |
| "tprOpt = round(tpr[index], ndigits = 4)\n", | |
| "print('Best Threshold: {} with G-Mean: {}'.format(thresholdOpt, gmeanOpt))\n", | |
| "print('FPR: {}, TPR: {}'.format(fprOpt, tprOpt))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 800x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<ggplot: (142215547386)>" | |
| ] | |
| }, | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "plotnine.options.figure_size = (8, 4.8)\n", | |
| "(\n", | |
| " ggplot(data = df_fpr_tpr)+\n", | |
| " geom_point(aes(x = 'FPR',\n", | |
| " y = 'TPR'),\n", | |
| " size = 0.4)+\n", | |
| " # Best threshold\n", | |
| " geom_point(aes(x = fprOpt,\n", | |
| " y = tprOpt),\n", | |
| " color = '#981220',\n", | |
| " size = 4)+\n", | |
| " geom_line(aes(x = 'FPR',\n", | |
| " y = 'TPR'))+\n", | |
| " geom_text(aes(x = fprOpt,\n", | |
| " y = tprOpt),\n", | |
| " label = 'Optimal threshold \\n for class: {}'.format(thresholdOpt),\n", | |
| " nudge_x = 0.14,\n", | |
| " nudge_y = -0.10,\n", | |
| " size = 10,\n", | |
| " fontstyle = 'italic')+\n", | |
| " labs(title = 'ROC Curve')+\n", | |
| " xlab('False Positive Rate (FPR)')+\n", | |
| " ylab('True Positive Rate (TPR)')+\n", | |
| " theme_minimal()\n", | |
| ")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### ROC curve - Youden's J statistic" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Calculate the Youden's J statistic\n", | |
| "youdenJ = tpr - fpr" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Best Threshold: 0.0131 with Youden J statistic: 0.8525\n", | |
| "FPR: 0.0683, TPR: 0.78\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Find the optimal threshold\n", | |
| "index = np.argmax(youdenJ)\n", | |
| "thresholdOpt = round(thresholds[index], ndigits = 4)\n", | |
| "youdenJOpt = round(gmean[index], ndigits = 4)\n", | |
| "fprOpt = round(fpr[index], ndigits = 4)\n", | |
| "tprOpt = round(tpr[index], ndigits = 4)\n", | |
| "print('Best Threshold: {} with Youden J statistic: {}'.format(thresholdOpt, youdenJOpt))\n", | |
| "print('FPR: {}, TPR: {}'.format(fprOpt, tprOpt))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 800x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<ggplot: (142215300997)>" | |
| ] | |
| }, | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "plotnine.options.figure_size = (8, 4.8)\n", | |
| "(\n", | |
| " ggplot(data = df_fpr_tpr)+\n", | |
| " geom_point(aes(x = 'FPR',\n", | |
| " y = 'TPR'),\n", | |
| " size = 0.4)+\n", | |
| " # Best threshold\n", | |
| " geom_point(aes(x = fprOpt,\n", | |
| " y = tprOpt),\n", | |
| " color = '#981220',\n", | |
| " size = 4)+\n", | |
| " geom_line(aes(x = 'FPR',\n", | |
| " y = 'TPR'))+\n", | |
| " # Annotate the text\n", | |
| " geom_text(aes(x = fprOpt,\n", | |
| " y = tprOpt),\n", | |
| " label = 'Optimal threshold \\n for class: {}'.format(thresholdOpt),\n", | |
| " nudge_x = 0.14,\n", | |
| " nudge_y = -0.10,\n", | |
| " size = 10,\n", | |
| " fontstyle = 'italic')+\n", | |
| " labs(title = 'ROC Curve')+\n", | |
| " xlab('False Positive Rate (FPR)')+\n", | |
| " ylab('True Positive Rate (TPR)')+\n", | |
| " theme_minimal()\n", | |
| ")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Precision-Recall curve" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Create the Precision-Recall curve\n", | |
| "precision, recall, thresholds = precision_recall_curve(y_test, y_pred)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "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>Precision</th>\n", | |
| " <th>Recall</th>\n", | |
| " <th>Threshold</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>0.010502</td>\n", | |
| " <td>1.00</td>\n", | |
| " <td>0.000042</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>0.010294</td>\n", | |
| " <td>0.98</td>\n", | |
| " <td>0.000042</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>0.010296</td>\n", | |
| " <td>0.98</td>\n", | |
| " <td>0.000042</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>0.010298</td>\n", | |
| " <td>0.98</td>\n", | |
| " <td>0.000042</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>0.010301</td>\n", | |
| " <td>0.98</td>\n", | |
| " <td>0.000042</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Precision Recall Threshold\n", | |
| "0 0.010502 1.00 0.000042\n", | |
| "1 0.010294 0.98 0.000042\n", | |
| "2 0.010296 0.98 0.000042\n", | |
| "3 0.010298 0.98 0.000042\n", | |
| "4 0.010301 0.98 0.000042" | |
| ] | |
| }, | |
| "execution_count": 17, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Plot the ROC curve\n", | |
| "df_recall_precision = pd.DataFrame({'Precision':precision[:-1],\n", | |
| " 'Recall':recall[:-1],\n", | |
| " 'Threshold':thresholds})\n", | |
| "df_recall_precision.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 800x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<ggplot: (142215449239)>" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "plotnine.options.figure_size = (8, 4.8)\n", | |
| "(\n", | |
| " ggplot(data = df_recall_precision)+\n", | |
| " geom_point(aes(x = 'Recall',\n", | |
| " y = 'Precision'),\n", | |
| " size = 0.4)+\n", | |
| " geom_line(aes(x = 'Recall',\n", | |
| " y = 'Precision'))+\n", | |
| " labs(title = 'Precision Recall Curve')+\n", | |
| " xlab('Recall')+\n", | |
| " ylab('Precision')+\n", | |
| " theme_minimal()\n", | |
| ")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# Calculate the f-score\n", | |
| "fscore = (2 * precision * recall) / (precision + recall)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Best Threshold: 0.3503 with F-Score: 0.725\n", | |
| "Recall: 0.58, Precision: 0.9667\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Find the optimal threshold\n", | |
| "index = np.argmax(fscore)\n", | |
| "thresholdOpt = round(thresholds[index], ndigits = 4)\n", | |
| "fscoreOpt = round(fscore[index], ndigits = 4)\n", | |
| "recallOpt = round(recall[index], ndigits = 4)\n", | |
| "precisionOpt = round(precision[index], ndigits = 4)\n", | |
| "print('Best Threshold: {} with F-Score: {}'.format(thresholdOpt, fscoreOpt))\n", | |
| "print('Recall: {}, Precision: {}'.format(recallOpt, precisionOpt))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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QnUvXbr0vI9+9KO0trb+/Zxzzvlmkbov7O3tnQEQ1/1cgbp3Ai4AvLW19fqOjo5jCtXd3Nx8Y09Pz5sAdthhh/1vvvnmRwqVr5bx48ePbm5upqenZ/SCBQvG9vf89vb2TvqSsp741hrv262jo6PkOtvb25+IN3vT582fP39rgP7UNQie9TxtqfvmOJ4pSZn29vak/fWWGl97e/tfgYPmz8/70TyYePvLoOh7m7fMYNtPAygp9ymnyZMnF/3D0dxr8cdb5QVBcDYwo1Jjhjs6Os4mSmwq6uyzz+aqq66ip6cHgJaWwn+/dHd3r91uamqiqSl/539vby+9vX0dDqpbdatu1V2OukePHs1TTz2Vt6y7M3XqVHp6emhqauK8887j2GOPLRjLUNDe3r52Ozuxyz6Wfpyt0PH0sWL15Ds/O55ix3Mlqf193lKee6DnlfJ+JnKVy3W8lFjLlLxLhU2ePLnoLwbqGR64C4C8vYYlaANeArYA8o5Nuu+++3bo6em5AWibMGHC5x577LFrClU6ffr0S1avXn1cU1PT0yeddNI7zjzzzFw/XwFw4IEHbv/f//73xkrU/d73vnfmI488ciMwbsKECZ9/7LHHfl6o7q233vr7q1atOrGpqemZE0444R2XXHLJ1Obm5rt6enr26ezsXKfH6H3ve9+Mhx9++B/AuPHjx3/h8ccfv6pI3RevWrXqo01NTc8ee+yx7zjvvPNez1f2/e9//xseeuihm+K6v/j4449fWaTu761atepjTU1Nzx177LFvL1R3EATbzZo16+a47i8//vjjBce1b7311heuWrXq42Y29+ijj97/O9/5TlL3em3n4IMP3vaBBx64GRg/bty4rzzxxBOXF6n7u6tWrTo5R93rOfjgg7edNWvWTe4+Ydy4cV994oknLitS97dXrVr1STObd9RRR+1/0UUXLc5X9pBDDtnmgQceuNndJ4wdO/ars2fPLlj3Nttsc8HKlStPMbN5hx9++Nu///3vL8ouM378+J2bm5vv+vGPf3z0l770pR+5+8S2trbT5syZ89MidZ+3cuXKU83s+cMPP3z/XHUnDj300On333//LXHdX58zZ85PitT9rZUrV37azF449NBD9//hD3+YdxjX4YcfPv2+++672d0ntbW1nT5nzpwfF6n73JUrV37GzF44+OCD337ppZcuyFf2iCOO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\n", | |
| "text/plain": [ | |
| "<Figure size 800x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<ggplot: (142215472574)>" | |
| ] | |
| }, | |
| "execution_count": 21, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "plotnine.options.figure_size = (8, 4.8)\n", | |
| "(\n", | |
| " ggplot(data = df_recall_precision)+\n", | |
| " geom_point(aes(x = 'Recall',\n", | |
| " y = 'Precision'),\n", | |
| " size = 0.4)+\n", | |
| " # Best threshold\n", | |
| " geom_point(aes(x = recallOpt,\n", | |
| " y = precisionOpt),\n", | |
| " color = '#981220',\n", | |
| " size = 4)+\n", | |
| " geom_line(aes(x = 'Recall',\n", | |
| " y = 'Precision'))+\n", | |
| " # Annotate the text\n", | |
| " geom_text(aes(x = recallOpt,\n", | |
| " y = precisionOpt),\n", | |
| " label = 'Optimal threshold \\n for class: {}'.format(thresholdOpt),\n", | |
| " nudge_x = 0.18,\n", | |
| " nudge_y = 0,\n", | |
| " size = 10,\n", | |
| " fontstyle = 'italic')+\n", | |
| " labs(title = 'Precision Recall Curve')+\n", | |
| " xlab('Recall')+\n", | |
| " ylab('Precision')+\n", | |
| " theme_minimal()\n", | |
| ")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### Threshold tuning" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Length of sequence: 10000\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Array for finding the optimal threshold\n", | |
| "thresholds = np.arange(0.0, 1.0, 0.0001)\n", | |
| "fscore = np.zeros(shape=(len(thresholds)))\n", | |
| "print('Length of sequence: {}'.format(len(thresholds)))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "metadata": { | |
| "scrolled": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Fit the model\n", | |
| "for index, elem in enumerate(thresholds):\n", | |
| " # Corrected probabilities\n", | |
| " y_pred_prob = (y_pred > elem).astype('int')\n", | |
| " # Calculate the f-score\n", | |
| " fscore[index] = f1_score(y_test, y_pred_prob)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Best Threshold: 0.3227 with F-Score: 0.725\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Find the optimal threshold\n", | |
| "index = np.argmax(fscore)\n", | |
| "thresholdOpt = round(thresholds[index], ndigits = 4)\n", | |
| "fscoreOpt = round(fscore[index], ndigits = 4)\n", | |
| "print('Best Threshold: {} with F-Score: {}'.format(thresholdOpt, fscoreOpt))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "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>F-score</th>\n", | |
| " <th>Threshold</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>0.019802</td>\n", | |
| " <td>0.0000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>0.022003</td>\n", | |
| " <td>0.0001</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>0.023500</td>\n", | |
| " <td>0.0002</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>0.025676</td>\n", | |
| " <td>0.0003</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>0.027663</td>\n", | |
| " <td>0.0004</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " F-score Threshold\n", | |
| "0 0.019802 0.0000\n", | |
| "1 0.022003 0.0001\n", | |
| "2 0.023500 0.0002\n", | |
| "3 0.025676 0.0003\n", | |
| "4 0.027663 0.0004" | |
| ] | |
| }, | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Plot the threshold tuning\n", | |
| "df_threshold_tuning = pd.DataFrame({'F-score':fscore,\n", | |
| " 'Threshold':thresholds})\n", | |
| "df_threshold_tuning.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<Figure size 800x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": { | |
| "needs_background": "light" | |
| }, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<ggplot: (142215476941)>" | |
| ] | |
| }, | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "plotnine.options.figure_size = (8, 4.8)\n", | |
| "(\n", | |
| " ggplot(data = df_threshold_tuning)+\n", | |
| " geom_point(aes(x = 'Threshold',\n", | |
| " y = 'F-score'),\n", | |
| " size = 0.4)+\n", | |
| " # Best threshold\n", | |
| " geom_point(aes(x = thresholdOpt,\n", | |
| " y = fscoreOpt),\n", | |
| " color = '#981220',\n", | |
| " size = 4)+\n", | |
| " geom_line(aes(x = 'Threshold',\n", | |
| " y = 'F-score'))+\n", | |
| " # Annotate the text\n", | |
| " geom_text(aes(x = thresholdOpt,\n", | |
| " y = fscoreOpt),\n", | |
| " label = 'Optimal threshold \\n for class: {}'.format(thresholdOpt),\n", | |
| " nudge_x = 0,\n", | |
| " nudge_y = -0.10,\n", | |
| " size = 10,\n", | |
| " fontstyle = 'italic')+\n", | |
| " labs(title = 'Threshold Tuning Curve')+\n", | |
| " xlab('Threshold')+\n", | |
| " ylab('F-score')+\n", | |
| " theme_minimal()\n", | |
| ")" | |
| ] | |
| } | |
| ], | |
| "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.8.3" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment