diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9eb0ef9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+*.amltmp
+*.amlignore
+*.pyc
+.ipynb_checkpoints/*
+bctools/.ipynb_checkpoints/*
+example-notebook/.ipynb_checkpoints/*
+example-notebook/.ipynb_aml_checkpoints/*
+dist/*
+binclass_tools.egg-info/*
+test/*
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..1f6bc48
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2022, Luca Zavarella
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2ecf357
--- /dev/null
+++ b/README.md
@@ -0,0 +1,464 @@
+# binclass-tools: Binary Classification Tools for Python At Your Fingertips
+
+
+
+A set of Python wrappers and interactive plots that facilitate the analysis of binary classification problems.
+
+---
+
+The __binclass-tools__ package makes the following available to you:
+
+* Powerful interactive charts that simplify the analysis of a binary classifier's performance, including any amounts and costs associated with individual observations.
+
+* A set of functions that return the values of metrics useful for measuring the performance of a binary classifier, for each threshold value if dependent on it.
+
+* A set of functions to find the optimal threshold value calculated on both the most popular metrics associated with the binary classifier under analysis, and any costs associated with each of the 4 categories in the confusion matrix.
+
+* A set of generic wrappers that help the analyst in daily operations dealing with binary classifications.
+
+On [Towards Data Science](https://towardsdatascience.com/) you will find the following article describing the theory behind all the functions of the package and the path that led me to create a package for analyzing binary classifications that also included calculating optimal threshold values for specific metrics:
+
+[Finding the Best Classification Threshold for Imbalanced Classifications with the Interactive Confusion Matrix and Line Charts]()
+
+## Quick Start
+
+### Requirements and Installation
+
+The project is based on:
+* Python 3.6+
+* A set of the most popular packages used for working with data
+* Plotly for interactive plots
+
+If you do not have Python, install it first. Then, in your favorite conda or virtual environment, simply do:
+
+```
+pip install binclass-tools
+```
+
+or, if you want to install the development version directly from github:
+
+
+```
+pip install git+https://github.com/lucazav/binclass-tools
+```
+
+### Example Usage
+
+Let's import both the usual libraries needed to work with the data and the binclass-tools one:
+
+```python
+import numpy as np
+import pandas as pd
+import bctools as bc
+```
+
+In addition, since we will train a classifier on randomly generated data via RandomForest, let's also import some useful functions for the purpose:
+
+```python
+from sklearn.ensemble import RandomForestClassifier
+from sklearn.datasets import make_classification
+from sklearn.model_selection import train_test_split
+```
+
+Let's then train our model that we will use as a classifier to analyse thanks to the functions of _binclass-tools_:
+
+```python
+# Generate a binary imbalanced classification problem, with 80% zeros and 20% ones.
+X, y = make_classification(n_samples=1000, n_features=20,
+ n_informative=14, n_redundant=0,
+ random_state=12, shuffle=False, weights = [0.8, 0.2])
+
+# Train - test split
+X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, stratify = y, random_state=0)
+
+# Train a RF classifier
+cls = RandomForestClassifier(max_depth=6, oob_score=True)
+cls.fit(X_train, y_train)
+```
+
+Having trained the model, let's calculate the estimated probabilities of the predictions obtained from the training and testing datasets:
+
+```python
+# Get prediction probabilities for the train set
+train_predicted_proba = cls.predict_proba(X_train)[:,1]
+
+# Get prediction probabilities for the test set
+test_predicted_proba = cls.predict_proba(X_test)[:,1]
+```
+
+Let's also set up a set of variables to pass as parameters in the subsequent binclass-tools functions we will use. Considering that we are going to do first an analysis of how the model performs on the training dataset in order to get also the optimal threshold values, these are the variables we will calculate:
+
+* The size of the step separating one threshold value from the other (always considering the extremes 0 and 1 inclusive).
+
+* The list of individual amounts associated with each of the observables in the test dataset (since the dataset is generated by random values, the absolute value of column 13 is considered as the amount column).
+
+* Which metrics to calculate the optimal threshold for (in our case all of them).
+
+* Which currency symbol to use.
+
+* The dictionary of costs associated with each of the 4 categories of the confusion matrix. It is possible to associate a single numerical value to be considered as the average cost for each observation in that category, or a list of values to be associated with each observation. Clearly, the length of the lists in the dictionary must all be the same length, equal to the number of observations in the dataset under analysis (in our case the test dataset).
+
+Specifically, you have this:
+
+```python
+# set params for the train dataset
+threshold_step = 0.05
+amounts = np.abs(X_train[:, 13])
+optimize_threshold = 'all'
+currency = '$'
+
+# The function get_cost_dict can be used to define the dictionary of costs.
+# It takes as input, for each class, a float or a list of floats.
+# Lists must have coherent lenghts
+
+train_cost_dict = bc.get_cost_dict(TN = 0, FP = 10, FN = np.abs(X_train[:, 12]), TP = 0)
+```
+
+At this point we can visualize the _Interactive Confusion Matrix_ on the training dataset, including the optimal threshold for all the available metrics:
+
+```python
+var_metrics_df, invar_metrics_df, opt_thresh_df = bc.confusion_matrix_plot(
+ true_y = y_train,
+ predicted_proba = train_predicted_proba,
+ threshold_step = threshold_step,
+ amounts = amounts,
+ cost_dict = train_cost_dict,
+ optimize_threshold = optimize_threshold,
+ #N_subsets = 70, subsets_size = 0.2, # default
+ #with_replacement = False, # default
+ currency = currency,
+ random_state = 123,
+ title = 'Interactive Confusion Matrix for the Training Set');
+```
+
+Here the output:
+
+![Interactive Confusion Matrix for the Training Set](/resources/images/01-interactive-confusion-matrix-train.png)
+
+As you can see, the interactive confusion matrix plot also returns metric dataframes that can be used in your code if needed. One is the _threshold dependent metrics dataframe_:
+
+| | threshold | accuracy | balanced_accuracy | cohens_kappa | f1_score | matthews_corr_coef | precision | recall |
+|---:|------------:|-----------:|--------------------:|---------------:|-----------:|---------------------:|------------:|---------:|
+| 0 | 0 | 0.2025 | 0.5 | 0 | 0.3368 | 0 | 0.2025 | 1 |
+| 1 | 0.05 | 0.3988 | 0.623 | 0.1168 | 0.4025 | 0.249 | 0.2519 | 1 |
+| 2 | 0.1 | 0.7475 | 0.8417 | 0.4664 | 0.616 | 0.5515 | 0.4451 | 1 |
+| 3 | 0.15 | 0.8988 | 0.9365 | 0.7358 | 0.8 | 0.7629 | 0.6667 | 1 |
+| 4 | 0.2 | 0.9462 | 0.964 | 0.8479 | 0.8822 | 0.857 | 0.7931 | 0.9938 |
+| 5 | 0.25 | 0.9812 | 0.9813 | 0.9431 | 0.955 | 0.9437 | 0.9298 | 0.9815 |
+| 6 | 0.3 | 0.9875 | 0.983 | 0.9615 | 0.9693 | 0.9615 | 0.9634 | 0.9753 |
+| 7 | 0.35 | 0.99 | 0.9822 | 0.9689 | 0.9752 | 0.9689 | 0.9812 | 0.9691 |
+| 8 | 0.4 | 0.9825 | 0.9591 | 0.9443 | 0.9551 | 0.9454 | 0.9933 | 0.9198 |
+| 9 | 0.45 | 0.9712 | 0.9313 | 0.9065 | 0.9241 | 0.9098 | 0.9929 | 0.8642 |
+| 10 | 0.5 | 0.9612 | 0.9043 | 0.8708 | 0.8942 | 0.8782 | 1 | 0.8086 |
+| 11 | 0.55 | 0.9388 | 0.8488 | 0.7862 | 0.8218 | 0.8048 | 1 | 0.6975 |
+| 12 | 0.6 | 0.91 | 0.7778 | 0.666 | 0.7143 | 0.7066 | 1 | 0.5556 |
+| 13 | 0.65 | 0.8838 | 0.713 | 0.542 | 0.5974 | 0.6097 | 1 | 0.4259 |
+| 14 | 0.7 | 0.8675 | 0.6728 | 0.4573 | 0.5138 | 0.5445 | 1 | 0.3457 |
+| 15 | 0.75 | 0.8438 | 0.6142 | 0.3207 | 0.3719 | 0.437 | 1 | 0.2284 |
+| 16 | 0.8 | 0.8238 | 0.5648 | 0.192 | 0.2295 | 0.3258 | 1 | 0.1296 |
+| 17 | 0.85 | 0.805 | 0.5185 | 0.0578 | 0.0714 | 0.1725 | 1 | 0.037 |
+| 18 | 0.9 | 0.8012 | 0.5093 | 0.0292 | 0.0364 | 0.1218 | 1 | 0.0185 |
+| 19 | 0.95 | 0.7975 | 0.5 | 0 | 0 | 0 | 1 | 0 |
+| 20 | 1 | 0.7975 | 0.5 | 0 | 0 | 0 | 1 | 0 |
+
+The second is the _threshold invariant metrics dataframe_:
+
+| | invariant_metric | value |
+|---:|:-------------------|--------:|
+| 0 | roc_auc | 0.9992 |
+| 1 | pr_auc | 0.9972 |
+| 2 | brier_score | 0.0427 |
+
+The third and last one is a dataframe containing the _optimal threshold values_ for each implemented metric:
+
+| | optimized_metric | optimal_threshold |
+|---:|:-------------------|--------------------:|
+| 0 | kappa | 0.3 |
+| 1 | mcc | 0.3 |
+| 2 | roc | 0.25 |
+| 3 | f1_score | 0.3 |
+| 4 | f2_score | 0.25 |
+| 5 | f05_score | 0.35 |
+| 6 | cost | 0.35 |
+
+We borrowed the code for calculating optimal threshold values directly from the [GHOST repository](https://github.com/rinikerlab/GHOST), introducing more metrics and optimizing the calculations using parallelism.
+
+Once the threshold values of interest have been identified through the training data, the Interactive Confusion Matrix can be plotted for the testing dataset. Here we also avoid calculating the optimal thresholds, since it does not make sense to do so on a testing dataset:
+
+```python
+# You can also analyze the test dataset.
+# In this case there is no need to optimize the threshold value for any measure.
+threshold_step = 0.05
+amounts = np.abs(X_test[:, 13])
+optimize_threshold = None
+currency = '$'
+
+test_cost_dict = bc.get_cost_dict(TN = 0, FP = 10, FN = np.abs(X_test[:, 12]), TP = 0)
+
+var_metrics_df, invar_metrics_df, __ = bc.confusion_matrix_plot(
+ true_y = y_test,
+ predicted_proba = test_predicted_proba,
+ threshold_step = threshold_step,
+ amounts = amounts,
+ cost_dict = test_cost_dict,
+ optimize_threshold = optimize_threshold,
+ #N_subsets = 70, subsets_size = 0.2, # default
+ #with_replacement = False, # default
+ currency = currency,
+ random_state = 123);
+```
+
+Evidently, the Interactive Confusion Matrix plot will not present the table of optimal threshold values for the various metrics:
+
+![Interactive Confusion Matrix for the Training Set](/resources/images/02-interactive-confusion-matrix-test.png)
+
+As you can see from the code, this time the dataframes returned are only the first two.
+
+Should you need to have only the above dataframes available without generating the interactive confusion matrix plot, there are functions available specifically for this. You can get the threshold invariant metrics dataframe as following:
+
+```python
+invar_metrics_df = bc.utilities.get_invariant_metrics_df(true_y = y_test,
+ predicted_proba = test_predicted_proba)
+```
+
+You can also get the threshold dependent metrics dataframe and the confusion matrix values for a specific threshold as following:
+
+```python
+conf_matrix, metrics_fixed_thresh_df = bc.utilities.get_confusion_matrix_and_metrics_df(
+ true_y = y_test,
+ predicted_proba = test_predicted_proba,
+ threshold = 0.3 # default = 0.5
+)
+```
+
+Keep in mind that the confusion matrix values are returned in an array, not in a dataframe.
+
+Finally, the dataframe of the optimized thresholds can be also obtained directly with the following code:
+
+```python
+threshold_values = np.arange(0.05, 1, 0.05)
+
+opt_thresh_df = bc.thresholds.get_optimized_thresholds_df(
+ optimize_threshold = ['Kappa', 'Fscore', 'Cost'],
+ threshold_values = threshold_values,
+ true_y = y_train,
+ predicted_proba = train_predicted_proba,
+ cost_dict = train_cost_dict,
+
+ # GHOST parameters (these values are also the default ones)
+ N_subsets = 70,
+ subsets_size = 0.2,
+ with_replacement = False,
+
+ random_state = 120)
+
+```
+
+The `N_subset`, `subset_size`, and `with_replacement` parameters are specific to the GHOST algorithm used to find the optimal threshold values. For more details, you can refer directly to the [paper introducing the GHOST method](https://pubs.acs.org/doi/10.1021/acs.jcim.1c00160).
+
+If, on the other hand, you are interested in specifically optimizing a non-cost-based threshold (specifically, one of these: 'ROC', 'MCC', 'Kappa', 'F1'), you can use the following function:
+
+```python
+opt_roc_threshold_value = bc.thresholds.get_optimal_threshold(
+ y_train,
+ train_predicted_proba,
+ threshold_values,
+ ThOpt_metrics = 'ROC', # default = 'Kappa'
+
+ # GHOST parameters (these values are also the default ones)
+ N_subsets = 70,
+ subsets_size = 0.2,
+ with_replacement = False,
+
+ random_seed = 120)
+```
+
+Keep in mind that if you choose _'Fscore'_ as the metric to optimize, you will be returned 3 optimal threshold values for metrics F1, F2 and F0.5 respectively.
+
+Specifically for cost optimization (minimization), you can use the following function:
+
+```python
+opt_cost_threshold_value = bc.thresholds.get_cost_optimal_threshold(
+ y_train,
+ train_predicted_proba,
+ cost_dict = train_cost_dict,
+
+ # GHOST parameters (these values are also the default ones)
+ N_subsets = 70,
+ subsets_size = 0.2,
+ with_replacement = False,
+
+ random_seed = 120)
+```
+
+You could also be also interested in visualizing the trend of possible amounts or costs associated with each category of the confusion matrix as the threshold value changes. For this purpose there is the following function that generates an _Interactive Confusion Line Chart_:
+
+```python
+amount_cost_df, total_amount = bc.confusion_linechart_plot(
+ true_y = y_test,
+ predicted_proba = test_predicted_proba,
+ threshold_step = threshold_step,
+ amounts = amounts,
+ cost_dict = test_cost_dict,
+ currency = currency);
+```
+
+Here the output:
+
+![Interactive Confusion Line Chart](/resources/images/03-interactive-confusion-line-chart.png)
+
+You can see that there are also black "diamonds" indicating the first threshold value in which there is a swap of the amount and cost curves. The curve swapping points can also be more than one.
+
+This function, in addition to generating the plot, also returns two output values: the total amount given by the sum of all categories and the dataframe of the amounts and costs for each category as the threshold changes:
+
+```python
+print(f'total amount: {currency}{total_amount}')
+
+amount_cost_df
+```
+
+In addition to the result of the total amount ($374.24), here the amounts & costs dataframe:
+
+| | threshold | amount_TN | amount_FP | amount_FN | amount_TP | cost_TN | cost_FP | cost_FN | cost_TP | total_cost |
+|---:|------------:|------------:|------------:|------------:|------------:|----------:|----------:|----------:|----------:|-------------:|
+| 0 | 0 | 0 | 301.374 | 0 | 72.8675 | 0 | 1590 | 0 | 0 | 1590 |
+| 1 | 0.05 | 48.9919 | 252.382 | 0 | 72.8675 | 0 | 1300 | 0 | 0 | 1300 |
+| 2 | 0.1 | 139.883 | 161.491 | 0 | 72.8675 | 0 | 830 | 0 | 0 | 830 |
+| 3 | 0.15 | 201.993 | 99.3817 | 0 | 72.8675 | 0 | 460 | 0 | 0 | 460 |
+| 4 | 0.2 | 251.804 | 49.5706 | 0 | 72.8675 | 0 | 260 | 0 | 0 | 260 |
+| 5 | 0.25 | 267.401 | 33.9731 | 5.73307 | 67.1344 | 0 | 160 | 3.47131 | 0 | 163.471 |
+| 6 | 0.3 | 287.28 | 14.0945 | 7.87073 | 64.9967 | 0 | 70 | 10.5798 | 0 | 80.5798 |
+| 7 | 0.35 | 295.033 | 6.34141 | 12.96 | 59.9075 | 0 | 20 | 15.8962 | 0 | 35.8962 |
+| 8 | 0.4 | 301.374 | 0 | 15.0905 | 57.777 | 0 | 0 | 18.9167 | 0 | 18.9167 |
+| 9 | 0.45 | 301.374 | 0 | 17.1228 | 55.7447 | 0 | 0 | 19.9586 | 0 | 19.9586 |
+| 10 | 0.5 | 301.374 | 0 | 34.1608 | 38.7067 | 0 | 0 | 41.8435 | 0 | 41.8435 |
+| 11 | 0.55 | 301.374 | 0 | 41.0564 | 31.811 | 0 | 0 | 49.1584 | 0 | 49.1584 |
+| 12 | 0.6 | 301.374 | 0 | 47.5616 | 25.3058 | 0 | 0 | 54.6559 | 0 | 54.6559 |
+| 13 | 0.65 | 301.374 | 0 | 58.7947 | 14.0727 | 0 | 0 | 64.8295 | 0 | 64.8295 |
+| 14 | 0.7 | 301.374 | 0 | 58.7947 | 14.0727 | 0 | 0 | 64.8295 | 0 | 64.8295 |
+| 15 | 0.75 | 301.374 | 0 | 66.5553 | 6.31212 | 0 | 0 | 69.3375 | 0 | 69.3375 |
+| 16 | 0.8 | 301.374 | 0 | 71.3319 | 1.53555 | 0 | 0 | 75.9399 | 0 | 75.9399 |
+| 17 | 0.85 | 301.374 | 0 | 71.3319 | 1.53555 | 0 | 0 | 75.9399 | 0 | 75.9399 |
+| 18 | 0.9 | 301.374 | 0 | 72.8675 | 0 | 0 | 0 | 75.9666 | 0 | 75.9666 |
+| 19 | 0.95 | 301.374 | 0 | 72.8675 | 0 | 0 | 0 | 75.9666 | 0 | 75.9666 |
+| 20 | 1 | 301.374 | 0 | 72.8675 | 0 | 0 | 0 | 75.9666 | 0 | 75.9666 |
+
+Just as we have already seen with the other plots, the amount and cost dataframe can be obtained directly through a specific function. In particular, you can also choose not to report amounts, for example, if you only want to analyze costs:
+
+```python
+# this function requires a list of thresholds, instead of the step, for example:
+threshold_values = np.arange(0, 1, 0.05)
+
+# example without amounts
+costs_df = bc.utilities.get_amount_cost_df(
+ true_y = y_test,
+ predicted_proba = test_predicted_proba,
+ threshold_values = threshold_values,
+ #amounts = amounts,
+ cost_dict = test_cost_dict)
+```
+
+It may be sometimes necessary to compare the performance of what is considered a gain (e.g., amount of TP because it escaped fraud) with what is considered a loss (amount of FN of fraud escaped from the model + fixed cost per FP representing the checking to be done on transactions that are classified as fraudulent but are not). This can be done through the _Interactive Amount-Cost Line Chart_:
+
+```python
+amount_classes = ['TP', 'FP']
+cost_classes = 'all'
+
+total_cost_amount_df = bc.total_amount_cost_plot(
+ true_y = y_test,
+ predicted_proba = test_predicted_proba,
+ threshold_step = threshold_step,
+ amounts = amounts,
+ cost_dict = test_cost_dict,
+ amount_classes = amount_classes,
+ cost_classes = cost_classes,
+ currency = currency);
+```
+
+Here the resulting plot:
+
+![Interactive Amount-Cost Line Chart](/resources/images/04-interactive-amount-cost-line-chart.png)
+
+As in the other cases, this function returns a dataframe with the amount and cost values, both for each category in the confusion matrix and for selected aggregates of them, associated with each threshold:
+
+| | threshold | amount_TP | amount_FP | amount_sum | cost_TN | cost_FP | cost_FN | cost_TP | cost_sum |
+|---:|------------:|------------:|------------:|-------------:|----------:|----------:|----------:|----------:|-----------:|
+| 0 | 0 | 72.8675 | 301.374 | 374.242 | 0 | 1590 | 0 | 0 | 1590 |
+| 1 | 0.05 | 72.8675 | 266.572 | 339.44 | 0 | 1380 | 0 | 0 | 1380 |
+| 2 | 0.1 | 72.8675 | 152.006 | 224.874 | 0 | 770 | 0 | 0 | 770 |
+| 3 | 0.15 | 72.8675 | 88.4092 | 161.277 | 0 | 430 | 0 | 0 | 430 |
+| 4 | 0.2 | 72.5494 | 61.6009 | 134.15 | 0 | 290 | 0.221014 | 0 | 290.221 |
+| 5 | 0.25 | 66.5301 | 31.6006 | 98.1307 | 0 | 160 | 4.472 | 0 | 164.472 |
+| 6 | 0.3 | 65.3813 | 20.9625 | 86.3437 | 0 | 100 | 9.90665 | 0 | 109.907 |
+| 7 | 0.35 | 60.9562 | 12.0418 | 72.998 | 0 | 30 | 18.0882 | 0 | 48.0882 |
+| 8 | 0.4 | 57.8163 | 4.85876 | 62.6751 | 0 | 10 | 18.0989 | 0 | 28.0989 |
+| 9 | 0.45 | 46.3113 | 0 | 46.3113 | 0 | 0 | 34.7334 | 0 | 34.7334 |
+| 10 | 0.5 | 37.5392 | 0 | 37.5392 | 0 | 0 | 42.6685 | 0 | 42.6685 |
+| 11 | 0.55 | 31.2279 | 0 | 31.2279 | 0 | 0 | 49.2799 | 0 | 49.2799 |
+| 12 | 0.6 | 28.4496 | 0 | 28.4496 | 0 | 0 | 51.4823 | 0 | 51.4823 |
+| 13 | 0.65 | 19.7851 | 0 | 19.7851 | 0 | 0 | 58.1733 | 0 | 58.1733 |
+| 14 | 0.7 | 8.36888 | 0 | 8.36888 | 0 | 0 | 68.444 | 0 | 68.444 |
+| 15 | 0.75 | 1.53555 | 0 | 1.53555 | 0 | 0 | 75.9399 | 0 | 75.9399 |
+| 16 | 0.8 | 1.53555 | 0 | 1.53555 | 0 | 0 | 75.9399 | 0 | 75.9399 |
+| 17 | 0.85 | 0 | 0 | 0 | 0 | 0 | 75.9666 | 0 | 75.9666 |
+| 18 | 0.9 | 0 | 0 | 0 | 0 | 0 | 75.9666 | 0 | 75.9666 |
+| 19 | 0.95 | 0 | 0 | 0 | 0 | 0 | 75.9666 | 0 | 75.9666 |
+| 20 | 1 | 0 | 0 | 0 | 0 | 0 | 75.9666 | 0 | 75.9666 |
+
+You can also directly access the previous data with the already used `get_amount_cost_df()` function, excluding for example amounts to focus on costs:
+
+```python
+# this function requires a list of thresholds, instead of the step, for example:
+threshold_values = np.arange(0, 1, 0.05)
+
+# example without amounts
+costs_df = bc.utilities.get_amount_cost_df(
+ true_y = y_test,
+ predicted_proba = test_predicted_proba,
+ threshold_values = threshold_values,
+ #amounts = amounts,
+ cost_dict = test_cost_dict)
+```
+
+Finally, there is also a function in this first release that simplifies the extraction of observations belonging to a specific category of the confusion matrix from a scored dataframe. If you want to extract, for example, all observations belonging to the TP category, this is the code you need:
+
+```python
+# for example, if we want the True Positive data points with a 0.7 threshold:
+confusion_category = 'TP'
+
+bc.get_confusion_category_observations_df(
+ confusion_category = confusion_category,
+ X_data = X_test,
+ true_y = y_test,
+ predicted_proba = test_predicted_proba,
+ threshold = 0.7 # default = 0.5
+)
+```
+
+You can find the complete code in the [sample notebook](/example-notebook/example_classification_model.ipynb) provided with the repository.
+
+## Content
+
+### Notebook:
+
+- **example-notebook/Example_classification_model.ipynb**
+Example of how to use the binclass-tools library.
+
+### Dependencies:
+If you are interested in using _binclass-tools_ in your own code/notebooks, you'll just need these packages:
+- numpy
+- pandas
+- scikit-learn (>=0.22.1)
+- matplotlib
+- plolty
+
+## Authors
+[Luca Zavarella](https://github.com/lucazav) and [Greta Villa](https://github.com/GretaVilla).
+
+## Acknowledgements
+
+## License
+
+This package is licensed under the [BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause) license.
+
+
diff --git a/bctools/__init__.py b/bctools/__init__.py
new file mode 100644
index 0000000..6e62aea
--- /dev/null
+++ b/bctools/__init__.py
@@ -0,0 +1,2 @@
+from .plots import *
+from .utilities import get_cost_dict, get_confusion_category_observations_df
\ No newline at end of file
diff --git a/bctools/plots.py b/bctools/plots.py
new file mode 100644
index 0000000..36d6520
--- /dev/null
+++ b/bctools/plots.py
@@ -0,0 +1,778 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+import numpy as np
+import pandas as pd
+
+import plotly.graph_objects as go
+from plotly.subplots import make_subplots
+
+from .utilities import _get_amount_matrix, _get_cost_matrix
+from .utilities import get_amount_cost_df, get_invariant_metrics_df, get_confusion_matrix_and_metrics_df
+
+from .thresholds import get_optimized_thresholds_df
+
+def confusion_matrix_plot(true_y, predicted_proba, threshold_step = 0.01,
+ amounts = None, cost_dict = None, optimize_threshold = None,
+ N_subsets = 70, subsets_size = 0.2, with_replacement = False,
+ currency = '€', random_state = None, title = 'Interactive Confusion Matrix'):
+
+ """
+ Plots interactive and customized confusion matrix with plotly,
+ one for each threshold that can be selected with a slider,
+ displaying additional information (metrics, optimized thresholds).
+
+ Returns three dataframes containing:
+ - metrics that depend on threshold
+ - metrics that don't depend on threshold,
+ - optimized thresholds (or empty)
+
+ Plot is constituted by:
+ - table displaying metrics that vary based on the threshold selected:
+ Accuracy, Balanced Acc., F1, Precision, Recall, MCC, Cohen's K
+ - table displaying metrics that don't depend on threshold:
+ ROC auc, Pecision-Recall auc, Brier score
+ - when optimize_threshold is given:
+ table displayng thresholds optimized using GHOST method for any of the following metrics:
+ Kohen's Kappa, Matthew's Correlation Coefficient, ROC, F-beta scores (beta = 1, 0.5, 2)
+ and for minimal total cost
+ - confusion matrix (annotated heatmap) that varies based on the threshold selected
+ displayng for each class (based on given inputs): count and percentage on total, amount and percentage on total, cost
+ - slider that allows to select the threshold
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+ threshold_step: float, default=0.01
+ step between each classification threshold (ranging from 0 to 1) below which prediction label is 0, 1 otherwise
+ each value will have a corresponding slider step
+ amounts: sequence of floats, default=None
+ amounts associated to each element of data
+ (e.g. fraud detection for online orders: amounts could be the orders' amounts)
+ cost_dict: dict, deafult=None
+ dict containing costs associated to each class (TN, FP, FN, TP)
+ with keys "TN", "FP", "FN", "TP"
+ and values that can be both lists (with coherent lenghts) and/or floats
+ (output from get_cost_dict)
+ necessary when optimizing threshold for minimal total costs
+ optimize_threshold: {'all', 'ROC', 'MCC', 'Kappa', 'Fscore', 'Cost'}
+ or list containing allowed values except 'all', default=None
+ metrics for which thresholds will be optimized
+ 'all' is equvalent to ['ROC', 'MCC', 'Kappa', 'Fscore'] if cost_dict=None, ['ROC', 'MCC', 'Kappa', 'Fscore', 'Cost'] otherwise
+ N_subsets: int, default=70
+ Number of subsets used in GHOST optimization process
+ subsets_size: float or int, default=0.2
+ Size of the subsets used in GHOST optimization process.
+ If float, represents the proportion of the dataset to include in the subsets.
+ If integer, it represents the actual number of instances to include in the subsets.
+ with_replacement: bool, default=False
+ If True, the subsets used in GHOST optimization process are drawn randomly with replacement, without otherwise.
+ currency: str, default='€'
+ currency symbol to be visualized. For unusual currencies, you can use their HTML code representation
+ (eg. Indian rupee: '₹')
+ random_state: int, default=None
+ Controls the randomness of the bootstrapping of the samples when optimizing thresholds with GHOST method
+ title: str, default='Interactive Confusion Matrix'
+ The main title of the plot.
+
+ """
+ if currency == '$': #correct dollar symbol for plotly in its HTML code
+ currency = '$'
+
+ try:
+ n_of_decimals = len(str(threshold_step).rsplit('.')[1])
+ except:
+ n_of_decimals = 4
+
+ threshold_values = list(np.arange(0, 1 + threshold_step, threshold_step)) #define thresholds array
+ n_data = len(true_y)
+ main_title = f"{title}
"
+ subtitle = "Total obs: " + '{:,}'.format(n_data)
+
+ if amounts is not None:
+ amounts = list(amounts)
+ tot_amount = sum(amounts)
+ subtitle += "
Total amount: " + currency + '{:,.2f}'.format(tot_amount)
+
+ # initialize annotation matrix
+ annotations_fixed = np.array([[["TN", "True Negative"], ["FP", "False Positive"]],
+ [["FN", "False Negative"], ["TP", "True Positive"]]])
+
+ # initialize figure
+ fig = make_subplots(rows=2, cols=3,
+ specs=[[{"type": "table"}, {"type": "table"}, {"type": "table"}],
+ [{"type": "heatmap", "colspan" : 3}, None, None]],
+ vertical_spacing=0.0,
+ horizontal_spacing = 0.01)
+
+ # compute invariant metrics and create table with invariant metrics:
+ constant_metrics_df = get_invariant_metrics_df(true_y, predicted_proba)
+ fig.add_trace(
+ go.Table(header=dict(values=['Invariant Metric', 'Value']),
+ cells=dict(values=[constant_metrics_df['invariant_metric'], constant_metrics_df['value']])
+ ), row=1, col=2)
+
+ # create table with optimized thresholds or empty:
+ if optimize_threshold is not None:
+
+ # compute optimized thresholds and create dataframe
+ optimal_thresholds_df = get_optimized_thresholds_df(optimize_threshold, threshold_values[1:-1], true_y, predicted_proba,
+ cost_dict, random_state)
+ fig.add_trace(
+ go.Table(header=dict(values=['Optimized Metric', 'Optimal Threshold']),
+ cells=dict(values=[optimal_thresholds_df['optimized_metric'], optimal_thresholds_df['optimal_threshold']])
+ ), row=1, col=3)
+ else:
+ optimal_thresholds_df = None # needed for return statement
+ fig.add_trace(go.Table({}), row=1, col=3)
+
+ # create dynamic titles dictionary (will be empty if cost is not given)
+ titles = {}
+
+ # initialize dataframe to store metrics dependent on threshold
+ metrics_dep_on_threshold_df = pd.DataFrame()
+
+ for threshold in threshold_values:
+
+ titles[threshold] = '' #set empty title
+
+ # get confusion matrix and metrics dep. on threshold
+ matrix, temp_metrics_df = get_confusion_matrix_and_metrics_df(true_y, predicted_proba,
+ threshold = threshold, normalize = None)
+ # concat to metrics_dep_on_threshold_df
+ temp_metrics_df['threshold'] = threshold
+ metrics_dep_on_threshold_df = pd.concat([metrics_dep_on_threshold_df, temp_metrics_df])
+
+ annotations = np.dstack((annotations_fixed, matrix/n_data)) # add count percentage to annotations matrix
+
+ # define dynamic annotations and hover text
+ template = "%{z} (%{text[2]:.2~%})" # total count and perc.
+
+ if amounts or cost_dict:
+ annotations_max_index = 2
+
+ if amounts:
+ amount_matrix = _get_amount_matrix(true_y, predicted_proba, threshold, amounts)
+ annotations = np.dstack((annotations, amount_matrix, amount_matrix/tot_amount)) # add amount matrix and perc. matrix
+ annotations_max_index += 2
+ #add to template "Amount:" total and perc.
+ template += "
Amount: "+ currency + "%{text[3]:~s} (%{text[4]:.2~%})"
+
+ if cost_dict:
+ cost_matrix = _get_cost_matrix(true_y, predicted_proba, threshold, cost_dict)
+ total_cost = cost_matrix.sum()
+ annotations = np.dstack((annotations, cost_matrix, cost_matrix/total_cost)) # add cost matrix and perc. matrix
+ annotations_max_index += 2
+ #add to template "Cost:" total and perc.
+ template += "
Cost: "+ currency +\
+ "%{text[" + str(annotations_max_index-1) + "]:~s} (%{text[" +str(annotations_max_index)+ "]:.2~%})"
+ # update title adding total cost
+ titles[threshold] += "
Total cost: " + currency + '{:,.2f}'.format(cost_matrix.sum())
+
+ # invert rows (for plotly.go plots compatibility)
+ matrix[[0, 1]] = matrix[[1, 0]]
+ annotations[[0, 1]] = annotations[[1, 0]]
+
+ # table with metrics that depend on threshold
+ fig.add_trace(
+ go.Table(header=dict(values=['Variable Metric', 'Value']),
+ cells=dict(values=[temp_metrics_df[k].tolist() for k in temp_metrics_df.columns[:-1]]),
+ visible=False
+ ),
+ row=1, col=1)
+
+ # annotated confusion matrix
+ fig.add_trace(go.Heatmap(z = matrix,
+ text = annotations,
+ texttemplate= "%{text[0]}
" + template,
+ name="threshold: " + str(round(threshold, n_of_decimals)),
+ hovertemplate = "%{text[1]}
Count: " + template,
+ x=['False', 'True'],
+ y=['True', 'False'],
+ colorscale = 'Blues',
+ showscale = False,
+ visible=False), row=2, col=1)
+
+ # pivot metrics_dep_on_threshold_df
+ name_col = metrics_dep_on_threshold_df.columns[0]
+ value_col = metrics_dep_on_threshold_df.columns[1]
+ metrics_dep_on_threshold_df = metrics_dep_on_threshold_df.pivot(columns = name_col, values = value_col, index = 'threshold').reset_index('threshold').rename_axis(None, axis=1)
+
+ # fig.data[0] is the constant metrcis table, fig.data[1] is the optimal threshold table, always visible
+ fig.data[2].visible = True # first variable metrics table
+ fig.data[3].visible = True # first confusion matrix
+
+ # create and add slider
+ steps = []
+ j = 2 # skip first and second trace (invariant metric table, opt. thresholds/empty table)
+
+ for threshold in threshold_values:
+ step = dict(method="update",
+ args=[{"visible": [False] * len(fig.data)},
+ {"title": dict(text = main_title + '' \
+ + subtitle + titles[threshold] + '',
+ y = 0.965, yanchor = 'bottom')}
+ ],
+ label = str(round(threshold, n_of_decimals))
+ )
+
+ step["args"][0]["visible"][0] = True # constant metric table always visible
+ step["args"][0]["visible"][1] = True # opt. thresholds/empty table always visible
+ step["args"][0]["visible"][j] = True # threshold related confusion matrix
+ step["args"][0]["visible"][j+1] = True # threshold related variable metrics table
+ steps.append(step)
+ j += 2 # add 2 to trace index (confusion matrix and variable metrics table)
+
+ sliders = [dict(active=0,
+ currentvalue={"prefix": "Threshold: "},
+ pad=dict(t= 50),
+ steps=steps)]
+
+ fig.update_layout(height=600,
+ sliders=sliders,
+ title = dict(text = main_title + '' \
+ + subtitle + titles[threshold_values[0]] + '',
+ y = 0.965, yanchor = 'bottom')) #first visible title
+
+ fig.update_xaxes(title_text = "Predicted")
+ fig.update_yaxes(title_text = "Actual")
+ fig.show()
+
+ return metrics_dep_on_threshold_df, constant_metrics_df, optimal_thresholds_df
+
+def confusion_linechart_plot(true_y, predicted_proba, threshold_step = 0.01,
+ amounts = None, cost_dict = None, currency = '€',
+ title = 'Interactive Confusion Line Chart'):
+
+ """
+ - Plots interactive and customized line-plots with plotly, one for each "confusion class" (TN, FP, FN, TP),
+ displayng amount and/or cost againts thresholds and additional information (intersection points, total cost)
+ - Returns a dataframe containing, for every threshold and depending on the inputs,
+ the amount and cost associated to each class (TN, FP, FN, TP) and the total cost
+ - Returns the value of the total amount
+
+ Plot is constituted by:
+ - four linecharts, one for each class (TN, FP, FN, TP), with thresholds on x axis
+ and amounts and/or costs (depends on the given input) on y axis
+ - slider that moves markers in linecharts based on threshold selected
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+ threshold_step: float, default=0.01
+ step between each classification threshold (ranging from 0 to 1) below which prediction label is 0, 1 otherwise
+ each value will have a corresponding slider step
+ amounts: sequence of floats, default=None
+ amounts associated to each element of data
+ (e.g. fraud detection for online orders: amounts could be the orders' amounts)
+ cost_dict: dict, deafult=None
+ dict containing costs associated to each class (TN, FP, FN, TP)
+ with keys "TN", "FP", "FN", "TP"
+ and values that can be both lists (with coherent lenghts) and/or floats
+ (output from get_cost_dict)
+ currency: str, default='€'
+ currency symbol to be visualized. For unusual currencies, you can use their HTML code representation
+ (eg. Indian rupee: '₹')
+ title: str, default='Interactive Confusion Line Chart'
+ The main title of the plot.
+
+ Returns
+ ----------
+ amount_cost_df: pandas dataframe
+ Dataframe containing variables:
+ - threshold
+ - if amounts is given: amounts relative to each class (TN, FP, FN, TP)
+ - if cost_dict is given: cost relative to each class (TN, FP, FN, TP) and total cost
+
+ total_amounts: float
+ sum of the amounts (or None if amounts is None)
+ """
+
+ if currency == '$':
+ currency = '$'
+
+ try:
+ n_of_decimals = len(str(threshold_step).rsplit('.')[1])
+ except:
+ n_of_decimals = 4
+
+ threshold_values = list(np.arange(0, 1 + threshold_step, threshold_step))
+ middle_x = (threshold_values[0] + threshold_values[-1])/2
+ n_data = len(true_y)
+ main_title = f"{title}
"
+ subtitle = "Total obs: " + '{:,}'.format(n_data)
+
+ if amounts is not None:
+ amounts = list(amounts)
+ tot_amount = sum(amounts)
+ subtitle += "
Total amount: " + currency + '{:,.2f}'.format(tot_amount)
+
+ # Create labels for titles
+ label_lst = ["True Negative", "False Positive", "False Negative", "True Positive"]
+
+ # get threshold-amount-cost dataframe (throws error if both cost_dict and amounts are None)
+ amount_cost_df = get_amount_cost_df(true_y, predicted_proba, threshold_values, amounts, cost_dict)
+
+ # Create figure
+ fig = make_subplots(
+ rows=2, cols=2,
+ subplot_titles = label_lst,
+ shared_xaxes = True,
+ vertical_spacing=0.16,
+ specs=[[{"type": "scatter"}, {"type": "scatter"}],
+ [{"type": "scatter"}, {"type": "scatter"}]]
+ )
+
+ for annotation in fig['layout']['annotations']:
+ annotation['y'] = annotation['y'] + 0.04 #move subplots title up
+
+ middle_y_lst = []
+
+ if (amounts is not None) and (cost_dict is not None):
+ static_charts_num = 12
+ markers_num = 8
+ unit_y_lst = []
+
+ titles = {threshold: "
Total cost: " + currency \
+ + '{:,.2f}'.format(value) for threshold, value in zip(threshold_values,
+ list(amount_cost_df['total_cost']))}
+
+ # Create amounts and cost line charts
+ for confusion_index, row_index, col_index, color1, color2 in zip(['TN', 'FP', 'FN', 'TP'],
+ [1, 1, 2, 2],
+ [1, 2, 1, 2],
+ ['blue', 'red', '#00CC96', '#AB63FA'],
+ ['rgb(128, 177, 211)', 'rgb(251, 128, 114)',
+ 'rgb(141, 211, 199)', 'rgb(190, 186, 218)']):
+ fig.add_trace(
+ go.Scatter(x = amount_cost_df['threshold'],
+ y = amount_cost_df['amount_' + confusion_index],
+ showlegend = False,
+ mode="lines",
+ line=dict(color=color1),
+ hovertemplate = "amount: " + currency + "%{y}"),
+ row=row_index, col=col_index)
+
+ fig.add_trace(
+ go.Scatter(x = amount_cost_df['threshold'],
+ y = amount_cost_df['cost_' + confusion_index],
+ showlegend = False,
+ mode="lines",
+ line=dict(color=color2),
+ hovertemplate = "cost: " + currency + "%{y}"),
+ row=row_index, col=col_index)
+
+ # Save middle points
+ middle_y_lst.append((max(fig.data[-2]['y'] + fig.data[-1]['y']) + min(fig.data[-2]['y'] + fig.data[-1]['y']))/2)
+ unit_y_lst.append((middle_y_lst[-1] - min(fig.data[-2]['y'] + fig.data[-1]['y']))/4)
+
+ x_intersect = []
+ y_intersect = []
+ diff_cost_amount = list(amount_cost_df['amount_' + confusion_index] - amount_cost_df['cost_' + confusion_index])
+
+ for i in range(len(diff_cost_amount)-1):
+ if (diff_cost_amount[i] < 0) & (diff_cost_amount[i+1]>=0):
+ x_intersect.append(amount_cost_df.iloc[i+1]['threshold'])
+ y_intersect.append(amount_cost_df.iloc[i+1]['cost_' + confusion_index])
+
+ elif (diff_cost_amount[i] > 0) & (diff_cost_amount[i+1]<=0):
+ x_intersect.append(amount_cost_df.iloc[i+1]['threshold'])
+ y_intersect.append(amount_cost_df.iloc[i+1]['cost_' + confusion_index])
+
+ fig.add_trace(
+ go.Scatter(x=x_intersect,
+ y=y_intersect,
+ showlegend = False,
+ mode = "markers",
+ marker_symbol = 'diamond',
+ marker_size = 8,
+ marker=dict(color='black'),
+ hovertemplate = "%{x}",
+ ),
+ row = row_index, col = col_index)
+
+ if x_intersect:
+ intercepts_str = 'Swaps: '
+ intercepts_str += ", ".join(str(round(x, n_of_decimals)) for x in x_intersect)
+ fig.add_annotation(xref="x domain",yref="y domain",x=0.5, y=1.15, showarrow=False,
+ text=intercepts_str, row=row_index, col=col_index)
+
+ # Create indicator markers
+ for threshold in threshold_values:
+ amount_cost_row = amount_cost_df.loc[amount_cost_df['threshold'] == threshold]
+
+ if threshold > middle_x:
+ left_or_right = ' left'
+ else:
+ left_or_right = ' right'
+
+ for confusion_index, row_index, col_index, middle_y, \
+ unit_y, color1, color2 in zip(['TN', 'FP', 'FN', 'TP'],
+ [1, 1, 2, 2],
+ [1, 2, 1, 2],
+ middle_y_lst,
+ unit_y_lst,
+ ['blue', 'red','#00CC96', '#AB63FA'],
+ ['rgb(128, 177, 211)', 'rgb(251, 128, 114)', 'rgb(141, 211, 199)', 'rgb(190, 186, 218)']):
+
+ y_point_amount, y_point_cost = float(amount_cost_row['amount_' + confusion_index]), float(amount_cost_row['cost_' + confusion_index])
+
+ if abs(y_point_amount - y_point_cost) < unit_y:
+
+ if y_point_amount > y_point_cost:
+ textposition_cost = 'bottom' + left_or_right
+ textposition_amount = 'top' + left_or_right
+
+ else:
+ textposition_cost = 'top' + left_or_right
+ textposition_amount = 'bottom' + left_or_right
+
+ else:
+
+ if y_point_cost < middle_y:
+ textposition_cost = 'top' + left_or_right
+ else:
+ textposition_cost = 'bottom' + left_or_right
+
+ if y_point_amount < middle_y:
+ textposition_amount = 'top' + left_or_right
+ else:
+ textposition_amount = 'bottom' + left_or_right
+
+ fig.add_trace(
+ go.Scatter(x = [threshold],
+ y = [y_point_amount],
+ showlegend = False,
+ mode = 'markers+text',
+ texttemplate = "amount: " + currency + "%{y}",
+ textposition = [textposition_amount],
+ hovertemplate = currency +'%{y}',
+ name = str(threshold),
+ marker = dict(color=color1),
+ marker_size = 8,
+ visible=False),
+ row = row_index, col = col_index)
+
+ fig.add_trace(
+ go.Scatter(x = [threshold],
+ y = [y_point_cost],
+ showlegend = False,
+ mode = 'markers+text',
+ texttemplate = "cost: " + currency + "%{y}",
+ textposition = [textposition_cost],
+ hovertemplate = currency +'%{y}',
+ name = str(threshold),
+ marker = dict(color=color2),
+ marker_size = 8,
+ visible=False),
+ row = row_index, col = col_index)
+
+ else:
+ static_charts_num = 4
+ markers_num = 4
+ if amounts is not None:
+ var_to_plot = 'amount'
+ titles = {threshold: '' for threshold in threshold_values} # set empty titles dict
+ else:
+ tot_amount = None
+ var_to_plot = 'cost'
+ titles = {threshold: "
Total cost: " + currency \
+ + '{:,.2f}'.format(value) for threshold, value in zip(threshold_values,
+ list(amount_cost_df['total_cost']))}
+
+ for confusion_index, row_index, col_index, color in zip([var_to_plot + '_TN', var_to_plot + '_FP',
+ var_to_plot + '_FN', var_to_plot + '_TP'],
+ [1, 1, 2, 2],
+ [1, 2, 1, 2],
+ ['blue', 'red',
+ '#00CC96', '#AB63FA']):
+ fig.add_trace(
+ go.Scatter(x = amount_cost_df['threshold'],
+ y = amount_cost_df[confusion_index],
+ showlegend = False,
+ mode="lines",
+ line=dict(color=color),
+ hovertemplate = var_to_plot + ": " + currency + "%{y}"),
+ row=row_index, col=col_index)
+
+ for i in range(4):
+ middle_y_lst.append((max(fig.data[i]['y']) + min(fig.data[i]['y']))/2)
+
+ # Create indicator markers
+ for threshold in threshold_values:
+
+ if threshold > middle_x:
+ left_or_right = ' left'
+ else:
+ left_or_right = ' right'
+
+ amount_cost_row = amount_cost_df.loc[amount_cost_df['threshold'] == threshold]
+
+ for confusion_index, row_index, col_index, middle_y, color in zip([var_to_plot + '_TN', var_to_plot + '_FP',
+ var_to_plot + '_FN', var_to_plot + '_TP'],
+ [1, 1, 2, 2],
+ [1, 2, 1, 2],
+ middle_y_lst,
+ ['blue', 'red', '#00CC96', '#AB63FA']):
+
+ y_point = float(amount_cost_row[confusion_index])
+
+ if y_point < middle_y:
+ textposition = 'top' + left_or_right
+ else:
+ textposition = 'bottom' + left_or_right
+
+ fig.add_trace(
+ go.Scatter(x = [threshold],
+ y = [y_point],
+ showlegend = False,
+ mode = 'markers+text',
+ texttemplate = var_to_plot + ": " + currency + "%{y}",
+ textposition = textposition,
+ hovertemplate = currency +'%{y}',
+ name = str(threshold),
+ marker=dict(color=color),
+ marker_size = 8,
+ visible=False),
+ row = row_index, col = col_index)
+
+ # if both amounts and cost are given, static_charts_num = 12
+ # (4 linecharts for amount, 4 for cost, 4 for intercepts) from fig.data[0] to fig.data[11]
+ # if either amounts or cost is not given, static_charts_num = 4
+ # there are just 4 linecharts from fig.data[0] to fig.data[3]
+ # line charts are always visible
+
+ # make visible also the first line-chart markers to visualize (associated with the first threshold)
+ for i in range(markers_num):
+ fig.data[static_charts_num + i].visible = True
+
+ steps = []
+ j = static_charts_num
+
+ for threshold in threshold_values:
+ step = dict(
+ method="update",
+ args=[{"visible": [False] * len(fig.data)},
+ {"title": dict(text = main_title + '' \
+ + subtitle + titles[threshold] + '',
+ y = 0.965, yanchor = 'bottom')}
+ ],
+ label = str(round(threshold, n_of_decimals))
+ )
+ step["args"][0]["visible"][:static_charts_num] = [True]*static_charts_num # line charts
+ step["args"][0]["visible"][j:j+markers_num] = [True]*markers_num # line chart markers
+
+ j += markers_num
+ steps.append(step)
+
+ sliders = [dict(
+ active=0,
+ currentvalue={"prefix": "Threshold: "},
+ steps=steps,
+ pad=dict(t = 50))]
+
+ fig.update_layout(sliders=sliders,
+ title = dict(text = main_title + '' \
+ + subtitle + titles[threshold_values[0]] + '',
+ y = 0.965, yanchor = 'bottom'), #first visible title
+ margin={'t': 125},
+ )
+
+ fig.update_layout(height=600, hovermode="x")
+
+ # Update xaxis properties
+ fig.update_xaxes(title_text="Threshold", title_font_size=12, row=2, col=1)
+ fig.update_xaxes(title_text="Threshold", title_font_size=12, row=2, col=2)
+
+ # Update yaxis properties
+ fig.update_yaxes(title_text="Amount/Cost", title_font_size=12, row=1, col=1)
+ fig.update_yaxes(title_text="Amount/Cost", title_font_size=12, row=2, col=1)
+
+ fig.show()
+
+ return amount_cost_df, round(tot_amount, 2)
+
+def total_amount_cost_plot(true_y, predicted_proba, threshold_step = 0.01,
+ amounts = None, cost_dict = None,
+ amount_classes = 'all', cost_classes = 'all', currency = '€',
+ title = 'Interactive Amount-Cost Line Chart'):
+
+ """
+ - Plots an interactive and customized line-plot with plotly,
+ displayng total amount and/or total cost for user-selected "confusion classes" (TN, FP, FN, TP) againts thresholds.
+ - Returns a dataframe containing, for every threshold and depending on the inputs,
+ the amount and cost associated to each class (TN, FP, FN, TP) and the total cost
+ - Returns the value of the total amount
+
+ Plot is constituted by one linechart with thresholds on x axis
+ and total amounts and/or total costs (depends on the given input) on y axis
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+ threshold_step: float, default=0.01
+ step between each classification threshold (ranging from 0 to 1) below which prediction label is 0, 1 otherwise
+ amounts: sequence of floats, default=None
+ amounts associated to each element of data
+ (e.g. fraud detection for online orders: amounts could be the orders' amounts)
+ cost_dict: dict, deafult=None
+ dict containing costs associated to each class (TN, FP, FN, TP)
+ with keys "TN", "FP", "FN", "TP"
+ and values that can be both lists (with coherent lenghts) and/or floats
+ (output from get_cost_dict)
+ amount_classes: {'all', 'TN', 'FP', 'FN', 'TP'}
+ or list containing allowed values except 'all'
+ the amount plotted is the sum of the amounts associated to data points belonging to the selected amount_classes
+ cost_classes: {'all', 'TN', 'FP', 'FN', 'TP'}
+ or list containing allowed values except 'all'
+ the total cost plotted is the sum of the costs associated to data points belonging to the selected cost_classes
+ currency: str, default='€'
+ currency symbol to be visualized. For unusual currencies, you can use their HTML code representation
+ (eg. Indian rupee: '₹')
+ title: str, default='Interactive Amount-Cost Line Chart'
+ The main title of the plot.
+
+ Returns
+ ----------
+ amount_cost_df: pandas dataframe
+ Dataframe containing variables:
+ - threshold
+ - if amounts/amount_classes are given: amounts relative to the user-selected classes and sum
+ - if cost_dict/cost_classes are given: cost relative to the user-selected classes and sum
+
+ """
+
+ if currency == '$':
+ currency = '$'
+
+ try:
+ n_of_decimals = len(str(threshold_step).rsplit('.')[1])
+ except:
+ n_of_decimals = 4
+
+ threshold_values = list(np.arange(0, 1 + threshold_step, threshold_step))
+ middle_x = (threshold_values[0] + threshold_values[-1])/2
+
+ supported_label = ["TN", "FP", "FN", "TP"]
+
+ if amounts is not None: # if amount_classes not given or 'all', set to ["TN", "FP", "FN", "TP"]
+ amounts = list(amounts)
+ if (amount_classes is None) or (amount_classes == 'all'):
+ amount_classes = supported_label
+ elif amount_classes is not None:
+ raise TypeError("if amount_classes is given, amounts can't be None.")
+
+ if cost_dict is not None: # if cost_classes not given or 'all', set to ["TN", "FP", "FN", "TP"]
+ if (cost_classes is None) or (cost_classes == 'all'):
+ cost_classes = supported_label
+ elif cost_classes is not None:
+ raise TypeError("if cost_classes is given, cost_dict can't be None.")
+
+ # get threshold-amount-cost dataframe (throws error if both cost_dict and amounts are None)
+ amount_cost_df = get_amount_cost_df(true_y, predicted_proba, threshold_values, amounts, cost_dict)
+
+ # Create figure
+ fig = go.Figure()
+
+ var_num = 0
+ subtitle = ""
+ col_lst = []
+
+ if amount_classes is not None:
+ var_num += 1
+
+ if isinstance(amount_classes, str):
+ amount_classes = [amount_classes]
+
+ amount_col_lst = ['amount_' + amount_class for amount_class in amount_classes]
+ amount_cost_df['amount_sum'] = amount_cost_df[amount_col_lst].apply(sum, axis = 1)
+ col_lst += amount_col_lst + ['amount_sum']
+ fig.add_trace(
+ go.Scatter(x = amount_cost_df['threshold'],
+ y = amount_cost_df['amount_sum'],
+ showlegend = False,
+ mode="lines",
+ hovertemplate = "total amount: " + currency + "%{y}"))
+
+ subtitle += "Amount categories: "
+ subtitle += " + ".join(amount_classes)
+ subtitle += "
"
+
+ if cost_classes is not None:
+ var_num += 1
+
+ if isinstance(cost_classes, str):
+ cost_classes = [cost_classes]
+
+ cost_col_lst = ['cost_' + cost_class for cost_class in cost_classes]
+ amount_cost_df['cost_sum'] = amount_cost_df[cost_col_lst].apply(sum, axis = 1)
+ col_lst += cost_col_lst + ['cost_sum']
+ fig.add_trace(
+ go.Scatter(x = amount_cost_df['threshold'],
+ y = amount_cost_df['cost_sum'],
+ showlegend = False,
+ mode="lines",
+ hovertemplate = "total cost: " + currency + "%{y}"))
+
+ subtitle += "Cost categories: "
+ subtitle += " + ".join(cost_classes)
+
+ intercepts_str = ''
+
+ if var_num == 2:
+ diff_cost_amount = list(amount_cost_df['amount_sum'] - amount_cost_df['cost_sum'])
+ x_intersect = []
+ y_intersect = []
+
+ for i in range(len(diff_cost_amount)-1):
+ if (diff_cost_amount[i] < 0) & (diff_cost_amount[i+1]>=0):
+ x_intersect.append(amount_cost_df.iloc[i+1]['threshold'])
+ y_intersect.append(amount_cost_df['cost_sum'].iloc[i+1])
+
+ elif (diff_cost_amount[i] > 0) & (diff_cost_amount[i+1]<=0):
+ x_intersect.append(amount_cost_df.iloc[i+1]['threshold'])
+ y_intersect.append(amount_cost_df['cost_sum'].iloc[i+1])
+
+ fig.add_trace(
+ go.Scatter(x=x_intersect,
+ y=y_intersect,
+ showlegend = False,
+ mode = "markers",
+ marker_symbol = 'diamond',
+ marker_size = 8,
+ marker=dict(color='black'),
+ hovertemplate = "%{x}"))
+
+ if x_intersect:
+ intercepts_str = 'Swaps at thresholds: '
+ intercepts_str += ", ".join(str(round(x, n_of_decimals)) for x in x_intersect)
+
+ fig.update_layout(title = dict(text = f"{title}
" + subtitle + \
+ '
' + intercepts_str,
+ y = 0.965, yanchor = 'bottom'),
+ margin={'t': 120},
+ )
+
+ fig.update_layout(height=600, hovermode="x unified")
+
+ # Update axis properties
+ fig.update_xaxes(title_text="Threshold")
+ fig.update_yaxes(title_text="Amount/Cost")
+
+ fig.show()
+
+ return amount_cost_df[['threshold'] + col_lst]
+
+
diff --git a/bctools/thresholds.py b/bctools/thresholds.py
new file mode 100644
index 0000000..e163ea9
--- /dev/null
+++ b/bctools/thresholds.py
@@ -0,0 +1,372 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+import pandas as pd
+import numpy as np
+import os
+import warnings
+
+from sklearn import metrics
+from sklearn.model_selection import train_test_split
+from sklearn.utils import resample
+
+from itertools import repeat
+from multiprocessing import Pool
+
+def get_optimized_thresholds_df(optimize_threshold, threshold_values, true_y, predicted_proba,
+ cost_dict = None,
+ N_subsets = 70, subsets_size = 0.2, with_replacement = False,
+ random_state = None):
+
+ """
+ Returns a dataframe with optimal decision thresholds, for given metrics, computed with GHOST method.
+
+ Parameters
+ ----------
+ optimize_threshold: {'all', 'ROC', 'MCC', 'Kappa', 'Fscore', 'Cost'}
+ or list containing allowed values except 'all'
+ metrics for which thresholds will be optimized
+ 'all' is equvalent to ['ROC', 'MCC', 'Kappa', 'Fscore'] if cost_dict=None, ['ROC', 'MCC', 'Kappa', 'Fscore', 'Cost'] otherwise
+ threshold_values: list of three floats
+ List of decision thresholds to screen for classification
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ random_state: int, default=None
+ Controls the randomness of the bootstrapping of the samples when optimizing thresholds with GHOST method
+
+ Returns
+ ----------
+ optimal_thresholds_df: pandas dataframe
+ Dataframe containing optimal thresholds
+ """
+
+ threshold_names_lst = []
+ threshold_array = np.array([])
+ supported_metrics = ['Kappa', 'MCC', 'ROC', 'Fscore', 'Cost']
+
+ if optimize_threshold == 'all':
+ if cost_dict:
+ optimize_threshold = supported_metrics
+ else:
+ optimize_threshold = supported_metrics[:-1]
+
+ if isinstance(optimize_threshold, str):
+ optimize_threshold = [optimize_threshold]
+
+ for metric_name in optimize_threshold:
+ if metric_name not in supported_metrics:
+ raise ValueError(f"Metric {metric_name} not supported. Supported metrics: {str(supported_metrics)}")
+ if metric_name == 'Cost':
+ if cost_dict is None:
+ raise TypeError("To optimize threshold for cost, cost_dict argument must not be None")
+
+ for metric_name in optimize_threshold:
+
+ if metric_name == 'Fscore':
+ threshold_names_lst.append('f1_score')
+ threshold_names_lst.append('f2_score')
+ threshold_names_lst.append('f05_score')
+ else:
+ threshold_names_lst.append(metric_name.lower())
+
+ if metric_name == 'Cost':
+ threshold_array = np.append(threshold_array,
+ np.round(get_cost_optimal_threshold(true_y, predicted_proba,
+ threshold_values, cost_dict,
+ N_subsets = N_subsets, subsets_size = subsets_size,
+ with_replacement = with_replacement,
+ random_seed = random_state),
+ 5))
+ else:
+ threshold_array = np.append(threshold_array,
+ np.round(get_optimal_threshold(true_y, predicted_proba,
+ threshold_values, ThOpt_metrics = metric_name,
+ N_subsets = N_subsets, subsets_size = subsets_size,
+ with_replacement = with_replacement,
+ random_seed = random_state),
+ 5))
+
+ threshold_array = np.ravel(threshold_array)
+ optimal_thresholds_df = pd.DataFrame(zip(threshold_names_lst, threshold_array), columns = ['optimized_metric', 'optimal_threshold'])
+ return optimal_thresholds_df
+
+def get_optimal_threshold(labels, probs, thresholds,
+ ThOpt_metrics = 'Kappa', N_subsets = 70,
+ subsets_size = 0.2, with_replacement = False, random_seed = None):
+
+ """ Optimize the decision threshold based on subsets of the given set (GHOST method).
+ The threshold that maximizes the chosen metric on the subsets is chosen as optimal.
+
+ Parameters
+ ----------
+ labels: sequence of ints
+ True labels
+ probs: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from cls.predict_proba(data)[:,1])
+ thresholds: list of floats
+ List of decision thresholds to screen for classification
+ ThOpt_metrics: str {'ROC', 'MCC', 'Kappa', 'Fscore'}, default='Kappa'
+ metric for which thresholds will be optimized
+ N_subsets: int, default=70
+ Number of subsets used in the optimization process
+ subsets_size: float or int, default=0.2
+ Size of the subsets used in the optimization process.
+ If float, represents the proportion of the dataset to include in the subsets.
+ If integer, it represents the actual number of instances to include in the subsets.
+ with_replacement: bool, default=False
+ If True, the subsets are drawn randomly with replacement, without otherwise.
+ random_seed: int, default=None
+ Controls the randomness of the bootstrapping of the samples
+
+ Returns
+ ----------
+ if ThOpt_metrics == Fscore,
+ opt_thresh_f1, opt_thresh_f2, opt_thresh_fpoint5: floats
+ Optimal decision thresholds for f-beta scores (beta=1, beta=2, beta=0.5)
+
+ otherwise:
+ opt_thresh: float
+ Optimal decision threshold
+ """
+
+ supported_metrics = ['Kappa', 'MCC', 'ROC', 'Fscore']
+
+ if ThOpt_metrics not in supported_metrics:
+ raise ValueError(f"Metric {ThOpt_metrics} not supported. Supported metrics: {str(supported_metrics)}")
+
+ # seeding
+ np.random.seed(random_seed)
+ random_seeds = np.random.randint(N_subsets*10, size=N_subsets)
+
+ df_preds = pd.DataFrame({'labels':labels,'probs':probs})
+ thresh_names = [str(x) for x in thresholds]
+ for thresh in thresholds:
+ df_preds = pd.concat([df_preds, pd.Series([1 if x>=thresh else 0 for x in probs], name=str(thresh))], axis=1)
+
+ n = max(os.cpu_count()-1, 1)
+
+ if ThOpt_metrics == 'ROC':
+ sensitivity_accum = []
+ specificity_accum = []
+ pool = Pool(n)
+
+ # Calculate sensitivity and specificity for a range of thresholds and N_subsets
+ for i in range(N_subsets):
+ if with_replacement:
+ if isinstance(subsets_size, float):
+ Nsamples = int(df_preds.shape[0]*subsets_size)
+ elif isinstance(subsets_size, int):
+ Nsamples = subsets_size
+ df_subset = resample(df_preds, n_samples = Nsamples, stratify=labels, random_state = random_seeds[i])
+ labels_subset = list(df_subset['labels'])
+ else:
+ df_tmp, df_subset, labels_tmp, labels_subset = train_test_split(df_preds, labels, test_size = subsets_size,
+ stratify = labels, random_state = random_seeds[i])
+
+ result = pool.starmap(_compute_sensitivity_specificity,
+ zip(repeat(labels_subset), [list(df_subset[threshold]) for threshold in thresh_names]))
+ result_array = np.array(result)
+ sensitivity_accum.append(result_array[:, 0])
+ specificity_accum.append(result_array[:, 1])
+ pool.close()
+
+ # determine the threshold that provides the best results on the training subsets
+ median_sensitivity, std_sensitivity = _helper_calc_median_std(sensitivity_accum)
+ median_specificity, std_specificity = _helper_calc_median_std(specificity_accum)
+ roc_dist_01corner = (2*median_sensitivity*median_specificity)/(median_sensitivity+median_specificity)
+ opt_thresh = thresholds[np.argmax(roc_dist_01corner)]
+
+ return opt_thresh
+
+ elif ThOpt_metrics == 'Fscore':
+ recall_accum = []
+ precision_accum = []
+ pool = Pool(n)
+
+ # Calculate sensitivity and specificity for a range of thresholds and N_subsets
+ for i in range(N_subsets):
+ if with_replacement:
+ if isinstance(subsets_size, float):
+ Nsamples = int(df_preds.shape[0]*subsets_size)
+ elif isinstance(subsets_size, int):
+ Nsamples = subsets_size
+ df_subset = resample(df_preds, n_samples = Nsamples, stratify=labels, random_state = random_seeds[i])
+ labels_subset = list(df_subset['labels'])
+ else:
+ df_tmp, df_subset, labels_tmp, labels_subset = train_test_split(df_preds, labels, test_size = subsets_size,
+ stratify = labels, random_state = random_seeds[i])
+
+ result = pool.starmap(_compute_precision_recall,
+ zip(repeat(labels_subset), [list(df_subset[threshold]) for threshold in thresh_names]))
+ result_array = np.array(result)
+ precision_accum.append(result_array[:, 0])
+ recall_accum.append(result_array[:, 1])
+ pool.close()
+
+ # determine the threshold that provides the best results on the training subsets
+ median_precision, std_precision = _helper_calc_median_std(precision_accum)
+ median_recall, std_recall = _helper_calc_median_std(recall_accum)
+ f1 = (2*median_precision*median_recall)/(median_precision+median_recall)
+ opt_thresh_f1 = thresholds[np.argmax(f1)]
+ f2 = (5*median_precision*median_recall)/(4*median_precision+median_recall)
+ opt_thresh_f2 = thresholds[np.argmax(f2)]
+ fpoint5 = (1.25*median_precision*median_recall)/(0.25*median_precision+median_recall)
+ opt_thresh_fpoint5 = thresholds[np.argmax(fpoint5)]
+
+ return opt_thresh_f1, opt_thresh_f2, opt_thresh_fpoint5
+
+ else:
+ score_accum = []
+ pool = Pool(n)
+ for i in range(N_subsets):
+ if with_replacement:
+ if isinstance(subsets_size, float):
+ Nsamples = int(df_preds.shape[0]*subsets_size)
+ elif isinstance(subsets_size, int):
+ Nsamples = subsets_size
+ df_subset = resample(df_preds, replace=True, n_samples = Nsamples, stratify=labels, random_state = random_seeds[i])
+ labels_subset = df_subset['labels']
+ else:
+ df_tmp, df_subset, labels_tmp, labels_subset = train_test_split(df_preds, labels, test_size = subsets_size,
+ stratify = labels, random_state = random_seeds[i])
+ result = pool.starmap(_get_metric_function(ThOpt_metrics),
+ zip(repeat(labels_subset), [list(df_subset[threshold]) for threshold in thresh_names]))
+ score_accum.append(result)
+ pool.close()
+
+ # determine the threshold that provides the best results on the training subsets
+ y_values_median, y_values_std = _helper_calc_median_std(score_accum)
+ opt_thresh = thresholds[np.argmax(y_values_median)]
+
+ return opt_thresh
+
+def get_cost_optimal_threshold(labels, probs, thresholds, cost_dict,
+ N_subsets = 70, subsets_size = 0.2,
+ with_replacement = False, random_seed = None):
+
+ """ Optimize the decision threshold for minimal cost based on subsets of the given set (GHOST method).
+
+ Parameters
+ ----------
+ labels: sequence of ints
+ True labels
+ probs: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from cls.predict_proba(data)[:,1])
+ thresholds: list of floats
+ List of decision thresholds to screen for classification
+ cost_dict: dict
+ dict containing costs associated to each class (TN, FP, FN, TP)
+ with keys "TN", "FP", "FN", "TP"
+ and values that can be both lists (with coherent lenghts) and/or floats
+ (output from get_cost_dict)
+ N_subsets: int, default=70
+ Number of subsets used in the optimization process
+ subsets_size: float or int, default=0.2
+ Size of the subsets used in the optimization process.
+ If float, represents the proportion of the dataset to include in the subsets.
+ If integer, it represents the actual number of instances to include in the subsets.
+ with_replacement: bool, default=False
+ If True, the subsets are drawn randomly with replacement, without otherwise.
+ random_seed: int, default=None
+ Controls the randomness of the bootstrapping of the samples
+
+ Returns
+ ----------
+ opt_thresh: float
+ Optimal decision threshold
+ """
+
+ # seeding
+ np.random.seed(random_seed)
+ random_seeds = np.random.randint(N_subsets*10, size=N_subsets)
+
+ df_preds_costs = pd.DataFrame({'labels':labels,'probs':probs,
+ 'cost_TN':cost_dict['TN'],
+ 'cost_FP':cost_dict['FP'],
+ 'cost_FN':cost_dict['FN'],
+ 'cost_TP':cost_dict['TP']})
+
+ thresh_names = [str(x) for x in thresholds]
+ for thresh in thresholds:
+ df_preds_costs = pd.concat([df_preds_costs, pd.Series([1 if x>=thresh else 0 for x in probs], name=str(thresh))], axis=1)
+
+ n = max(os.cpu_count()-1, 1)
+
+ score_accum = []
+ pool = Pool(n)
+ for i in range(N_subsets):
+ if with_replacement:
+ if isinstance(subsets_size, float):
+ Nsamples = int(df_preds.shape[0]*subsets_size)
+ elif isinstance(subsets_size, int):
+ Nsamples = subsets_size
+ df_subset = resample(df_preds_costs, replace=True, n_samples = Nsamples, stratify=labels, random_state = random_seeds[i])
+ labels_subset = df_subset['labels']
+ else:
+ df_tmp, df_subset, labels_tmp, labels_subset = train_test_split(df_preds_costs, labels, test_size = subsets_size,
+ stratify = labels, random_state = random_seeds[i])
+
+ result = pool.starmap(_get_total_cost,
+ zip(repeat(labels_subset),
+ [df_subset[[threshold, 'cost_TN', 'cost_FP', 'cost_FN', 'cost_TP']] for threshold in thresh_names]))
+ score_accum.append(result)
+ pool.close()
+
+ # determine the threshold that provides the best results on the training subsets
+ y_values_median, y_values_std = _helper_calc_median_std(score_accum)
+ opt_thresh = thresholds[np.argmin(y_values_median)]
+
+ return opt_thresh
+
+def _get_metric_function(metric_name):
+ # Returns the scikit function relative to the metric_name
+ if metric_name == 'Kappa':
+ return metrics.cohen_kappa_score
+ elif metric_name == 'MCC':
+ return _MCC_wrapper
+
+def _MCC_wrapper(labels, preds):
+ # Wraps scikit matthews_corrcoef function suppressing zerodivision warnings
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore")
+ return metrics.matthews_corrcoef(labels, preds)
+
+def _precision_score_wrapper(labels, preds):
+ # Wraps scikit precision_score function with parameter zero_division = 1
+ return metrics.precision_score(labels, preds, zero_division = 1)
+
+def _recall_score_wrapper(labels, preds, pos_label=1):
+ # Wraps scikit recall_score function with parameter zero_division = 1
+ return metrics.recall_score(labels, preds, pos_label=pos_label, zero_division = 1)
+
+def _compute_sensitivity_specificity(labels, preds):
+ # Computes sensitivity (recall) and specificity through wrapped scikit functions
+ return [_recall_score_wrapper(labels, preds),
+ _recall_score_wrapper(labels, preds, pos_label=0)]
+
+def _get_total_cost(true_y, prediction_data_df):
+ # Computes total cost
+ y_pred = prediction_data_df.iloc[:,0]
+ cost_TN = sum(prediction_data_df[(true_y == 0) & (y_pred == 0)]['cost_TN'])
+ cost_FP = sum(prediction_data_df[(true_y == 0) & (y_pred == 1)]['cost_FP'])
+ cost_FN = sum(prediction_data_df[(true_y == 1) & (y_pred == 0)]['cost_FN'])
+ cost_TP = sum(prediction_data_df[(true_y == 1) & (y_pred == 1)]['cost_TP'])
+
+ return cost_TN + cost_FP + cost_FN + cost_TP
+
+def _compute_precision_recall(labels, preds):
+ # Computes precision and recall through wrapped scikit functions
+ return [_precision_score_wrapper(labels, preds),
+ _recall_score_wrapper(labels, preds)]
+
+def _helper_calc_median_std(specificity):
+ # Calculate median and std of the columns of a pandas dataframe
+ arr = np.array(specificity)
+ y_values_median = np.median(arr,axis=0)
+ y_values_std = np.std(arr,axis=0)
+ return y_values_median, y_values_std
+
diff --git a/bctools/utilities.py b/bctools/utilities.py
new file mode 100644
index 0000000..3469026
--- /dev/null
+++ b/bctools/utilities.py
@@ -0,0 +1,368 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+import pandas as pd
+import numpy as np
+import warnings
+
+from sklearn import metrics
+
+def get_cost_dict(TN = 0, FP = 0, FN = 0, TP = 0):
+
+ """
+ Creates dictionary of "confusion classes" costs
+ (confusion classes are: True Negative TN, False Positive FP, False Negative FN and True Positive TP)
+
+ Parameters
+ ----------
+ TN: float or sequence of floats, default=0
+ cost associated to true negative predictions
+ FP: float or sequence of floats, default=0
+ cost associated to false positive predictions
+ FN: float or sequence of floats, default=0
+ cost associated to false negative predictions
+ TP: float or sequence of floats, default=0
+ cost associated to true positive predictions
+
+ Returns
+ ----------
+ cost_dict: dict, default=None
+ dict containing keys: "TN", "FP", "FN", "TP"
+ and values corresponding to lists (with coherent lenghts) and/or floats
+ """
+ confusion_class_lenghts = []
+
+ if (hasattr(TN, '__iter__')) and (len(TN) == 1):
+ TN = TN[0]
+
+ if (hasattr(FP, '__iter__')) and (len(FP) == 1):
+ FP = FP[0]
+
+ if (hasattr(FN, '__iter__')) and (len(FN) == 1):
+ FN = FN[0]
+
+ if (hasattr(TP, '__iter__')) and (len(TP) == 1):
+ TP = TP[0]
+
+ for confusion_class in [TN, FP, FN, TP]:
+
+ if hasattr(confusion_class, '__iter__'):
+
+ confusion_class = list(confusion_class)
+ confusion_class_lenghts.append(len(confusion_class))
+ it = iter(confusion_class_lenghts)
+ the_len = next(it)
+ if not all(l == the_len for l in it):
+ raise ValueError('not all list-like confusion classes data have same length')
+
+ # build cost_dict
+ cost_dict = {'TN' : TN,
+ 'FP' : FP,
+ 'FN' : FN,
+ 'TP' : TP}
+
+ return cost_dict
+
+def get_confusion_category_observations_df(confusion_category, X_data, true_y, predicted_proba, threshold = 0.5):
+
+ """ Returns X (features) dataframe of data points related to a chosen "confusion category",
+ based on given true label, predicted probabilities and decision threshold
+ (confusion category is either True Negative TN, False Positive FP, False Negative FN, True Positive TP)
+
+ Parameters
+ ----------
+ confusion_category: str {'TN', 'FP', 'FN', 'TP'}
+ confusion category is either True Negative TN, False Positive FP, False Negative FN, True Positive TP
+ X_data: sequence of features (nd.array or list or pandas object)
+ set of features
+ true_y: sequence of ints
+ True labels for X_data
+ predicted_proba: sequence of floats
+ predicted probabilities for the class '1' of the X_data set
+ (e.g. output from cls.predict_proba(X_data)[:,1])
+ threshold: float, default=0.5
+ classification threshold below which prediction label is 0, 1 otherwise
+
+ Returns
+ ----------
+ X_filtered_df: pandas DataFrame
+ X DataFrame of features for data points in chosen confusion category
+ """
+
+ if confusion_category not in ['TN', 'FP', 'FN', 'TP']:
+ raise ValueError("confusion_class must be one of {'TN', 'FP', 'FN', 'TP'}")
+
+ X_df = pd.DataFrame(X_data)
+ true_y_array = np.squeeze(np.array(true_y))
+ predicted_proba_array = np.squeeze(np.array(predicted_proba))
+
+ if confusion_category == 'TN':
+ X_filtered_df = X_df[(true_y_array == 0) & (predicted_proba < threshold)]
+
+ elif confusion_category == 'FP':
+ X_filtered_df = X_df[(true_y_array == 0) & (predicted_proba >= threshold)]
+
+ elif confusion_category == 'FN':
+ X_filtered_df = X_df[(true_y_array == 1) & (predicted_proba < threshold)]
+
+ else: #'TP'
+ X_filtered_df = X_df[(true_y_array == 1) & (predicted_proba >= threshold)]
+
+ return X_filtered_df
+
+def get_amount_cost_df(true_y, predicted_proba, threshold_values, amounts = None, cost_dict = None):
+
+ """
+ For each threshold, computes relative amounts and/or cost for each class (TN, FP, FN, TP)
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+ threshold_values: sequence of floats
+ list of classification thresholds below which prediction label is 0, 1 otherwise
+ amounts: sequence of floats, default=None
+ amounts associated to each element of data
+ cost_dict: dict, default=None
+ dict containing keys: "TN", "FP", "FN", "TP"
+ and values corresponding to lists (with coherent lenghts) and/or floats
+ (output from get_cost_dict)
+ Returns
+ ----------
+ amount_cost_per_threshold_df: pandas dataframe
+ Dataframe containing variables:
+ - threshold
+ - if amounts is given: amounts relative to each class (TN, FP, FN, TP)
+ - if cost_dict is given: cost relative to each class (TN, FP, FN, TP) and total cost
+
+ """
+ if (amounts is not None) and (cost_dict is not None): #both cost and amounts
+ amount_TN = []
+ amount_FP = []
+ amount_FN = []
+ amount_TP = []
+
+ cost_TN = []
+ cost_FP = []
+ cost_FN = []
+ cost_TP = []
+
+ for threshold in threshold_values:
+ amount_matrix = _get_amount_matrix(true_y, predicted_proba, threshold, amounts)
+ amount_TN.append(amount_matrix[0,0])
+ amount_FP.append(amount_matrix[0,1])
+ amount_FN.append(amount_matrix[1,0])
+ amount_TP.append(amount_matrix[1,1])
+
+ cost_matrix = _get_cost_matrix(true_y, predicted_proba, threshold, cost_dict)
+ cost_TN.append(cost_matrix[0,0])
+ cost_FP.append(cost_matrix[0,1])
+ cost_FN.append(cost_matrix[1,0])
+ cost_TP.append(cost_matrix[1,1])
+
+ amount_cost_per_threshold_df = pd.DataFrame(zip(threshold_values,
+ amount_TN, amount_FP, amount_FN, amount_TP,
+ cost_TN, cost_FP, cost_FN, cost_TP),
+ columns = ['threshold',
+ 'amount_TN', 'amount_FP', 'amount_FN', 'amount_TP',
+ 'cost_TN', 'cost_FP', 'cost_FN', 'cost_TP']).sort_values(by='threshold')
+
+ amount_cost_per_threshold_df['total_cost'] = amount_cost_per_threshold_df[['cost_TN', 'cost_FP',
+ 'cost_FN', 'cost_TP']].apply(sum, axis = 1)
+ elif amounts is not None: # only amounts
+ total_amount = sum(amounts)
+ amount_TN = []
+ amount_FP = []
+ amount_FN = []
+ amount_TP = []
+
+ for threshold in threshold_values:
+ amount_matrix = _get_amount_matrix(true_y, predicted_proba, threshold, amounts)
+ amount_TN.append(amount_matrix[0,0])
+ amount_FP.append(amount_matrix[0,1])
+ amount_FN.append(amount_matrix[1,0])
+ amount_TP.append(amount_matrix[1,1])
+
+ amount_cost_per_threshold_df = pd.DataFrame(zip(threshold_values,
+ amount_TN, amount_FP, amount_FN, amount_TP),
+ columns = ['threshold',
+ 'amount_TN', 'amount_FP',
+ 'amount_FN', 'amount_TP']).sort_values(by='threshold')
+
+
+ elif cost_dict is not None: # only cost
+ cost_TN = []
+ cost_FP = []
+ cost_FN = []
+ cost_TP = []
+
+ for threshold in threshold_values:
+ cost_matrix = _get_cost_matrix(true_y, predicted_proba, threshold, cost_dict)
+ cost_TN.append(cost_matrix[0,0])
+ cost_FP.append(cost_matrix[0,1])
+ cost_FN.append(cost_matrix[1,0])
+ cost_TP.append(cost_matrix[1,1])
+
+ amount_cost_per_threshold_df = pd.DataFrame(zip(threshold_values,
+ cost_TN, cost_FP, cost_FN, cost_TP),
+ columns = ['threshold',
+ 'cost_TN', 'cost_FP', 'cost_FN', 'cost_TP']).sort_values(by='threshold')
+
+ amount_cost_per_threshold_df['total_cost'] = amount_cost_per_threshold_df[['cost_TN', 'cost_FP',
+ 'cost_FN', 'cost_TP']].apply(sum, axis = 1)
+
+ else: # no cost or amount
+ raise TypeError("cost_dict and amounts can't be both None.")
+
+ return amount_cost_per_threshold_df
+
+
+def get_invariant_metrics_df(true_y, predicted_proba):
+
+ """
+ Computes following metrics (based on non-thresholded predicted probabilities):
+ ROC auc macro, ROC auc weighted, Pecision-Recall auc, Brier score
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+
+ Returns
+ ----------
+ metrics_df: pandas dataframe
+ Dataframe containing computed metrics
+ """
+
+ metrics_names = ['roc_auc', 'pr_auc', 'brier_score']
+ metrics_lst = []
+ metrics_lst.append(round(metrics.roc_auc_score(true_y, predicted_proba), 4))
+ metrics_lst.append(round(metrics.average_precision_score(true_y, predicted_proba), 4))
+ metrics_lst.append(round(metrics.brier_score_loss(true_y, predicted_proba), 4))
+
+ metrics_df = pd.DataFrame(zip(metrics_names, metrics_lst), columns = ['invariant_metric', 'value'])
+ return metrics_df
+
+def get_confusion_matrix_and_metrics_df(true_y, predicted_proba, threshold = 0.5, normalize = None):
+
+ """
+ Compute 2x2 Confusion Matrix and following metrics (based on thresholded predicted probabilities):
+ Accuracy, Balanced accuracy, F1 score, Precision, Recall, Matthews corr. coeff, Cohen's Kappa
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+ threshold: float, default=0.5
+ classification threshold below which prediction label is 0, 1 otherwise
+ normalize: {‘true’, ‘pred’, ‘all’}, default=None
+ normalizes confusion matrix over the true (rows), predicted (columns) conditions or all the population.
+ If None, confusion matrix will not be normalized
+
+ Returns
+ ----------
+ cf_matrix: 2x2 np.array
+ confusion matrix
+ metrics_df: pandas dataframe
+ Dataframe containing metrics
+ """
+
+ y_pred = [int(x >= threshold) for x in predicted_proba]
+ cf_matrix = metrics.confusion_matrix(true_y, y_pred, normalize = normalize)
+
+ metrics_names = ['accuracy', 'balanced_accuracy', 'f1_score', 'precision', 'recall', "cohens_kappa", 'matthews_corr_coef']
+ metrics_lst = []
+ metrics_lst.append(round(metrics.accuracy_score(true_y, y_pred), 4))
+ metrics_lst.append(round(metrics.balanced_accuracy_score(true_y, y_pred), 4))
+ metrics_lst.append(round(metrics.f1_score(true_y, y_pred, zero_division = 0), 4))
+ metrics_lst.append(round(metrics.precision_score(true_y, y_pred, zero_division = 1), 4))
+ metrics_lst.append(round(metrics.recall_score(true_y, y_pred, zero_division = 1), 4))
+ metrics_lst.append(round(metrics.cohen_kappa_score(true_y, y_pred), 4))
+
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore")
+ metrics_lst.append(round(metrics.matthews_corrcoef(true_y, y_pred), 4))
+
+ metrics_df = pd.DataFrame(zip(metrics_names, metrics_lst), columns = ['threshold_dependent_metric', 'value'])
+
+ return cf_matrix, metrics_df
+
+def _get_amount_matrix(true_y, predicted_proba, threshold, amounts):
+
+ """
+ Compute Amount Matrix to annotate custom plotly confusion matrix plot
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+ threshold: float
+ classification threshold below which prediction label is 0, 1 otherwise
+ amounts: sequence of floats
+ amounts associated to each element of data
+ (e.g. fraud detection: amount could be the associated order amount for each order)
+
+ Returns
+ ----------
+ amount_matrix: np.array
+ matrix with amount values for each class (TN, FP, FN, TP)
+ """
+ prediction_data_df = pd.DataFrame(zip(true_y, predicted_proba, amounts), columns = ['true_y', 'predicted_proba', 'amounts'])
+
+ amount_TP = sum(prediction_data_df[(prediction_data_df['true_y'] == 1) & (prediction_data_df['predicted_proba'] >= threshold)]['amounts'])
+ amount_FP = sum(prediction_data_df[(prediction_data_df['true_y'] == 0) & (prediction_data_df['predicted_proba'] >= threshold)]['amounts'])
+ amount_TN = sum(prediction_data_df[(prediction_data_df['true_y'] == 0) & (prediction_data_df['predicted_proba'] < threshold)]['amounts'])
+ amount_FN = sum(prediction_data_df[(prediction_data_df['true_y'] == 1) & (prediction_data_df['predicted_proba'] < threshold)]['amounts'])
+
+ amount_matrix = np.array([[amount_TN, amount_FP],
+ [amount_FN, amount_TP]])
+ return amount_matrix
+
+def _get_cost_matrix(true_y, predicted_proba, threshold, cost_dict):
+
+ """
+ Compute Cost Matrix to annotate custom plotly confusion matrix plot:
+
+ Parameters
+ ----------
+ true_y: sequence of ints
+ True labels
+ predicted_proba: sequence of floats
+ predicted probabilities for class 1
+ (e.g. output from model.predict_proba(data)[:,1])
+ threshold: float
+ classification threshold below which prediction label is 0, 1 otherwise
+ cost_dict: dict
+ dict containing keys: "TN", "FP", "FN", "TP"
+ and values corresponding to lists (with same lenght) and/or floats
+ (output from get_cost_dict)
+ Returns
+ ----------
+ cost_matrix: np.array
+ matrix with cost values for each class (TN, FP, FN, TP)
+ """
+ prediction_data_df = pd.DataFrame(zip(true_y, predicted_proba), columns = ['true_y', 'predicted_proba'])
+
+ for confusion_class in ['TN', 'FP', 'FN', 'TP']:
+ prediction_data_df['cost_' + confusion_class] = cost_dict[confusion_class]
+
+ cost_TN = sum(prediction_data_df[(prediction_data_df['true_y'] == 0) & (prediction_data_df['predicted_proba'] < threshold)]['cost_TN'])
+ cost_FP = sum(prediction_data_df[(prediction_data_df['true_y'] == 0) & (prediction_data_df['predicted_proba'] >= threshold)]['cost_FP'])
+ cost_FN = sum(prediction_data_df[(prediction_data_df['true_y'] == 1) & (prediction_data_df['predicted_proba'] < threshold)]['cost_FN'])
+ cost_TP = sum(prediction_data_df[(prediction_data_df['true_y'] == 1) & (prediction_data_df['predicted_proba'] >= threshold)]['cost_TP'])
+
+ cost_matrix = np.array([[cost_TN, cost_FP],
+ [cost_FN, cost_TP]])
+ return cost_matrix
diff --git a/example-notebook/example_classification_model.ipynb b/example-notebook/example_classification_model.ipynb
new file mode 100644
index 0000000..232ac09
--- /dev/null
+++ b/example-notebook/example_classification_model.ipynb
@@ -0,0 +1,24494 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "ec3442ef",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "import sys\n",
+ "import inspect\n",
+ "\n",
+ "import numpy as np\n",
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "20da98b1",
+ "metadata": {},
+ "source": [
+ "### Create dataset for classification and train random forest model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "5eb9da27",
+ "metadata": {
+ "gather": {
+ "logged": 1648913050060
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,\n",
+ " criterion='gini', max_depth=6, max_features='auto',\n",
+ " max_leaf_nodes=None, max_samples=None,\n",
+ " min_impurity_decrease=0.0, min_impurity_split=None,\n",
+ " min_samples_leaf=1, min_samples_split=2,\n",
+ " min_weight_fraction_leaf=0.0, n_estimators=100,\n",
+ " n_jobs=None, oob_score=True, random_state=None,\n",
+ " verbose=0, warm_start=False)"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from sklearn.ensemble import RandomForestClassifier\n",
+ "from sklearn.datasets import make_classification\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "\n",
+ "# Generate a binary imbalanced classification problem, with 80% zeros and 20% ones.\n",
+ "X, y = make_classification(n_samples=1000, n_features=20,\n",
+ " n_informative=14, n_redundant=0,\n",
+ " random_state=12, shuffle=False, weights = [0.8, 0.2])\n",
+ "\n",
+ "# Train - test split\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, stratify = y, random_state=0)\n",
+ "\n",
+ "# Train a RF classifier\n",
+ "cls = RandomForestClassifier(max_depth=6, oob_score=True)\n",
+ "cls.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "86722304",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Get prediction probabilities for the train set\n",
+ "train_predicted_proba = cls.predict_proba(X_train)[:,1]\n",
+ "\n",
+ "# Get prediction probabilities for the test set\n",
+ "test_predicted_proba = cls.predict_proba(X_test)[:,1] "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5424ab6b",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "## Import bctools package"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "3c7d52de",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "import bctools as bc"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "833fb21b",
+ "metadata": {},
+ "source": [
+ "### MAIN PARAMETERS\n",
+ " \n",
+ "- **true_y**: true labels for target class \\\n",
+ " Type: iterable (list, array, series...) \n",
+ " \n",
+ " \n",
+ "- **predicted_proba**: predicted probabilities for class 1 \\\n",
+ " Type: iterable (list, array, series...) \\\n",
+ " (e.g. output from model.predict_proba(data)[:,1]) \n",
+ " \n",
+ " \n",
+ "- **threshold_step**: step between each classification threshold \\\n",
+ " Type: iterable (list, array, series...), default = 0.01\n",
+ " \n",
+ "\n",
+ "- **amounts**: amount associated with each data point \\\n",
+ " Type: iterable (list, array, series...), default = None \n",
+ " \n",
+ "\n",
+ "- **cost_dict**: dictionary with cost associated to each class in TN, FP, FN, TP \\\n",
+ " Type: dictionary with keys: \"TN\", \"FP\", \"FN\", \"TP\" and values that can be both lists (with coherent lenghts) and/or floats,\\\n",
+ " default = None \\\n",
+ " (output from bc.get_cost_dict()) \n",
+ " \n",
+ " \n",
+ "- **optimize_threshold**: metrics to be used for threshold optimization using GHOST method \\\n",
+ " Type: {'all', 'ROC', 'MCC', 'Kappa', 'Fscore', 'Cost'} or list containing any combination of the allowed values (except 'all'), default = None \\\n",
+ " If 'Cost' is explicitely passed, *cost_dict* must be given and the threshold will be optimized to minimize the total cost\\\n",
+ " 'all' is equivalent to ['ROC', 'MCC', 'Kappa', 'Fscore', 'Cost'] if *cost_dict* is given, \\\n",
+ " ['ROC', 'MCC', 'Kappa', 'Fscore'] otherwise\n",
+ "\n",
+ "\n",
+ "- **N_subsets**: Number of subsets used in the optimization process \\\n",
+ " Type: int, default = 70. Ignored when *optimize_threshold* = None.\n",
+ "\n",
+ "\n",
+ "- **subsets_size**: Size of the subsets used in the optimization process. If float, it represents the proportion of the dataset, if int, the actual number of instances \\\n",
+ " Type: int or float, default = 0.2. Ignored when *optimize_threshold* = None.\n",
+ "\n",
+ "\n",
+ "- **with_replacement**: whether subsets used in the optimization process are randomly drawn with replacement or without \\\n",
+ " Type: bool, default = False. Ignored when *optimize_threshold* = None.\n",
+ "\n",
+ "\n",
+ "- **currency**: currency symbol to be visualized in plots\\\n",
+ " Type: str, default = '€'\n",
+ " \n",
+ "\n",
+ "- **random_state**: controls randomness of threshold optimization bootstrap method \\\n",
+ " Type: int, default = None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "7aedaf7c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# set params for the train dataset\n",
+ "threshold_step = 0.05\n",
+ "amounts = np.abs(X_train[:, 13])\n",
+ "optimize_threshold = 'all'\n",
+ "currency = '$' "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "2ac95faf",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# The function get_cost_dict can be used to define the dictionary of costs.\n",
+ "# It takes as input, for each class, a float or a list of floats. \n",
+ "# Lists must have coherent lenghts \n",
+ "\n",
+ "train_cost_dict = bc.get_cost_dict(TN = 0, FP = 10, FN = np.abs(X_train[:, 12]), TP = 0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "f9b8ee1c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "cells": {
+ "values": [
+ [
+ "roc_auc",
+ "pr_auc",
+ "brier_score"
+ ],
+ [
+ 0.999,
+ 0.9965,
+ 0.0426
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0.33666666666666667,
+ 0.6633333333333333
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Invariant Metric",
+ "Value"
+ ]
+ },
+ "type": "table"
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "kappa",
+ "mcc",
+ "roc",
+ "f1_score",
+ "f2_score",
+ "f05_score",
+ "cost"
+ ],
+ [
+ 0.25,
+ 0.25,
+ 0.25,
+ 0.25,
+ 0.25,
+ 0.35,
+ 0.35
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0.6733333333333333,
+ 1
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Optimized Metric",
+ "Optimal Threshold"
+ ]
+ },
+ "type": "table"
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.2025,
+ 0.5,
+ 0.3368,
+ 0.2025,
+ 1,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": true
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.0",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.2025",
+ "268.7178398929784",
+ "0.1774276534164848",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "6380",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": true,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 162
+ ],
+ [
+ 0,
+ 638
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.4225,
+ 0.6379,
+ 0.4122,
+ 0.2596,
+ 1,
+ 0.1337,
+ 0.2676
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.05",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.2025",
+ "268.7178398929784",
+ "0.1774276534164848",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.22",
+ "309.9196058490176",
+ "0.20463214662432958",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.5775",
+ "935.8831755852963",
+ "0.6179401999591843",
+ "4620",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 162
+ ],
+ [
+ 176,
+ 462
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.7338,
+ 0.8331,
+ 0.6034,
+ 0.432,
+ 1,
+ 0.4469,
+ 0.5364
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.1",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.2025",
+ "268.7178398929784",
+ "0.1774276534164848",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.53125",
+ "809.5673909124494",
+ "0.5345370538454348",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.26625",
+ "436.23539052186396",
+ "0.28803529273807865",
+ "2130",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 162
+ ],
+ [
+ 425,
+ 213
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.875,
+ 0.9216,
+ 0.7642,
+ 0.6183,
+ 1,
+ 0.6854,
+ 0.7221
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.15",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.2025",
+ "268.7178398929784",
+ "0.1774276534164848",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.6725",
+ "1052.917860168611",
+ "0.6952152683440228",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.125",
+ "192.88492126570256",
+ "0.12735707823949088",
+ "1000",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 162
+ ],
+ [
+ 538,
+ 100
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.9538,
+ 0.971,
+ 0.8975,
+ 0.8141,
+ 1,
+ 0.868,
+ 0.8757
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.2",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.2025",
+ "268.7178398929784",
+ "0.1774276534164848",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.75125",
+ "1183.3346828565907",
+ "0.7813262270536409",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.04625",
+ "62.468098577723275",
+ "0.041246119529873115",
+ "370",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 162
+ ],
+ [
+ 601,
+ 37
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.9875,
+ 0.9876,
+ 0.9697,
+ 0.9524,
+ 0.9877,
+ 0.9618,
+ 0.9621
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.25",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0025",
+ "2.579495698949552",
+ "0.0017031763467762729",
+ "2.7536678364800915",
+ "0.03327547779418424"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.2",
+ "266.1383441940289",
+ "0.17572447706970856",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7875",
+ "1230.1561951624542",
+ "0.8122412978995103",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.01",
+ "15.64658627185923",
+ "0.010331048684003316",
+ "80.0",
+ "0.9667245222058157"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 2,
+ 160
+ ],
+ [
+ 630,
+ 8
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.9862,
+ 0.973,
+ 0.9655,
+ 0.9809,
+ 0.9506,
+ 0.9569,
+ 0.9571
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.3",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.01",
+ "15.252130722982853",
+ "0.010070599573359526",
+ "7.1308905208355995",
+ "0.1920473875204845"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.1925",
+ "253.46570916999565",
+ "0.16735705384312535",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.79375",
+ "1238.8365116099683",
+ "0.8179726932501439",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.00375",
+ "6.966269824344757",
+ "0.004599653333369382",
+ "30.0",
+ "0.8079526124795154"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 8,
+ 154
+ ],
+ [
+ 635,
+ 3
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.985,
+ 0.9676,
+ 0.962,
+ 0.987,
+ 0.9383,
+ 0.9527,
+ 0.9532
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.35",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0125",
+ "18.06121108924241",
+ "0.01192536492069282",
+ "8.12593998232949",
+ "0.28891265456140214"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.19",
+ "250.65662880373606",
+ "0.16550228849579202",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "1240.496967335978",
+ "0.8190690505414395",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0025",
+ "5.305814098335182",
+ "0.0035032960420738786",
+ "20.0",
+ "0.7110873454385978"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 10,
+ 152
+ ],
+ [
+ 636,
+ 2
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.9775,
+ 0.9467,
+ 0.9416,
+ 0.9932,
+ 0.8951,
+ 0.9277,
+ 0.9296
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.4",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.02125",
+ "34.618078780570805",
+ "0.022857449606881047",
+ "15.250460986117393",
+ "0.6039676263535164"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.18125",
+ "234.0997611124077",
+ "0.15457020380960382",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.79625",
+ "1244.8727790372325",
+ "0.8219582893141805",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.00125",
+ "0.9300023970808013",
+ "0.0006140572693330294",
+ "10.0",
+ "0.3960323736464836"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 17,
+ 145
+ ],
+ [
+ 637,
+ 1
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.9725,
+ 0.9321,
+ 0.9272,
+ 1,
+ 0.8642,
+ 0.9103,
+ 0.914
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.45",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0275",
+ "42.698553505431406",
+ "0.028192784504981704",
+ "24.40925360287121",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.175",
+ "226.01928638754714",
+ "0.1492348689115032",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 22,
+ 140
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.9562,
+ 0.892,
+ 0.8789,
+ 1,
+ 0.784,
+ 0.8527,
+ 0.8621
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.5",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.04375",
+ "67.14642524209565",
+ "0.04433510134926385",
+ "48.25563070111821",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.15875",
+ "201.5714146508829",
+ "0.13309255206722106",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 35,
+ 127
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.9325,
+ 0.8333,
+ 0.8,
+ 1,
+ 0.6667,
+ 0.7613,
+ 0.784
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.55",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0675",
+ "94.12346640429236",
+ "0.06214736536357261",
+ "77.4889963745236",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.135",
+ "174.59437348868624",
+ "0.11528028805291234",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 54,
+ 108
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.915,
+ 0.7901,
+ 0.7344,
+ 1,
+ 0.5802,
+ 0.688,
+ 0.7241
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.6",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.085",
+ "115.46521459259161",
+ "0.07623878669370662",
+ "115.47616920510775",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.1175",
+ "153.25262530038697",
+ "0.1011888667227783",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 68,
+ 94
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.905,
+ 0.7654,
+ 0.6935,
+ 1,
+ 0.5309,
+ 0.6435,
+ 0.6887
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.65",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.095",
+ "127.547973958661",
+ "0.08421672981044036",
+ "132.7247827351504",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.1075",
+ "141.1698659343176",
+ "0.09321092360604459",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 76,
+ 86
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.875,
+ 0.6914,
+ 0.5536,
+ 1,
+ 0.3827,
+ 0.4972,
+ 0.5752
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.7",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.125",
+ "160.88392641030188",
+ "0.10622762354289146",
+ "187.88283993461098",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0775",
+ "107.83391348267665",
+ "0.07120002987359343",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 100,
+ 62
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.8438,
+ 0.6142,
+ 0.3719,
+ 1,
+ 0.2284,
+ 0.3207,
+ 0.437
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.75",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.15625",
+ "212.50777676738176",
+ "0.14031355781814603",
+ "254.8918574904134",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.04625",
+ "56.21006312559674",
+ "0.037114095598338843",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 125,
+ 37
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.8262,
+ 0.571,
+ 0.2486,
+ 1,
+ 0.142,
+ 0.2088,
+ 0.3414
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.8",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.17375",
+ "231.69273146213726",
+ "0.15298090247136192",
+ "280.4781339411015",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.02875",
+ "37.02510843084126",
+ "0.02444675094512297",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 139,
+ 23
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.815,
+ 0.5432,
+ 0.1591,
+ 1,
+ 0.0864,
+ 0.1311,
+ 0.2649
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.85",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.185",
+ "246.02120610486662",
+ "0.16244163508929893",
+ "303.2016861580427",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0175",
+ "22.696633788111896",
+ "0.014986018327185957",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 148,
+ 14
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.8012,
+ 0.5093,
+ 0.0364,
+ 1,
+ 0.0185,
+ 0.0292,
+ 0.1218
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.9",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.19875",
+ "265.380305616536",
+ "0.17522396319963096",
+ "328.47283016273883",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.00375",
+ "3.337534276442422",
+ "0.0022036902168538824",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 159,
+ 3
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.7975,
+ 0.5,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.95",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.2025",
+ "268.7178398929784",
+ "0.1774276534164848",
+ "334.14171075190933",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 162,
+ 0
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.7975,
+ 0.5,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 1.0",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.2025",
+ "268.7178398929784",
+ "0.1774276534164848",
+ "334.14171075190933",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.7975",
+ "1245.8027814343134",
+ "0.8225723465835135",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 162,
+ 0
+ ],
+ [
+ 638,
+ 0
+ ]
+ ]
+ }
+ ],
+ "layout": {
+ "autosize": true,
+ "sliders": [
+ {
+ "active": 0,
+ "currentvalue": {
+ "prefix": "Threshold: "
+ },
+ "pad": {
+ "t": 50
+ },
+ "steps": [
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $6,380.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.0",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $4,620.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.05",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $2,130.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.1",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $1,000.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.15",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $370.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.2",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $82.75",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.25",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $37.13",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.3",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $28.13",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.35",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $25.25",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.4",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $24.41",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.45",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $48.26",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.5",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $77.49",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.55",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $115.48",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.6",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $132.72",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.65",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $187.88",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.7",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $254.89",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.75",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $280.48",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.8",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $303.20",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.85",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $328.47",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.9",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $334.14",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.95",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $334.14",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "1.0",
+ "method": "update"
+ }
+ ]
+ }
+ ],
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "title": {
+ "text": "Interactive Confusion Matrix for the Training Set
Total obs: 800
Total amount: $1,514.52
Total cost: $6,380.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ },
+ "xaxis": {
+ "anchor": "y",
+ "autorange": true,
+ "domain": [
+ 0,
+ 1
+ ],
+ "range": [
+ -0.5,
+ 1.5
+ ],
+ "title": {
+ "text": "Predicted"
+ },
+ "type": "category"
+ },
+ "yaxis": {
+ "anchor": "x",
+ "autorange": true,
+ "domain": [
+ 0,
+ 0.5
+ ],
+ "range": [
+ -0.5,
+ 1.5
+ ],
+ "title": {
+ "text": "Actual"
+ },
+ "type": "category"
+ }
+ }
+ },
+ "image/png": "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",
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot confusion matrix and get variable metrics dataframe, invariant metric dataframe and optimized thresholds dataframe.\n",
+ "\n",
+ "# cost_dict and amounts, if not given, are set to None and won't be visualized.\n",
+ "# also optimize_threshold, if not given, is set to None: threshold won't be optimized \n",
+ "# and the third table (Optimized metric - Optimal threshold) won't be visualized,\n",
+ "# the optimized thresholds dataframe returned will be None.\n",
+ "\n",
+ "# WARNING: threshold optimization could take a while\n",
+ "\n",
+ "var_metrics_df, invar_metrics_df, opt_thresh_df = bc.confusion_matrix_plot(\n",
+ " true_y = y_train, \n",
+ " predicted_proba = train_predicted_proba, \n",
+ " threshold_step = threshold_step, \n",
+ " amounts = amounts, \n",
+ " cost_dict = train_cost_dict, \n",
+ " optimize_threshold = optimize_threshold, \n",
+ " #N_subsets = 70, subsets_size = 0.2, # default\n",
+ " #with_replacement = False, # default\n",
+ " currency = currency,\n",
+ " random_state = 123,\n",
+ " title = 'Interactive Confusion Matrix for the Training Set');"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "2e95785a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " threshold | \n",
+ " accuracy | \n",
+ " balanced_accuracy | \n",
+ " cohens_kappa | \n",
+ " f1_score | \n",
+ " matthews_corr_coef | \n",
+ " precision | \n",
+ " recall | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0.00 | \n",
+ " 0.2025 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.3368 | \n",
+ " 0.0000 | \n",
+ " 0.2025 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.05 | \n",
+ " 0.4225 | \n",
+ " 0.6379 | \n",
+ " 0.1337 | \n",
+ " 0.4122 | \n",
+ " 0.2676 | \n",
+ " 0.2596 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.10 | \n",
+ " 0.7338 | \n",
+ " 0.8331 | \n",
+ " 0.4469 | \n",
+ " 0.6034 | \n",
+ " 0.5364 | \n",
+ " 0.4320 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.15 | \n",
+ " 0.8750 | \n",
+ " 0.9216 | \n",
+ " 0.6854 | \n",
+ " 0.7642 | \n",
+ " 0.7221 | \n",
+ " 0.6183 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.20 | \n",
+ " 0.9538 | \n",
+ " 0.9710 | \n",
+ " 0.8680 | \n",
+ " 0.8975 | \n",
+ " 0.8757 | \n",
+ " 0.8141 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.25 | \n",
+ " 0.9875 | \n",
+ " 0.9876 | \n",
+ " 0.9618 | \n",
+ " 0.9697 | \n",
+ " 0.9621 | \n",
+ " 0.9524 | \n",
+ " 0.9877 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.30 | \n",
+ " 0.9862 | \n",
+ " 0.9730 | \n",
+ " 0.9569 | \n",
+ " 0.9655 | \n",
+ " 0.9571 | \n",
+ " 0.9809 | \n",
+ " 0.9506 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 0.35 | \n",
+ " 0.9850 | \n",
+ " 0.9676 | \n",
+ " 0.9527 | \n",
+ " 0.9620 | \n",
+ " 0.9532 | \n",
+ " 0.9870 | \n",
+ " 0.9383 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 0.40 | \n",
+ " 0.9775 | \n",
+ " 0.9467 | \n",
+ " 0.9277 | \n",
+ " 0.9416 | \n",
+ " 0.9296 | \n",
+ " 0.9932 | \n",
+ " 0.8951 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 0.45 | \n",
+ " 0.9725 | \n",
+ " 0.9321 | \n",
+ " 0.9103 | \n",
+ " 0.9272 | \n",
+ " 0.9140 | \n",
+ " 1.0000 | \n",
+ " 0.8642 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 0.50 | \n",
+ " 0.9562 | \n",
+ " 0.8920 | \n",
+ " 0.8527 | \n",
+ " 0.8789 | \n",
+ " 0.8621 | \n",
+ " 1.0000 | \n",
+ " 0.7840 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 0.55 | \n",
+ " 0.9325 | \n",
+ " 0.8333 | \n",
+ " 0.7613 | \n",
+ " 0.8000 | \n",
+ " 0.7840 | \n",
+ " 1.0000 | \n",
+ " 0.6667 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 0.60 | \n",
+ " 0.9150 | \n",
+ " 0.7901 | \n",
+ " 0.6880 | \n",
+ " 0.7344 | \n",
+ " 0.7241 | \n",
+ " 1.0000 | \n",
+ " 0.5802 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 0.65 | \n",
+ " 0.9050 | \n",
+ " 0.7654 | \n",
+ " 0.6435 | \n",
+ " 0.6935 | \n",
+ " 0.6887 | \n",
+ " 1.0000 | \n",
+ " 0.5309 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 0.70 | \n",
+ " 0.8750 | \n",
+ " 0.6914 | \n",
+ " 0.4972 | \n",
+ " 0.5536 | \n",
+ " 0.5752 | \n",
+ " 1.0000 | \n",
+ " 0.3827 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 0.75 | \n",
+ " 0.8438 | \n",
+ " 0.6142 | \n",
+ " 0.3207 | \n",
+ " 0.3719 | \n",
+ " 0.4370 | \n",
+ " 1.0000 | \n",
+ " 0.2284 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 0.80 | \n",
+ " 0.8262 | \n",
+ " 0.5710 | \n",
+ " 0.2088 | \n",
+ " 0.2486 | \n",
+ " 0.3414 | \n",
+ " 1.0000 | \n",
+ " 0.1420 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 0.85 | \n",
+ " 0.8150 | \n",
+ " 0.5432 | \n",
+ " 0.1311 | \n",
+ " 0.1591 | \n",
+ " 0.2649 | \n",
+ " 1.0000 | \n",
+ " 0.0864 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 0.90 | \n",
+ " 0.8012 | \n",
+ " 0.5093 | \n",
+ " 0.0292 | \n",
+ " 0.0364 | \n",
+ " 0.1218 | \n",
+ " 1.0000 | \n",
+ " 0.0185 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 0.95 | \n",
+ " 0.7975 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 1.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 1.00 | \n",
+ " 0.7975 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 1.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " threshold accuracy balanced_accuracy cohens_kappa f1_score \\\n",
+ "0 0.00 0.2025 0.5000 0.0000 0.3368 \n",
+ "1 0.05 0.4225 0.6379 0.1337 0.4122 \n",
+ "2 0.10 0.7338 0.8331 0.4469 0.6034 \n",
+ "3 0.15 0.8750 0.9216 0.6854 0.7642 \n",
+ "4 0.20 0.9538 0.9710 0.8680 0.8975 \n",
+ "5 0.25 0.9875 0.9876 0.9618 0.9697 \n",
+ "6 0.30 0.9862 0.9730 0.9569 0.9655 \n",
+ "7 0.35 0.9850 0.9676 0.9527 0.9620 \n",
+ "8 0.40 0.9775 0.9467 0.9277 0.9416 \n",
+ "9 0.45 0.9725 0.9321 0.9103 0.9272 \n",
+ "10 0.50 0.9562 0.8920 0.8527 0.8789 \n",
+ "11 0.55 0.9325 0.8333 0.7613 0.8000 \n",
+ "12 0.60 0.9150 0.7901 0.6880 0.7344 \n",
+ "13 0.65 0.9050 0.7654 0.6435 0.6935 \n",
+ "14 0.70 0.8750 0.6914 0.4972 0.5536 \n",
+ "15 0.75 0.8438 0.6142 0.3207 0.3719 \n",
+ "16 0.80 0.8262 0.5710 0.2088 0.2486 \n",
+ "17 0.85 0.8150 0.5432 0.1311 0.1591 \n",
+ "18 0.90 0.8012 0.5093 0.0292 0.0364 \n",
+ "19 0.95 0.7975 0.5000 0.0000 0.0000 \n",
+ "20 1.00 0.7975 0.5000 0.0000 0.0000 \n",
+ "\n",
+ " matthews_corr_coef precision recall \n",
+ "0 0.0000 0.2025 1.0000 \n",
+ "1 0.2676 0.2596 1.0000 \n",
+ "2 0.5364 0.4320 1.0000 \n",
+ "3 0.7221 0.6183 1.0000 \n",
+ "4 0.8757 0.8141 1.0000 \n",
+ "5 0.9621 0.9524 0.9877 \n",
+ "6 0.9571 0.9809 0.9506 \n",
+ "7 0.9532 0.9870 0.9383 \n",
+ "8 0.9296 0.9932 0.8951 \n",
+ "9 0.9140 1.0000 0.8642 \n",
+ "10 0.8621 1.0000 0.7840 \n",
+ "11 0.7840 1.0000 0.6667 \n",
+ "12 0.7241 1.0000 0.5802 \n",
+ "13 0.6887 1.0000 0.5309 \n",
+ "14 0.5752 1.0000 0.3827 \n",
+ "15 0.4370 1.0000 0.2284 \n",
+ "16 0.3414 1.0000 0.1420 \n",
+ "17 0.2649 1.0000 0.0864 \n",
+ "18 0.1218 1.0000 0.0185 \n",
+ "19 0.0000 1.0000 0.0000 \n",
+ "20 0.0000 1.0000 0.0000 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " invariant_metric | \n",
+ " value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " roc_auc | \n",
+ " 0.9990 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " pr_auc | \n",
+ " 0.9965 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " brier_score | \n",
+ " 0.0426 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " invariant_metric value\n",
+ "0 roc_auc 0.9990\n",
+ "1 pr_auc 0.9965\n",
+ "2 brier_score 0.0426"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " optimized_metric | \n",
+ " optimal_threshold | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " kappa | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " mcc | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " roc | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " f1_score | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " f2_score | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " f05_score | \n",
+ " 0.35 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " cost | \n",
+ " 0.35 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " optimized_metric optimal_threshold\n",
+ "0 kappa 0.25\n",
+ "1 mcc 0.25\n",
+ "2 roc 0.25\n",
+ "3 f1_score 0.25\n",
+ "4 f2_score 0.25\n",
+ "5 f05_score 0.35\n",
+ "6 cost 0.35"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# the three dataframes returned\n",
+ "display(var_metrics_df, invar_metrics_df, opt_thresh_df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "b56550be",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# You can also analyze the test dataset.\n",
+ "# In this case there is no need to optimize the threshold value for any measure.\n",
+ "threshold_step = 0.05\n",
+ "amounts = np.abs(X_test[:, 13])\n",
+ "optimize_threshold = 'all'\n",
+ "currency = '$'\n",
+ "\n",
+ "test_cost_dict = bc.get_cost_dict(TN = 0, FP = 10, FN = np.abs(X_test[:, 12]), TP = 0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "8303ae71",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "cells": {
+ "values": [
+ [
+ "roc_auc",
+ "pr_auc",
+ "brier_score"
+ ],
+ [
+ 0.9713,
+ 0.9175,
+ 0.0772
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0.33666666666666667,
+ 0.6633333333333333
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Invariant Metric",
+ "Value"
+ ]
+ },
+ "type": "table"
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "kappa",
+ "mcc",
+ "roc",
+ "f1_score",
+ "f2_score",
+ "f05_score",
+ "cost"
+ ],
+ [
+ 0.3,
+ 0.4,
+ 0.3,
+ 0.4,
+ 0.2,
+ 0.4,
+ 0.4
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0.6733333333333333,
+ 1
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Optimized Metric",
+ "Optimal Threshold"
+ ]
+ },
+ "type": "table"
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.205,
+ 0.5,
+ 0.3402,
+ 0.205,
+ 1,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": true
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.0",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "1590",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": true,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 41
+ ],
+ [
+ 0,
+ 159
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.37,
+ 0.6038,
+ 0.3942,
+ 0.2455,
+ 1,
+ 0.097,
+ 0.2257
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.05",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.165",
+ "54.5467065616779",
+ "0.14575258464808236",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.63",
+ "246.8276169916668",
+ "0.6595405186999381",
+ "1260",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 41
+ ],
+ [
+ 33,
+ 126
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.6,
+ 0.7484,
+ 0.5062,
+ 0.3388,
+ 1,
+ 0.2882,
+ 0.4103
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.1",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.395",
+ "131.95000175794513",
+ "0.3525795600288561",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.4",
+ "169.42432179539952",
+ "0.4527135433191643",
+ "800",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 41
+ ],
+ [
+ 79,
+ 80
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.765,
+ 0.8522,
+ 0.6357,
+ 0.4659,
+ 1,
+ 0.4942,
+ 0.5729
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.15",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0",
+ "0.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.56",
+ "201.4503160105346",
+ "0.5382892219809428",
+ "0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.235",
+ "99.92400754281005",
+ "0.2670038813670776",
+ "470",
+ "1.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 0,
+ 41
+ ],
+ [
+ 112,
+ 47
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.85,
+ 0.8785,
+ 0.717,
+ 0.5846,
+ 0.9268,
+ 0.6219,
+ 0.6525
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.2",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.015",
+ "2.0005780977462937",
+ "0.005345683486997619",
+ "5.979009492207711",
+ "0.021664725528252642"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.19",
+ "70.86687727434084",
+ "0.18936121316498228",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.66",
+ "244.5318358200174",
+ "0.6534060321168492",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.135",
+ "56.8424877333273",
+ "0.1518870712311713",
+ "270.0",
+ "0.9783352744717474"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 3,
+ 38
+ ],
+ [
+ 132,
+ 27
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.91,
+ 0.8891,
+ 0.7955,
+ 0.7447,
+ 0.8537,
+ 0.7381,
+ 0.7409
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.25",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.03",
+ "7.486198698122663",
+ "0.02000364235018854",
+ "9.90664676341642",
+ "0.07625973735938409"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.175",
+ "65.38125667396447",
+ "0.17470325430179137",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.735",
+ "272.4184414787458",
+ "0.7279209773450379",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.06",
+ "28.95588207459878",
+ "0.07737212600298239",
+ "120.0",
+ "0.9237402626406158"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 6,
+ 35
+ ],
+ [
+ 147,
+ 12
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.925,
+ 0.8895,
+ 0.8193,
+ 0.8095,
+ 0.8293,
+ 0.772,
+ 0.7721
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.3",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.035",
+ "8.033847777827688",
+ "0.02146699868971189",
+ "11.436406307633218",
+ "0.1250749758160442"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.17",
+ "64.83360759425945",
+ "0.17323989796226802",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.755",
+ "281.06648097675094",
+ "0.7510291389266668",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.04",
+ "20.307842576593828",
+ "0.05426396442135393",
+ "80.0",
+ "0.8749250241839558"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 7,
+ 34
+ ],
+ [
+ 151,
+ 8
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.92,
+ 0.8411,
+ 0.7838,
+ 0.8788,
+ 0.7073,
+ 0.7354,
+ 0.7419
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.35",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.06",
+ "15.090451925531804",
+ "0.04032273459382685",
+ "18.91665102794109",
+ "0.32107478442673043"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.145",
+ "57.77700344655533",
+ "0.15438416205815303",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.775",
+ "289.9992099023209",
+ "0.7748980104118833",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.02",
+ "11.375113651023785",
+ "0.03039509293613714",
+ "40.0",
+ "0.6789252155732697"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 12,
+ 29
+ ],
+ [
+ 155,
+ 4
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.93,
+ 0.8474,
+ 0.8056,
+ 0.9355,
+ 0.7073,
+ 0.7639,
+ 0.775
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.4",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.06",
+ "15.090451925531804",
+ "0.04032273459382685",
+ "18.91665102794109",
+ "0.4860811639305616"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.145",
+ "57.77700344655533",
+ "0.15438416205815303",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.785",
+ "296.2801442025236",
+ "0.7916811026637354",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.01",
+ "5.094179350820981",
+ "0.013612000684284918",
+ "20.0",
+ "0.5139188360694384"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 12,
+ 29
+ ],
+ [
+ 157,
+ 2
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.92,
+ 0.8139,
+ 0.7647,
+ 0.963,
+ 0.6341,
+ 0.719,
+ 0.7417
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.45",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.075",
+ "20.449524840031142",
+ "0.05464254925986162",
+ "26.541711980570135",
+ "0.7263401341098311"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.13",
+ "52.41793053205599",
+ "0.1400643473921183",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.79",
+ "297.985566670654",
+ "0.796238109829069",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.005",
+ "3.3887568826906",
+ "0.009054993518951329",
+ "10.0",
+ "0.2736598658901689"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 15,
+ 26
+ ],
+ [
+ 158,
+ 1
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.89,
+ 0.7317,
+ 0.6333,
+ 1,
+ 0.4634,
+ 0.5786,
+ 0.638
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.5",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.11",
+ "32.3379239843765",
+ "0.0864091766483931",
+ "36.51271105083246",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.095",
+ "40.529531387710634",
+ "0.10829772000358681",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 22,
+ 19
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.875,
+ 0.6951,
+ 0.5614,
+ 1,
+ 0.3902,
+ 0.5044,
+ 0.5807
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.55",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.125",
+ "39.28510651078162",
+ "0.10497253038819389",
+ "46.89785726845953",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.08",
+ "33.58234886130552",
+ "0.08973436626378602",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 25,
+ 16
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.86,
+ 0.6585,
+ 0.4815,
+ 1,
+ 0.3171,
+ 0.4247,
+ 0.5192
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.6",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.14",
+ "44.417826782676855",
+ "0.11868751508774542",
+ "51.48228951704443",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.065",
+ "28.449628589410278",
+ "0.07601938156423449",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 28,
+ 13
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.835,
+ 0.5976,
+ 0.3265,
+ 1,
+ 0.1951,
+ 0.2782,
+ 0.402
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.65",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.165",
+ "58.042549841214466",
+ "0.1550937204495801",
+ "63.12448167214795",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.04",
+ "14.82490553087267",
+ "0.03961317620239978",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 33,
+ 8
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.825,
+ 0.5732,
+ 0.2553,
+ 1,
+ 0.1463,
+ 0.2142,
+ 0.3463
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.7",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.175",
+ "59.65460157187306",
+ "0.1594012345258741",
+ "65.07540726526575",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.03",
+ "13.21285380021408",
+ "0.03530566212610582",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 35,
+ 6
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.82,
+ 0.561,
+ 0.2174,
+ 1,
+ 0.122,
+ 0.1809,
+ 0.3153
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.75",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.18",
+ "62.096735533989744",
+ "0.16592678591975865",
+ "67.2225223778225",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.025",
+ "10.770719838097396",
+ "0.028780110732221267",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 36,
+ 5
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.795,
+ 0.5,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.8",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "75.9665774440284",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 41,
+ 0
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.795,
+ 0.5,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.85",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "75.9665774440284",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 41,
+ 0
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.795,
+ 0.5,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.9",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "75.9665774440284",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 41,
+ 0
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.795,
+ 0.5,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 0.95",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "75.9665774440284",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 41,
+ 0
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ },
+ {
+ "cells": {
+ "values": [
+ [
+ "accuracy",
+ "balanced_accuracy",
+ "f1_score",
+ "precision",
+ "recall",
+ "cohens_kappa",
+ "matthews_corr_coef"
+ ],
+ [
+ 0.795,
+ 0.5,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0
+ ]
+ ]
+ },
+ "domain": {
+ "x": [
+ 0,
+ 0.32666666666666666
+ ],
+ "y": [
+ 0.5,
+ 1
+ ]
+ },
+ "header": {
+ "values": [
+ "Variable Metric",
+ "Value"
+ ]
+ },
+ "type": "table",
+ "visible": false
+ },
+ {
+ "colorscale": [
+ [
+ 0,
+ "rgb(247,251,255)"
+ ],
+ [
+ 0.125,
+ "rgb(222,235,247)"
+ ],
+ [
+ 0.25,
+ "rgb(198,219,239)"
+ ],
+ [
+ 0.375,
+ "rgb(158,202,225)"
+ ],
+ [
+ 0.5,
+ "rgb(107,174,214)"
+ ],
+ [
+ 0.625,
+ "rgb(66,146,198)"
+ ],
+ [
+ 0.75,
+ "rgb(33,113,181)"
+ ],
+ [
+ 0.875,
+ "rgb(8,81,156)"
+ ],
+ [
+ 1,
+ "rgb(8,48,107)"
+ ]
+ ],
+ "hovertemplate": "%{text[1]}
Count: %{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "name": "threshold: 1.0",
+ "showscale": false,
+ "text": [
+ [
+ [
+ "FN",
+ "False Negative",
+ "0.205",
+ "72.86745537208714",
+ "0.1947068966519799",
+ "75.9665774440284",
+ "1.0"
+ ],
+ [
+ "TP",
+ "True Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ],
+ [
+ [
+ "TN",
+ "True Negative",
+ "0.795",
+ "301.37432355334465",
+ "0.8052931033480204",
+ "0.0",
+ "0.0"
+ ],
+ [
+ "FP",
+ "False Positive",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0",
+ "0.0"
+ ]
+ ]
+ ],
+ "texttemplate": "%{text[0]}
%{z} (%{text[2]:.2~%})
Amount: $%{text[3]:~s} (%{text[4]:.2~%})
Cost: $%{text[5]:~s} (%{text[6]:.2~%})",
+ "type": "heatmap",
+ "visible": false,
+ "x": [
+ "False",
+ "True"
+ ],
+ "xaxis": "x",
+ "y": [
+ "True",
+ "False"
+ ],
+ "yaxis": "y",
+ "z": [
+ [
+ 41,
+ 0
+ ],
+ [
+ 159,
+ 0
+ ]
+ ]
+ }
+ ],
+ "layout": {
+ "autosize": true,
+ "sliders": [
+ {
+ "active": 0,
+ "currentvalue": {
+ "prefix": "Threshold: "
+ },
+ "pad": {
+ "t": 50
+ },
+ "steps": [
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $1,590.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.0",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $1,260.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.05",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $800.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.1",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $470.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.15",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $275.98",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.2",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $129.91",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.25",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $91.44",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.3",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $58.92",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.35",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $38.92",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.4",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $36.54",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.45",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $36.51",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.5",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $46.90",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.55",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $51.48",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.6",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $63.12",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.65",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $65.08",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.7",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $67.22",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.75",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.8",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.85",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.9",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.95",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "1.0",
+ "method": "update"
+ }
+ ]
+ }
+ ],
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "title": {
+ "text": "Interactive Confusion Matrix for the Testing Set
Total obs: 200
Total amount: $374.24
Total cost: $1,590.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ },
+ "xaxis": {
+ "anchor": "y",
+ "autorange": true,
+ "domain": [
+ 0,
+ 1
+ ],
+ "range": [
+ -0.5,
+ 1.5
+ ],
+ "title": {
+ "text": "Predicted"
+ },
+ "type": "category"
+ },
+ "yaxis": {
+ "anchor": "x",
+ "autorange": true,
+ "domain": [
+ 0,
+ 0.5
+ ],
+ "range": [
+ -0.5,
+ 1.5
+ ],
+ "title": {
+ "text": "Actual"
+ },
+ "type": "category"
+ }
+ }
+ },
+ "image/png": "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tYesSl/IPlA3AQIECBAgQIAAgWkISH5PQ1kdBAgQIECAAAECi0Zg0uR3vICyPbeLyfC40vuuHTsH13vtv/5zuPHbPxy68jsekyXAM6BsD/G42jsmyz999Q2DX8U9vbMvxsz/f/zd2uNWHpIMz/9+w7lnh1hmbNNnP/GhsGzZ0kXTFxpCgAABAgQIECBAoE0Bye82dZVNgAABAgQIECBAgAABAgQIECBAgAABAgsiIPm9IOwqJUCAAAECBAgQIECAAAECBAgQIECAAIE2BSS/29RVNgECBAgQIECAAAECBAgQIECAAAECBAgsiIDk94Kwq5QAAQIECBAgQIAAAQIECBAgQIAAAQIE2hSQ/G5TV9kECBAgQIAAAQIECBAgQIAAAQIECBAgsCACkt8Lwq5SAgQIECBAgAABAgQIECBAgAABAgQIEGhTQPK7TV1lEyBAgAABAgQIECBAgAABAgQIECBAgMCCCEh+Lwi7SgkQIECAAAECBAgQIECAAAECBAgQIECgTQHJ7zZ1lU2AAAECBAgQIECAAAECBAgQIECAAAECCyIg+b0g7ColQIAAAQIECBAgQIAAAQIECBAgQIAAgTYFJL/b1FU2AQIECBAgQIAAAQIECBAgQIAAAQIECCyIgOT3grCrlAABAgQIECBAgAABAgQIECBAgAABAgTaFJD8blNX2QQIECBAgAABAgQIECBAgAABAgQIECCwIAKS3wvCrlICBAgQIECAAAECBAgQIECAAAECBAgQaFNA8rtNXWUTIECAAAECBAgQIECAAAECBAgQIECAwIIISH63zP69W34att/56/DZT3woLFu2tLXamtRz7de2Dtp1+UcueEn7nph7Kly68Yvh8o9dEN76xtNba7+CCRAgQIAAAQIECBAgQIAAAQIECBAgkFJA8ruBZpYYvmvHztJSPnflRYP/72Pyu2hz45c2jkye1z2+Qbc5lQABAgQIECBAgAABAgQIECBAgACBHghIfifq5GErpJusyK7TtCb1pF75/dxzB8JnvvCNcPabXxfOP++ccO/9u8OmLV8Pmzd+OJy8bu1LLqvu8XVcHEuAAAECBAgQIECAAAECBAgQIECAQD8FJL8T9XtV8vvoo44MN33/x4PaslXQ2Tkbzj07fPM7Pxz87rqrrwhrj3vVIHm87dbtg/+LK8hjEjn+xETyR6+8Jux+dN/g3xe9b8Ngu5Is+V1WTzxu1MrqYvK7WEe+zfHv8fg9j+0bupVLPP/zX7kpbP7UxeHYFUeHYnK7SF73+ERdphgCBAgQIECAAAECBAgQIECAAAECBGZYQPI7UeeOSn5/+uob5hPeP//Vb8K1X90avrzl44Oa437aJx6/aj6RnCWK16xeOUhqx3I3XXV9+OQl751Pil/wrncMthCJx35320/Ceza8Pdzy4zvCsHqOOPzwl6zEjgn0zZsuHpSTT35n1xHriAn3suuqSn7nrzEmv7OEefyzbF/xuscn6jLFECBAgAABAgQIECBAgAABAgQIECAwwwKS34k6t2rld/aFl/lVzlnyO/9lkmVbhMRk8/oT1oR3/s2Zg2R5lpjON7247Um+nieefOol247kE975vxcT0ZN84WUsY+vNtx+yMnzU1ip1j0/UZYohQIAAAQIECBAgQIAAAQIECBAgQGCGBSS/E3VuyuR3fluTrHnZ1ifFLUmyLVSqkt/5bUhimfH4XQ/tGazELia/84nrSZPf2ep2K78TBZhiCBAgQIAAAQIECBAgQIAAAQIECBCoJSD5XYtr+MEpk9/FRPWwWvOrtP/zv34Ztt/56/nV1gu58rvuHt51j0/UZYohQIAAAQIECBAgQIAAAQIECBAgQGCGBSS/E3VuquR3cc/v2LyYHP7tfQ+Hv37T6eGW2+4I7z//3EGrx01+Z3t+Z/uIZ6vHR+35nW3FEuu48LIt83uWx3qr9vwufsFlcSuX4r7iVccn6iLFECBAgAABAgQIECBAgAABAgQIECDQIwHJ70SdnSr5HZuTJYO33bp90Lq1x60M1119xfwXXhb//+R1awfbmAxb+R23Hsnad9eOnYMys+1SsmR2/DP7Msos4R3/b8O5Z4cHH94b8vuSVyW/43mj6ismv6uOT9RFiiFAgAABAgQIECBAgAABAgQIECBAoEcCkt896myXSoAAAQIECBAgQIAAAQIECBAgQIAAgb4ISH73paddJwECBAgQIECAAAECBAgQIECAAAECBHokIPndo852qQQIECBAgAABAgQIECBAgAABAgQIEOiLgOR3X3radRIgQIAAAQIECBAgQIAAAQIECBAgQKBHApLfPepsl0qAAAECBAgQIECAAAECBAgQIECAAIG+CEh+96WnXScBAgQIECBAgAABAgQIECBAgAABAgR6JCD53aPOdqkECBAgQIAAAQIECBAgQIAAAQIECBDoi4Dkd1962nUSIECAAAECBAgQIECAAAECBAgQIECgRwKS3y129u+ffi7sf/b5cOCFFwe1LH35y8JRRxwejlm+rMVaFU2AAAECBAgQIECAAAECBAgQIECAAAECkt+JY+DgwT+GB/c8EXY/NheWLFkSlh+5NCxd+heDWl448GJ46pnnw8GDB8Pa1SvCiWuODUuWHJa4BYojQIAAAQIECBAgQIAAAQIECBAgQIAAAcnvhDGw78n94e5dj4UVy48Ix61aMUh8l/08/cyB8OjeuTD39LPhtPWrw8pXHJWwFYoiQIAAAQIECBAgQIAAAQIECBAgQIAAAcnvRDHwyN65sPOB34VT1q0Kr1wxXjL78bn9Yef9e8Mpr3lVePWqFYlaohgCBAgQIECAAAECBAgQIECAAAECBAgQkPxOEANxxfeOnXvCGaeuHbrae1g1cRX4jnt2hzNOWWMFeIK+UAQBAgQIECBAgAABAgQIECBAgAABAgSigOR3wziIe3zfcdeusP6ElWOv+C5WGVeA73poXzjrDevtAd6wP5xOgAABAgQIECBAgAABAgQIECBAgAABye8EMXD/7sfD/mcODLY7afITtz856silYd3aVzYpxrkECBAgQIAAAQIECBAgQIAAAQIECBAgYOV38xj42S/vC6edtKb2difFmuP2J3fftye87cyTmjdKCQQIECBAgAABAgQIECBAgAABAgQIEOi5gG1PGgTA759+Luy499Fw5hknNCjlz6f+z/89EJ5//oUQDktSnEIIECBAgAABAgQIECBAgAABAgQIEFikAu8867RF2rLZaZbkd4O+fGTvXHhi7tnGW55kTfjt/Y+FFcuXhdUrj2nQKqcSIECAAAECBAgQIECAAAECBAgQILDYBf77zp1BArzdXpL8buAb9/s+8IcXw2tenWaf7gceeTwsOeywcMKaYxu0yqkECBAgQIAAAQIECBAgQIAAAQIECCx2Acnv9ntI8ruBseR3AzynEiBAgAABAgQIECBAgAABAgQIEOixgOR3+50v+d3AOG578vjcM+HUdasblPLnU++5f284Zvnhtj1JoqkQAgQIECBAgAABAgQIECBAgAABAotXQPK7/b6R/G5g7AsvG+A5lQABAgQIECBAgAABAgQIECBAgEDPBez53W4ASH43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",
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "var_metrics_df, invar_metrics_df, __ = bc.confusion_matrix_plot(\n",
+ " true_y = y_test, \n",
+ " predicted_proba = test_predicted_proba, \n",
+ " threshold_step = threshold_step, \n",
+ " amounts = amounts, \n",
+ " cost_dict = test_cost_dict, \n",
+ " optimize_threshold = optimize_threshold, \n",
+ " #N_subsets = 70, subsets_size = 0.2, # default\n",
+ " #with_replacement = False, # default\n",
+ " currency = currency,\n",
+ " random_state = 123,\n",
+ " title = 'Interactive Confusion Matrix for the Testing Set');"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "fd3e069f",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " threshold | \n",
+ " accuracy | \n",
+ " balanced_accuracy | \n",
+ " cohens_kappa | \n",
+ " f1_score | \n",
+ " matthews_corr_coef | \n",
+ " precision | \n",
+ " recall | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0.00 | \n",
+ " 0.205 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.3402 | \n",
+ " 0.0000 | \n",
+ " 0.2050 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.05 | \n",
+ " 0.370 | \n",
+ " 0.6038 | \n",
+ " 0.0970 | \n",
+ " 0.3942 | \n",
+ " 0.2257 | \n",
+ " 0.2455 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.10 | \n",
+ " 0.600 | \n",
+ " 0.7484 | \n",
+ " 0.2882 | \n",
+ " 0.5062 | \n",
+ " 0.4103 | \n",
+ " 0.3388 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.15 | \n",
+ " 0.765 | \n",
+ " 0.8522 | \n",
+ " 0.4942 | \n",
+ " 0.6357 | \n",
+ " 0.5729 | \n",
+ " 0.4659 | \n",
+ " 1.0000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.20 | \n",
+ " 0.850 | \n",
+ " 0.8785 | \n",
+ " 0.6219 | \n",
+ " 0.7170 | \n",
+ " 0.6525 | \n",
+ " 0.5846 | \n",
+ " 0.9268 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.25 | \n",
+ " 0.910 | \n",
+ " 0.8891 | \n",
+ " 0.7381 | \n",
+ " 0.7955 | \n",
+ " 0.7409 | \n",
+ " 0.7447 | \n",
+ " 0.8537 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.30 | \n",
+ " 0.925 | \n",
+ " 0.8895 | \n",
+ " 0.7720 | \n",
+ " 0.8193 | \n",
+ " 0.7721 | \n",
+ " 0.8095 | \n",
+ " 0.8293 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 0.35 | \n",
+ " 0.920 | \n",
+ " 0.8411 | \n",
+ " 0.7354 | \n",
+ " 0.7838 | \n",
+ " 0.7419 | \n",
+ " 0.8788 | \n",
+ " 0.7073 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 0.40 | \n",
+ " 0.930 | \n",
+ " 0.8474 | \n",
+ " 0.7639 | \n",
+ " 0.8056 | \n",
+ " 0.7750 | \n",
+ " 0.9355 | \n",
+ " 0.7073 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 0.45 | \n",
+ " 0.920 | \n",
+ " 0.8139 | \n",
+ " 0.7190 | \n",
+ " 0.7647 | \n",
+ " 0.7417 | \n",
+ " 0.9630 | \n",
+ " 0.6341 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 0.50 | \n",
+ " 0.890 | \n",
+ " 0.7317 | \n",
+ " 0.5786 | \n",
+ " 0.6333 | \n",
+ " 0.6380 | \n",
+ " 1.0000 | \n",
+ " 0.4634 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 0.55 | \n",
+ " 0.875 | \n",
+ " 0.6951 | \n",
+ " 0.5044 | \n",
+ " 0.5614 | \n",
+ " 0.5807 | \n",
+ " 1.0000 | \n",
+ " 0.3902 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 0.60 | \n",
+ " 0.860 | \n",
+ " 0.6585 | \n",
+ " 0.4247 | \n",
+ " 0.4815 | \n",
+ " 0.5192 | \n",
+ " 1.0000 | \n",
+ " 0.3171 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 0.65 | \n",
+ " 0.835 | \n",
+ " 0.5976 | \n",
+ " 0.2782 | \n",
+ " 0.3265 | \n",
+ " 0.4020 | \n",
+ " 1.0000 | \n",
+ " 0.1951 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 0.70 | \n",
+ " 0.825 | \n",
+ " 0.5732 | \n",
+ " 0.2142 | \n",
+ " 0.2553 | \n",
+ " 0.3463 | \n",
+ " 1.0000 | \n",
+ " 0.1463 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 0.75 | \n",
+ " 0.820 | \n",
+ " 0.5610 | \n",
+ " 0.1809 | \n",
+ " 0.2174 | \n",
+ " 0.3153 | \n",
+ " 1.0000 | \n",
+ " 0.1220 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 0.80 | \n",
+ " 0.795 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 1.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 0.85 | \n",
+ " 0.795 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 1.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 0.90 | \n",
+ " 0.795 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 1.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 0.95 | \n",
+ " 0.795 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 1.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 1.00 | \n",
+ " 0.795 | \n",
+ " 0.5000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 0.0000 | \n",
+ " 1.0000 | \n",
+ " 0.0000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " threshold accuracy balanced_accuracy cohens_kappa f1_score \\\n",
+ "0 0.00 0.205 0.5000 0.0000 0.3402 \n",
+ "1 0.05 0.370 0.6038 0.0970 0.3942 \n",
+ "2 0.10 0.600 0.7484 0.2882 0.5062 \n",
+ "3 0.15 0.765 0.8522 0.4942 0.6357 \n",
+ "4 0.20 0.850 0.8785 0.6219 0.7170 \n",
+ "5 0.25 0.910 0.8891 0.7381 0.7955 \n",
+ "6 0.30 0.925 0.8895 0.7720 0.8193 \n",
+ "7 0.35 0.920 0.8411 0.7354 0.7838 \n",
+ "8 0.40 0.930 0.8474 0.7639 0.8056 \n",
+ "9 0.45 0.920 0.8139 0.7190 0.7647 \n",
+ "10 0.50 0.890 0.7317 0.5786 0.6333 \n",
+ "11 0.55 0.875 0.6951 0.5044 0.5614 \n",
+ "12 0.60 0.860 0.6585 0.4247 0.4815 \n",
+ "13 0.65 0.835 0.5976 0.2782 0.3265 \n",
+ "14 0.70 0.825 0.5732 0.2142 0.2553 \n",
+ "15 0.75 0.820 0.5610 0.1809 0.2174 \n",
+ "16 0.80 0.795 0.5000 0.0000 0.0000 \n",
+ "17 0.85 0.795 0.5000 0.0000 0.0000 \n",
+ "18 0.90 0.795 0.5000 0.0000 0.0000 \n",
+ "19 0.95 0.795 0.5000 0.0000 0.0000 \n",
+ "20 1.00 0.795 0.5000 0.0000 0.0000 \n",
+ "\n",
+ " matthews_corr_coef precision recall \n",
+ "0 0.0000 0.2050 1.0000 \n",
+ "1 0.2257 0.2455 1.0000 \n",
+ "2 0.4103 0.3388 1.0000 \n",
+ "3 0.5729 0.4659 1.0000 \n",
+ "4 0.6525 0.5846 0.9268 \n",
+ "5 0.7409 0.7447 0.8537 \n",
+ "6 0.7721 0.8095 0.8293 \n",
+ "7 0.7419 0.8788 0.7073 \n",
+ "8 0.7750 0.9355 0.7073 \n",
+ "9 0.7417 0.9630 0.6341 \n",
+ "10 0.6380 1.0000 0.4634 \n",
+ "11 0.5807 1.0000 0.3902 \n",
+ "12 0.5192 1.0000 0.3171 \n",
+ "13 0.4020 1.0000 0.1951 \n",
+ "14 0.3463 1.0000 0.1463 \n",
+ "15 0.3153 1.0000 0.1220 \n",
+ "16 0.0000 1.0000 0.0000 \n",
+ "17 0.0000 1.0000 0.0000 \n",
+ "18 0.0000 1.0000 0.0000 \n",
+ "19 0.0000 1.0000 0.0000 \n",
+ "20 0.0000 1.0000 0.0000 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " invariant_metric | \n",
+ " value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " roc_auc | \n",
+ " 0.9713 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " pr_auc | \n",
+ " 0.9175 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " brier_score | \n",
+ " 0.0772 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " invariant_metric value\n",
+ "0 roc_auc 0.9713\n",
+ "1 pr_auc 0.9175\n",
+ "2 brier_score 0.0772"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# the two dataframes returned\n",
+ "display(var_metrics_df, invar_metrics_df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "c00e0cec",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " invariant_metric | \n",
+ " value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " roc_auc | \n",
+ " 0.9713 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " pr_auc | \n",
+ " 0.9175 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " brier_score | \n",
+ " 0.0772 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " invariant_metric value\n",
+ "0 roc_auc 0.9713\n",
+ "1 pr_auc 0.9175\n",
+ "2 brier_score 0.0772"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# the invariant metric dataframe can be obtained directly with \n",
+ "# the function get_invariant_metrics_df from the utilities module\n",
+ "\n",
+ "bc.utilities.get_invariant_metrics_df(true_y = y_test, \n",
+ " predicted_proba = test_predicted_proba)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "0c029219",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[151, 8],\n",
+ " [ 7, 34]])"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " threshold_dependent_metric | \n",
+ " value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " accuracy | \n",
+ " 0.9250 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " balanced_accuracy | \n",
+ " 0.8895 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " f1_score | \n",
+ " 0.8193 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " precision | \n",
+ " 0.8095 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " recall | \n",
+ " 0.8293 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " cohens_kappa | \n",
+ " 0.7720 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " matthews_corr_coef | \n",
+ " 0.7721 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " threshold_dependent_metric value\n",
+ "0 accuracy 0.9250\n",
+ "1 balanced_accuracy 0.8895\n",
+ "2 f1_score 0.8193\n",
+ "3 precision 0.8095\n",
+ "4 recall 0.8293\n",
+ "5 cohens_kappa 0.7720\n",
+ "6 matthews_corr_coef 0.7721"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# for a specific threshold, \n",
+ "# the confusion matrix and a dataframe containing the list of metrics visualized in the first table of\n",
+ "# the interactive confusion matrix plot, can be obtained directly with\n",
+ "# the function get_confusion_matrix_and_metrics_df from the utilities module\n",
+ "\n",
+ "conf_matrix, metrics_fixed_thresh_df = bc.utilities.get_confusion_matrix_and_metrics_df(\n",
+ " true_y = y_test, \n",
+ " predicted_proba = test_predicted_proba,\n",
+ " threshold = 0.3 # default = 0.5\n",
+ ")\n",
+ "\n",
+ "display(conf_matrix, metrics_fixed_thresh_df)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "291a9a46",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " optimized_metric | \n",
+ " optimal_threshold | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " kappa | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " f1_score | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " f2_score | \n",
+ " 0.25 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " f05_score | \n",
+ " 0.35 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " cost | \n",
+ " 0.35 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " optimized_metric optimal_threshold\n",
+ "0 kappa 0.25\n",
+ "1 f1_score 0.25\n",
+ "2 f2_score 0.25\n",
+ "3 f05_score 0.35\n",
+ "4 cost 0.35"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# the optimized thresholds dataframe can be obtained directly with \n",
+ "# the function get_optimized_thresholds_df from the thresholds module\n",
+ "\n",
+ "# this function requires a list of thresholds instead of the step, for example:\n",
+ "threshold_values = np.arange(0.05, 1, 0.05) # will generate an array of values from 0 to 1 with step 0.05\n",
+ "\n",
+ "# in this case, we will optimize thresholds using the train dataset \n",
+ "# (best practice would be using a validation dataset different from both train and test)\n",
+ "\n",
+ "# to otpimize for minimal cost, we need a train_cost_dict \n",
+ "train_cost_dict = bc.get_cost_dict(TN = 0, FP = 10, \n",
+ " FN = np.abs(X_train[:, 12]), TP = 0)\n",
+ "\n",
+ "bc.thresholds.get_optimized_thresholds_df(optimize_threshold = ['Kappa', 'Fscore', 'Cost'], \n",
+ " threshold_values = threshold_values, \n",
+ " true_y = y_train, \n",
+ " predicted_proba = train_predicted_proba,\n",
+ " cost_dict = train_cost_dict, \n",
+ " N_subsets = 70, subsets_size = 0.2, with_replacement = False, # default\n",
+ " random_state = 120)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "534ced79",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.25"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# to directly optimize a threshold for one specific metric in {'ROC', 'MCC', 'Kappa', 'F1'}, \n",
+ "# the function get_optimal_threshold from the thresholds module can be used:\n",
+ "\n",
+ "# if ThOpt_metrics = Fscore, 3 values will be returned (optimal threshold for beta = 1, for beta = 2 and for beta = 0.5)\n",
+ "\n",
+ "bc.thresholds.get_optimal_threshold(y_train, \n",
+ " train_predicted_proba, \n",
+ " threshold_values, \n",
+ " ThOpt_metrics = 'ROC', # default = 'Kappa'\n",
+ " N_subsets = 70, subsets_size = 0.2, with_replacement = False, # defaults\n",
+ " random_seed = 120)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "b744cfe1",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.35000000000000003"
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# to directly optimize a threshold for minimal cost, \n",
+ "# the function get_cost_optimal_threshold from the thresholds module can be used (cost_dict must be given):\n",
+ "\n",
+ "bc.thresholds.get_cost_optimal_threshold(y_train, \n",
+ " train_predicted_proba, \n",
+ " threshold_values, \n",
+ " cost_dict = train_cost_dict,\n",
+ " N_subsets = 70, subsets_size = 0.2, with_replacement = False, # defaults\n",
+ " random_seed = 120)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "c892d14a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "hovertemplate": "amount: $%{y}",
+ "line": {
+ "color": "blue"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x",
+ "y": [
+ 0,
+ 54.5467065616779,
+ 131.95000175794513,
+ 201.4503160105346,
+ 244.5318358200174,
+ 272.4184414787458,
+ 281.06648097675094,
+ 289.9992099023209,
+ 296.2801442025236,
+ 297.985566670654,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465,
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "cost: $%{y}",
+ "line": {
+ "color": "rgb(128, 177, 211)"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x",
+ "y": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "%{x}",
+ "marker": {
+ "color": "black",
+ "size": 8,
+ "symbol": "diamond"
+ },
+ "mode": "markers",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [],
+ "xaxis": "x",
+ "y": [],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "amount: $%{y}",
+ "line": {
+ "color": "red"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x2",
+ "y": [
+ 301.37432355334465,
+ 246.8276169916668,
+ 169.42432179539952,
+ 99.92400754281005,
+ 56.8424877333273,
+ 28.95588207459878,
+ 20.307842576593828,
+ 11.375113651023785,
+ 5.094179350820981,
+ 3.3887568826906,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "cost: $%{y}",
+ "line": {
+ "color": "rgb(251, 128, 114)"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x2",
+ "y": [
+ 1590,
+ 1260,
+ 800,
+ 470,
+ 270,
+ 120,
+ 80,
+ 40,
+ 20,
+ 10,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "%{x}",
+ "marker": {
+ "color": "black",
+ "size": 8,
+ "symbol": "diamond"
+ },
+ "mode": "markers",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "amount: $%{y}",
+ "line": {
+ "color": "#00CC96"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 2.0005780977462937,
+ 7.486198698122663,
+ 8.033847777827688,
+ 15.090451925531804,
+ 15.090451925531804,
+ 20.449524840031142,
+ 32.3379239843765,
+ 39.28510651078162,
+ 44.417826782676855,
+ 58.042549841214466,
+ 59.65460157187306,
+ 62.096735533989744,
+ 72.86745537208714,
+ 72.86745537208714,
+ 72.86745537208714,
+ 72.86745537208714,
+ 72.86745537208714
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "cost: $%{y}",
+ "line": {
+ "color": "rgb(141, 211, 199)"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 5.979009492207711,
+ 9.90664676341642,
+ 11.436406307633218,
+ 18.91665102794109,
+ 18.91665102794109,
+ 26.541711980570135,
+ 36.51271105083246,
+ 46.89785726845953,
+ 51.48228951704443,
+ 63.12448167214795,
+ 65.07540726526575,
+ 67.2225223778225,
+ 75.9665774440284,
+ 75.9665774440284,
+ 75.9665774440284,
+ 75.9665774440284,
+ 75.9665774440284
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "%{x}",
+ "marker": {
+ "color": "black",
+ "size": 8,
+ "symbol": "diamond"
+ },
+ "mode": "markers",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [],
+ "xaxis": "x3",
+ "y": [],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "amount: $%{y}",
+ "line": {
+ "color": "#AB63FA"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x4",
+ "y": [
+ 72.86745537208714,
+ 72.86745537208714,
+ 72.86745537208714,
+ 72.86745537208714,
+ 70.86687727434084,
+ 65.38125667396447,
+ 64.83360759425945,
+ 57.77700344655533,
+ 57.77700344655533,
+ 52.41793053205599,
+ 40.529531387710634,
+ 33.58234886130552,
+ 28.449628589410278,
+ 14.82490553087267,
+ 13.21285380021408,
+ 10.770719838097396,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "cost: $%{y}",
+ "line": {
+ "color": "rgb(190, 186, 218)"
+ },
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "%{x}",
+ "marker": {
+ "color": "black",
+ "size": 8,
+ "symbol": "diamond"
+ },
+ "mode": "markers",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x2",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x2",
+ "y": [
+ 1590
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x4",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.0",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": true,
+ "x": [
+ 0
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x",
+ "y": [
+ 54.5467065616779
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x2",
+ "y": [
+ 246.8276169916668
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x2",
+ "y": [
+ 1260
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x4",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.05",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.05
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x",
+ "y": [
+ 131.95000175794513
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x2",
+ "y": [
+ 169.42432179539952
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x2",
+ "y": [
+ 800
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x4",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.1",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.1
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x",
+ "y": [
+ 201.4503160105346
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x2",
+ "y": [
+ 99.92400754281005
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x2",
+ "y": [
+ 470
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x3",
+ "y": [
+ 0
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x4",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.15000000000000002",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.15000000000000002
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x",
+ "y": [
+ 244.5318358200174
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x2",
+ "y": [
+ 56.8424877333273
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x2",
+ "y": [
+ 270
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x3",
+ "y": [
+ 2.0005780977462937
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x3",
+ "y": [
+ 5.979009492207711
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x4",
+ "y": [
+ 70.86687727434084
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.2",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.2
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x",
+ "y": [
+ 272.4184414787458
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x2",
+ "y": [
+ 28.95588207459878
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x2",
+ "y": [
+ 120
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x3",
+ "y": [
+ 7.486198698122663
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x3",
+ "y": [
+ 9.90664676341642
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x4",
+ "y": [
+ 65.38125667396447
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.25",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.25
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x",
+ "y": [
+ 281.06648097675094
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x2",
+ "y": [
+ 20.307842576593828
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x2",
+ "y": [
+ 80
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x3",
+ "y": [
+ 8.033847777827688
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x3",
+ "y": [
+ 11.436406307633218
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x4",
+ "y": [
+ 64.83360759425945
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.30000000000000004",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.30000000000000004
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x",
+ "y": [
+ 289.9992099023209
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x2",
+ "y": [
+ 11.375113651023785
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x2",
+ "y": [
+ 40
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x3",
+ "y": [
+ 15.090451925531804
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x3",
+ "y": [
+ 18.91665102794109
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x4",
+ "y": [
+ 57.77700344655533
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.35000000000000003",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.35000000000000003
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x",
+ "y": [
+ 296.2801442025236
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x2",
+ "y": [
+ 5.094179350820981
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x2",
+ "y": [
+ 20
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x3",
+ "y": [
+ 15.090451925531804
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x3",
+ "y": [
+ 18.91665102794109
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x4",
+ "y": [
+ 57.77700344655533
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.4",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.4
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x",
+ "y": [
+ 297.985566670654
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x2",
+ "y": [
+ 3.3887568826906
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x2",
+ "y": [
+ 10
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x3",
+ "y": [
+ 20.449524840031142
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x3",
+ "y": [
+ 26.541711980570135
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x4",
+ "y": [
+ 52.41793053205599
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.45",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.45
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x3",
+ "y": [
+ 32.3379239843765
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x3",
+ "y": [
+ 36.51271105083246
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "bottom right"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x4",
+ "y": [
+ 40.529531387710634
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.5",
+ "showlegend": false,
+ "textposition": [
+ "top right"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.5
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x3",
+ "y": [
+ 39.28510651078162
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x3",
+ "y": [
+ 46.89785726845953
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x4",
+ "y": [
+ 33.58234886130552
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.55",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.55
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 44.417826782676855
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 51.48228951704443
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 28.449628589410278
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.6000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.6000000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x3",
+ "y": [
+ 58.042549841214466
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x3",
+ "y": [
+ 63.12448167214795
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x4",
+ "y": [
+ 14.82490553087267
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.65",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.65
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 59.65460157187306
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 65.07540726526575
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 13.21285380021408
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.7000000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.7000000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x3",
+ "y": [
+ 62.096735533989744
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x3",
+ "y": [
+ 67.2225223778225
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x4",
+ "y": [
+ 10.770719838097396
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.75",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.75
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x3",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x3",
+ "y": [
+ 75.9665774440284
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 75.9665774440284
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.8500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.8500000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x3",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x3",
+ "y": [
+ 75.9665774440284
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x3",
+ "y": [
+ 75.9665774440284
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "0.9500000000000001",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 0.9500000000000001
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "blue",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x",
+ "y": [
+ 301.37432355334465
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(128, 177, 211)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x",
+ "y": [
+ 0
+ ],
+ "yaxis": "y"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "red",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(251, 128, 114)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x2",
+ "y": [
+ 0
+ ],
+ "yaxis": "y2"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#00CC96",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x3",
+ "y": [
+ 72.86745537208714
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(141, 211, 199)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x3",
+ "y": [
+ 75.9665774440284
+ ],
+ "yaxis": "y3"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "#AB63FA",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "bottom left"
+ ],
+ "texttemplate": "amount: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ },
+ {
+ "hovertemplate": "$%{y}",
+ "marker": {
+ "color": "rgb(190, 186, 218)",
+ "size": 8
+ },
+ "mode": "markers+text",
+ "name": "1.0",
+ "showlegend": false,
+ "textposition": [
+ "top left"
+ ],
+ "texttemplate": "cost: $%{y}",
+ "type": "scatter",
+ "visible": false,
+ "x": [
+ 1
+ ],
+ "xaxis": "x4",
+ "y": [
+ 0
+ ],
+ "yaxis": "y4"
+ }
+ ],
+ "layout": {
+ "annotations": [
+ {
+ "font": {
+ "size": 16
+ },
+ "showarrow": false,
+ "text": "True Negative",
+ "x": 0.225,
+ "xanchor": "center",
+ "xref": "paper",
+ "y": 1.04,
+ "yanchor": "bottom",
+ "yref": "paper"
+ },
+ {
+ "font": {
+ "size": 16
+ },
+ "showarrow": false,
+ "text": "False Positive",
+ "x": 0.775,
+ "xanchor": "center",
+ "xref": "paper",
+ "y": 1.04,
+ "yanchor": "bottom",
+ "yref": "paper"
+ },
+ {
+ "font": {
+ "size": 16
+ },
+ "showarrow": false,
+ "text": "False Negative",
+ "x": 0.225,
+ "xanchor": "center",
+ "xref": "paper",
+ "y": 0.45999999999999996,
+ "yanchor": "bottom",
+ "yref": "paper"
+ },
+ {
+ "font": {
+ "size": 16
+ },
+ "showarrow": false,
+ "text": "True Positive",
+ "x": 0.775,
+ "xanchor": "center",
+ "xref": "paper",
+ "y": 0.45999999999999996,
+ "yanchor": "bottom",
+ "yref": "paper"
+ },
+ {
+ "showarrow": false,
+ "text": "Swaps: 0.5",
+ "x": 0.5,
+ "xref": "x2 domain",
+ "y": 1.15,
+ "yref": "y2 domain"
+ },
+ {
+ "showarrow": false,
+ "text": "Swaps: 0.8",
+ "x": 0.5,
+ "xref": "x4 domain",
+ "y": 1.15,
+ "yref": "y4 domain"
+ }
+ ],
+ "autosize": true,
+ "hovermode": "x",
+ "margin": {
+ "t": 125
+ },
+ "sliders": [
+ {
+ "active": 0,
+ "currentvalue": {
+ "prefix": "Threshold: "
+ },
+ "pad": {
+ "t": 50
+ },
+ "steps": [
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $1,590.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.0",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $1,260.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.05",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $800.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.1",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $470.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.15",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $275.98",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.2",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $129.91",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.25",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $91.44",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.3",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $58.92",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.35",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $38.92",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.4",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $36.54",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.45",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $36.51",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.5",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $46.90",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.55",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $51.48",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.6",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $63.12",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.65",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $65.08",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.7",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $67.22",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.75",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.8",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.85",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.9",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "0.95",
+ "method": "update"
+ },
+ {
+ "args": [
+ {
+ "visible": [
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true
+ ]
+ },
+ {
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $75.97",
+ "y": 0.965,
+ "yanchor": "bottom"
+ }
+ }
+ ],
+ "label": "1.0",
+ "method": "update"
+ }
+ ]
+ }
+ ],
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "title": {
+ "text": "Interactive Confusion Line Chart
Total obs: 200
Total amount: $374.24
Total cost: $1,590.00",
+ "y": 0.965,
+ "yanchor": "bottom"
+ },
+ "xaxis": {
+ "anchor": "y",
+ "autorange": true,
+ "domain": [
+ 0,
+ 0.45
+ ],
+ "matches": "x3",
+ "range": [
+ -0.06210702085236811,
+ 1
+ ],
+ "showticklabels": false,
+ "type": "linear"
+ },
+ "xaxis2": {
+ "anchor": "y2",
+ "autorange": true,
+ "domain": [
+ 0.55,
+ 1
+ ],
+ "matches": "x4",
+ "range": [
+ -0.06210702085236813,
+ 1
+ ],
+ "showticklabels": false,
+ "type": "linear"
+ },
+ "xaxis3": {
+ "anchor": "y3",
+ "autorange": true,
+ "domain": [
+ 0,
+ 0.45
+ ],
+ "range": [
+ -0.06210702085236811,
+ 1
+ ],
+ "title": {
+ "font": {
+ "size": 12
+ },
+ "text": "Threshold"
+ },
+ "type": "linear"
+ },
+ "xaxis4": {
+ "anchor": "y4",
+ "autorange": true,
+ "domain": [
+ 0.55,
+ 1
+ ],
+ "range": [
+ -0.06210702085236813,
+ 1
+ ],
+ "title": {
+ "font": {
+ "size": 12
+ },
+ "text": "Threshold"
+ },
+ "type": "linear"
+ },
+ "yaxis": {
+ "anchor": "x",
+ "autorange": true,
+ "domain": [
+ 0.58,
+ 1
+ ],
+ "range": [
+ -29.580890318909297,
+ 318.7930190203054
+ ],
+ "title": {
+ "font": {
+ "size": 12
+ },
+ "text": "Amount/Cost"
+ },
+ "type": "linear"
+ },
+ "yaxis2": {
+ "anchor": "x2",
+ "autorange": true,
+ "domain": [
+ 0.58,
+ 1
+ ],
+ "range": [
+ -162.62670524314956,
+ 1752.6267052431494
+ ],
+ "type": "linear"
+ },
+ "yaxis3": {
+ "anchor": "x3",
+ "autorange": true,
+ "domain": [
+ 0,
+ 0.42
+ ],
+ "range": [
+ -7.456371759809114,
+ 80.35725898107248
+ ],
+ "title": {
+ "font": {
+ "size": 12
+ },
+ "text": "Amount/Cost"
+ },
+ "type": "linear"
+ },
+ "yaxis4": {
+ "anchor": "x4",
+ "autorange": true,
+ "domain": [
+ 0,
+ 0.42
+ ],
+ "range": [
+ -7.452952318625643,
+ 80.32040769071278
+ ],
+ "type": "linear"
+ }
+ }
+ },
+ "image/png": "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bxgp5LhRVsQr+W2k0NjFvmtPc7q0i3U3umhL+a140rN7mgDlt74nA+W3vrmj/NY3d5Tf+ubOicgpv52gOrTGpPzWN9+U3/rmjvJb39xRfuubO8pv9dxRfisy7IslFEdQ7x4IHBgjmTx4vJ27mhCNxzFm9HAEAwGI5+IYNbJR1sTeumM3hNAuKy1BPJ7Ahi3bMWp4I6oqyw96bu4rxjD3F8/NYyWSSWzbsQf1tdVyLGvfjs5utLS2y7j6+qL9+hZDRcTS1t6JYY112LFrLxrraxEJh7Fl+y6MGtEo1ycOaxzFzGVnH5m/pPw/D80IGD97mX7uNFvKkAuXudM35cydvrkTkZeEg3ovgNHbRkCHa2jbFsuBHCHAfw8cwerKoMydK5gdmYS5cwSrK4Myd65gdmwSXkOroaX8VuPH3iRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAj4kQPntw6QwJBIgARIgARIgARIgARIgARIgARIgARIgARIgARIgATUClN9q/NibBEiABEiABEiABEiABEiABEiABEiABEiABEiABEjAhwQov32YFIZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSgRoDyW40fe5MACZAACZAACZAACZAACZAACZAACZAACZAACZAACfiQAOW3D5PCkEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABNQIUH6r8WNvEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABHxKg/PZhUhgSCZAACZAACZAACZAACZAACZAACZAACZAACZAACZCAGgHKbzV+7E0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJOBDApTfPkwKQyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABElAjQPmtxo+9SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEfEiA8tuHSWFIJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACagQov9X4sTcJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAPCVB++zApDIkESIAESIAESIAESIAESIAESIAESIAESIAESIAESECNAOW3Gj/2JgESIAESIAESIAESIAESIAESIAESIAESIAESIAES8CEBym8fJoUhkQAJkAAJkAAJ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SIAESIAESIAESGBQE6D8HtTp5eJIgARIgARIgARIgARIgARIgARIgARIgARIgARIYGgSoPzefxdpcfOK7bua5FlgvumFeC5uonHjsgfle/NOn4Obr/tK+g7UQ/O04apJgARIgARIgARIgASGOoH1m7ZjoGvogW78NtTZcf0kQAIkQAIkQAIkQALuEBjy8tta98v6XFy03/nTFfLu0OKOzOJuzOJYcPF8dzLEWUiABEiABEiABEiABEjAZwRyXUMLMb546QNYsugiHDHuELmZ5OXX13ITic/yyHBIgARIgARIgARIYLATGPLy23ph3tPTh5tu/xnmHDsNZ809Wcru8WNHye/FYZXhg/0E4fpIgARIgARIgARIgARIwEog1zW0kN0bt+5MbxixtidREiABEiABEiABEiABEnCDwJCX3wKyENx/eu5l3LvsWsn8tnt+gyXXfxXlpaX9RLh4z3rh3hdLuJGnAecIBA68nUx6Hg4DKJCAzF9S/p+HZgSMnz3+3GmWOADMnX45MyJm7vTNnYi8JBzUewGMvh+BbNfQmT4tad0pzmtonkyqBPjvgSpB7/ozd96xV52ZuVMl6F1/5s479nbMzGtoNYqU3/t3c9/x09+iqblV1v02an4bu8Dnn3EKZs+aLElb5ff2pm61DNjQu7oiguryMNq7Y2jvitowIodwk8Co+jLsbu1FIkH97SZ3O+YaXleKfe1RROPe/xHMjvUMpTEaa0rR0R1Fb5S50y3v9VUl6InG0d0b1y30IR9vIBDA6IayIc9hMAEQn4jMdA0t1mj99KRVfu9o7kHS478eV5WHUVMRQUd3DG28htbu1BxRV4bm9l7E4ryG1i15w2pL0dYZhR/+CKYbO6/jbaguQVdvHD19vA7zOheFzl9bGZH/vezsiRXale19QOCQxnIfRKFvCENefguZbez0FrtUjAtzIbznnnpCzp3flN/6nvx+iZzy2y+ZKDwOyu/CmfmlB+W3XzJReByU34Uz80sPym+/ZMKeOAa6hjZKB4qZjPvkUH7bw52jHCBA+a3v2UD5rW/uKL/1zR3lt765E5FTfqvlb8jLb7FjZcWTL/S7+Y75ppa5an5TfqudgOwNUH7rexZQfuubO8pvfXNH+a1v7ii/9c1dpshzXUPnqvnNnd+D63zwYjWU315Qt2dOym97OHoxCuW3F9TtmZPy2x6O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",
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot \"Interactive confusion line chart\" and get amount/cost per threshold dataframe and total_amount.\n",
+ "\n",
+ "# at least one of cost_dict or amounts must be given\n",
+ "# either cost_dict or amounts, if not given, is set to None and won't be visualized\n",
+ "# when amounts is not given, the total_amount returned will be None \n",
+ "\n",
+ "amount_cost_df, total_amount = bc.confusion_linechart_plot(\n",
+ " true_y = y_test, \n",
+ " predicted_proba = test_predicted_proba, \n",
+ " threshold_step = threshold_step, \n",
+ " amounts = amounts, \n",
+ " cost_dict = test_cost_dict, \n",
+ " currency = currency);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "2f878e76",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "total amount: $374.24\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " threshold | \n",
+ " amount_TN | \n",
+ " amount_FP | \n",
+ " amount_FN | \n",
+ " amount_TP | \n",
+ " cost_TN | \n",
+ " cost_FP | \n",
+ " cost_FN | \n",
+ " cost_TP | \n",
+ " total_cost | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0.00 | \n",
+ " 0.000000 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.0 | \n",
+ " 1590.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 1590.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.05 | \n",
+ " 54.546707 | \n",
+ " 246.827617 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.0 | \n",
+ " 1260.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 1260.000000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.10 | \n",
+ " 131.950002 | \n",
+ " 169.424322 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.0 | \n",
+ " 800.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 800.000000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.15 | \n",
+ " 201.450316 | \n",
+ " 99.924008 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.0 | \n",
+ " 470.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 470.000000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.20 | \n",
+ " 244.531836 | \n",
+ " 56.842488 | \n",
+ " 2.000578 | \n",
+ " 70.866877 | \n",
+ " 0.0 | \n",
+ " 270.0 | \n",
+ " 5.979009 | \n",
+ " 0.0 | \n",
+ " 275.979009 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.25 | \n",
+ " 272.418441 | \n",
+ " 28.955882 | \n",
+ " 7.486199 | \n",
+ " 65.381257 | \n",
+ " 0.0 | \n",
+ " 120.0 | \n",
+ " 9.906647 | \n",
+ " 0.0 | \n",
+ " 129.906647 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.30 | \n",
+ " 281.066481 | \n",
+ " 20.307843 | \n",
+ " 8.033848 | \n",
+ " 64.833608 | \n",
+ " 0.0 | \n",
+ " 80.0 | \n",
+ " 11.436406 | \n",
+ " 0.0 | \n",
+ " 91.436406 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 0.35 | \n",
+ " 289.999210 | \n",
+ " 11.375114 | \n",
+ " 15.090452 | \n",
+ " 57.777003 | \n",
+ " 0.0 | \n",
+ " 40.0 | \n",
+ " 18.916651 | \n",
+ " 0.0 | \n",
+ " 58.916651 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 0.40 | \n",
+ " 296.280144 | \n",
+ " 5.094179 | \n",
+ " 15.090452 | \n",
+ " 57.777003 | \n",
+ " 0.0 | \n",
+ " 20.0 | \n",
+ " 18.916651 | \n",
+ " 0.0 | \n",
+ " 38.916651 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 0.45 | \n",
+ " 297.985567 | \n",
+ " 3.388757 | \n",
+ " 20.449525 | \n",
+ " 52.417931 | \n",
+ " 0.0 | \n",
+ " 10.0 | \n",
+ " 26.541712 | \n",
+ " 0.0 | \n",
+ " 36.541712 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 0.50 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 32.337924 | \n",
+ " 40.529531 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 36.512711 | \n",
+ " 0.0 | \n",
+ " 36.512711 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 0.55 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 39.285107 | \n",
+ " 33.582349 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 46.897857 | \n",
+ " 0.0 | \n",
+ " 46.897857 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 0.60 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 44.417827 | \n",
+ " 28.449629 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 51.482290 | \n",
+ " 0.0 | \n",
+ " 51.482290 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 0.65 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 58.042550 | \n",
+ " 14.824906 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 63.124482 | \n",
+ " 0.0 | \n",
+ " 63.124482 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 0.70 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 59.654602 | \n",
+ " 13.212854 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 65.075407 | \n",
+ " 0.0 | \n",
+ " 65.075407 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 0.75 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 62.096736 | \n",
+ " 10.770720 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 67.222522 | \n",
+ " 0.0 | \n",
+ " 67.222522 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 0.80 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 0.85 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 0.90 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 0.95 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 1.00 | \n",
+ " 301.374324 | \n",
+ " 0.000000 | \n",
+ " 72.867455 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " threshold amount_TN amount_FP amount_FN amount_TP cost_TN cost_FP \\\n",
+ "0 0.00 0.000000 301.374324 0.000000 72.867455 0.0 1590.0 \n",
+ "1 0.05 54.546707 246.827617 0.000000 72.867455 0.0 1260.0 \n",
+ "2 0.10 131.950002 169.424322 0.000000 72.867455 0.0 800.0 \n",
+ "3 0.15 201.450316 99.924008 0.000000 72.867455 0.0 470.0 \n",
+ "4 0.20 244.531836 56.842488 2.000578 70.866877 0.0 270.0 \n",
+ "5 0.25 272.418441 28.955882 7.486199 65.381257 0.0 120.0 \n",
+ "6 0.30 281.066481 20.307843 8.033848 64.833608 0.0 80.0 \n",
+ "7 0.35 289.999210 11.375114 15.090452 57.777003 0.0 40.0 \n",
+ "8 0.40 296.280144 5.094179 15.090452 57.777003 0.0 20.0 \n",
+ "9 0.45 297.985567 3.388757 20.449525 52.417931 0.0 10.0 \n",
+ "10 0.50 301.374324 0.000000 32.337924 40.529531 0.0 0.0 \n",
+ "11 0.55 301.374324 0.000000 39.285107 33.582349 0.0 0.0 \n",
+ "12 0.60 301.374324 0.000000 44.417827 28.449629 0.0 0.0 \n",
+ "13 0.65 301.374324 0.000000 58.042550 14.824906 0.0 0.0 \n",
+ "14 0.70 301.374324 0.000000 59.654602 13.212854 0.0 0.0 \n",
+ "15 0.75 301.374324 0.000000 62.096736 10.770720 0.0 0.0 \n",
+ "16 0.80 301.374324 0.000000 72.867455 0.000000 0.0 0.0 \n",
+ "17 0.85 301.374324 0.000000 72.867455 0.000000 0.0 0.0 \n",
+ "18 0.90 301.374324 0.000000 72.867455 0.000000 0.0 0.0 \n",
+ "19 0.95 301.374324 0.000000 72.867455 0.000000 0.0 0.0 \n",
+ "20 1.00 301.374324 0.000000 72.867455 0.000000 0.0 0.0 \n",
+ "\n",
+ " cost_FN cost_TP total_cost \n",
+ "0 0.000000 0.0 1590.000000 \n",
+ "1 0.000000 0.0 1260.000000 \n",
+ "2 0.000000 0.0 800.000000 \n",
+ "3 0.000000 0.0 470.000000 \n",
+ "4 5.979009 0.0 275.979009 \n",
+ "5 9.906647 0.0 129.906647 \n",
+ "6 11.436406 0.0 91.436406 \n",
+ "7 18.916651 0.0 58.916651 \n",
+ "8 18.916651 0.0 38.916651 \n",
+ "9 26.541712 0.0 36.541712 \n",
+ "10 36.512711 0.0 36.512711 \n",
+ "11 46.897857 0.0 46.897857 \n",
+ "12 51.482290 0.0 51.482290 \n",
+ "13 63.124482 0.0 63.124482 \n",
+ "14 65.075407 0.0 65.075407 \n",
+ "15 67.222522 0.0 67.222522 \n",
+ "16 75.966577 0.0 75.966577 \n",
+ "17 75.966577 0.0 75.966577 \n",
+ "18 75.966577 0.0 75.966577 \n",
+ "19 75.966577 0.0 75.966577 \n",
+ "20 75.966577 0.0 75.966577 "
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# total_amount and dataframe returned\n",
+ "print(f'total amount: {currency}{total_amount}')\n",
+ "amount_cost_df "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "9580ceca",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " threshold | \n",
+ " cost_TN | \n",
+ " cost_FP | \n",
+ " cost_FN | \n",
+ " cost_TP | \n",
+ " total_cost | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0.00 | \n",
+ " 0.0 | \n",
+ " 1590.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 1590.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.05 | \n",
+ " 0.0 | \n",
+ " 1260.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 1260.000000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.10 | \n",
+ " 0.0 | \n",
+ " 800.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 800.000000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.15 | \n",
+ " 0.0 | \n",
+ " 470.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 470.000000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.20 | \n",
+ " 0.0 | \n",
+ " 270.0 | \n",
+ " 5.979009 | \n",
+ " 0.0 | \n",
+ " 275.979009 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.25 | \n",
+ " 0.0 | \n",
+ " 120.0 | \n",
+ " 9.906647 | \n",
+ " 0.0 | \n",
+ " 129.906647 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.30 | \n",
+ " 0.0 | \n",
+ " 80.0 | \n",
+ " 11.436406 | \n",
+ " 0.0 | \n",
+ " 91.436406 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 0.35 | \n",
+ " 0.0 | \n",
+ " 40.0 | \n",
+ " 18.916651 | \n",
+ " 0.0 | \n",
+ " 58.916651 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 0.40 | \n",
+ " 0.0 | \n",
+ " 20.0 | \n",
+ " 18.916651 | \n",
+ " 0.0 | \n",
+ " 38.916651 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 0.45 | \n",
+ " 0.0 | \n",
+ " 10.0 | \n",
+ " 26.541712 | \n",
+ " 0.0 | \n",
+ " 36.541712 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 0.50 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 36.512711 | \n",
+ " 0.0 | \n",
+ " 36.512711 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 0.55 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 46.897857 | \n",
+ " 0.0 | \n",
+ " 46.897857 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 0.60 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 51.482290 | \n",
+ " 0.0 | \n",
+ " 51.482290 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 0.65 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 63.124482 | \n",
+ " 0.0 | \n",
+ " 63.124482 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 0.70 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 65.075407 | \n",
+ " 0.0 | \n",
+ " 65.075407 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 0.75 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 67.222522 | \n",
+ " 0.0 | \n",
+ " 67.222522 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 0.80 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 0.85 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 0.90 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 0.95 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " threshold cost_TN cost_FP cost_FN cost_TP total_cost\n",
+ "0 0.00 0.0 1590.0 0.000000 0.0 1590.000000\n",
+ "1 0.05 0.0 1260.0 0.000000 0.0 1260.000000\n",
+ "2 0.10 0.0 800.0 0.000000 0.0 800.000000\n",
+ "3 0.15 0.0 470.0 0.000000 0.0 470.000000\n",
+ "4 0.20 0.0 270.0 5.979009 0.0 275.979009\n",
+ "5 0.25 0.0 120.0 9.906647 0.0 129.906647\n",
+ "6 0.30 0.0 80.0 11.436406 0.0 91.436406\n",
+ "7 0.35 0.0 40.0 18.916651 0.0 58.916651\n",
+ "8 0.40 0.0 20.0 18.916651 0.0 38.916651\n",
+ "9 0.45 0.0 10.0 26.541712 0.0 36.541712\n",
+ "10 0.50 0.0 0.0 36.512711 0.0 36.512711\n",
+ "11 0.55 0.0 0.0 46.897857 0.0 46.897857\n",
+ "12 0.60 0.0 0.0 51.482290 0.0 51.482290\n",
+ "13 0.65 0.0 0.0 63.124482 0.0 63.124482\n",
+ "14 0.70 0.0 0.0 65.075407 0.0 65.075407\n",
+ "15 0.75 0.0 0.0 67.222522 0.0 67.222522\n",
+ "16 0.80 0.0 0.0 75.966577 0.0 75.966577\n",
+ "17 0.85 0.0 0.0 75.966577 0.0 75.966577\n",
+ "18 0.90 0.0 0.0 75.966577 0.0 75.966577\n",
+ "19 0.95 0.0 0.0 75.966577 0.0 75.966577"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# the amount/cost per threshold dataframe can be obtained directly with \n",
+ "# the function get_amounts_cost_df in the utilities module\n",
+ "\n",
+ "# this function requires a list of thresholds, instead of the step, for example:\n",
+ "threshold_values = np.arange(0, 1, 0.05) # will generate an array of values from 0 to 1 with step 0.05\n",
+ "\n",
+ "# example without amounts\n",
+ "bc.utilities.get_amount_cost_df(\n",
+ " true_y = y_test, \n",
+ " predicted_proba = test_predicted_proba,\n",
+ " threshold_values = threshold_values, \n",
+ " #amounts = amounts, \n",
+ " cost_dict = test_cost_dict)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "e79e6e49",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "hovertemplate": "total amount: $%{y}",
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "y": [
+ 374.2417789254318,
+ 319.6950723637539,
+ 242.29177716748666,
+ 172.79146291489718,
+ 127.70936500766814,
+ 94.33713874856325,
+ 85.14145017085328,
+ 69.15211709757911,
+ 62.871182797376306,
+ 55.80668741474659,
+ 40.529531387710634,
+ 33.58234886130552,
+ 28.449628589410278,
+ 14.82490553087267,
+ 13.21285380021408,
+ 10.770719838097396,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "hovertemplate": "total cost: $%{y}",
+ "mode": "lines",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 0.05,
+ 0.1,
+ 0.15000000000000002,
+ 0.2,
+ 0.25,
+ 0.30000000000000004,
+ 0.35000000000000003,
+ 0.4,
+ 0.45,
+ 0.5,
+ 0.55,
+ 0.6000000000000001,
+ 0.65,
+ 0.7000000000000001,
+ 0.75,
+ 0.8,
+ 0.8500000000000001,
+ 0.9,
+ 0.9500000000000001,
+ 1
+ ],
+ "y": [
+ 1590,
+ 1260,
+ 800,
+ 470,
+ 275.9790094922077,
+ 129.90664676341643,
+ 91.43640630763322,
+ 58.916651027941086,
+ 38.916651027941086,
+ 36.541711980570135,
+ 36.51271105083246,
+ 46.89785726845953,
+ 51.48228951704443,
+ 63.12448167214795,
+ 65.07540726526575,
+ 67.2225223778225,
+ 75.9665774440284,
+ 75.9665774440284,
+ 75.9665774440284,
+ 75.9665774440284,
+ 75.9665774440284
+ ]
+ },
+ {
+ "hovertemplate": "%{x}",
+ "marker": {
+ "color": "black",
+ "size": 8,
+ "symbol": "diamond"
+ },
+ "mode": "markers",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0.35000000000000003,
+ 0.55
+ ],
+ "y": [
+ 58.916651027941086,
+ 46.89785726845953
+ ]
+ }
+ ],
+ "layout": {
+ "autosize": true,
+ "hovermode": "x unified",
+ "margin": {
+ "t": 120
+ },
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ },
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "pattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "fillpattern": {
+ "fillmode": "overlay",
+ "size": 10,
+ "solidity": 0.2
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "autotypenumbers": "strict",
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "title": {
+ "text": "Interactive Amount-Cost Line Chart
Amount categories: TP + FP
Cost categories: TN + FP + FN + TP
Swaps at thresholds: 0.35, 0.55",
+ "y": 0.965,
+ "yanchor": "bottom"
+ },
+ "xaxis": {
+ "autorange": true,
+ "range": [
+ 0,
+ 1
+ ],
+ "title": {
+ "text": "Threshold"
+ },
+ "type": "linear"
+ },
+ "yaxis": {
+ "autorange": true,
+ "range": [
+ -88.33333333333334,
+ 1678.3333333333333
+ ],
+ "title": {
+ "text": "Amount/Cost"
+ },
+ "type": "linear"
+ }
+ }
+ },
+ "image/png": "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b1aLAAIIIIAAAggggAACCCCAAAIIIIAAAgjEQoDwOxZtZpEIIIAAAggggAACCCCAAAIIIIAAAggggEC8BAi/49VvVosAAggggAACCCCAAAIIIIAAAggggAACCMRCgPA7Fm1mkQgggAACCCCAAAIIIIAAAggggAACCCCAQLwECL/j1W9WiwACCCCAAAIIIIAAAggggAACCCCAAAIIxEKA8DsWbWaRCCCAAAIIIIAAAggggAACCCCAAAIIIIBAvAQIv+PVb1aLAAIIIIAAAggggAACCCCAAAIIIIAAAgjEQoDwOxZtZpEIIIAAAggggAACCCCAAAIIIIAAAggggEC8BAi/49VvVosAAggggAACCCCAAAIIIIAAAggggAACCMRCgPA7Fm1mkQgggAACCCCAAAIIIIAAAggggAACCCCAQLwECL/j1W9WiwACCCCAAAIIIIAAAggggAACCCCAAAIIxEKA8DsWbWaRCCCAAAIIIIAAAggggAACCCCAAAIIIIBAvAQIv+PVb1aLAAIIIIAAAggggAACCCCAAAIIIIAAAgjEQoDwOxZtZpEIIIAAAggggAACCCCAAAIIIIAAAggggEC8BAi/49VvVosAAggggAACCCCAAAIIIIAAAggggAACCMRCgPA7Fm1mkQgggAACCCCAAAIIIIAAAggggAACCCCAQLwECL/j1W9WiwACCCCAAAIIIIAAAggggAACCCCAAAIIxEKA8DsWbWaRCCCAAAIIIIAAAggggAACCCCAAAIIIIBAvAQIv+PVb1aLAAIIIIAAAggggAACCCCAAAIIIIAAAgjEQoDwOxZtZpEIIIAAAggggAACCCCAAAIIIIAAAggggEC8BAi/49VvVosAAggggAACCCCAAAIIIIAAAggggAACCMRCgPA7Fm1mkQgggAACCCCAAAIIIIAAAggggAACCCCAQLwECL/j1W9WiwACCCCAAAIIIIAAAggggAACCCCAAAIIxEKA8DsWbWaRCCCAAAIIIIAAAggggAACCCCAAAIIIIBAvAQIv+PVb1aLAAIIIIAAAggggAACCCCAAAIIIIAAAgjEQoDwOxZtZpEIIIAAAggggAACCCCAAAIIIIAAAggggEC8BAi/49VvVosAAggggAACCCCAAAIIIIAAAggggAACCMRCgPA7Fm1mkQgggAACCCCAAAIIIIAAAggggAAC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AAECBAgQIDDDAsLvGW6OXSNAgAABAgQIECBAgAABAgQIECBAgACBbgLC725uRhEgQIAAAQIECBAgQIAAAQIECBAgQIDADAsIv2e4OXaNAAECBAgQIECAAAECBAgQIECAAAECBLoJCL+7uRlFgAABAgQIECBAgAABAgQIECBAgAABAjMsIPye4ebYNQIECBAgQIAAAQIECBAgQIAAAQIECBDoJiD87uZmFAECBAgQIECAAAECBAgQIECAAAECBAjMsIDwe4abY9cIECBAgAABAgQIECBAgAABAgQIECBAoJuA8Lubm1EECBAgQIAAAQIECBAgQIAAAQIECBAgMMMCwu8Zbo5dI0CAAAECBAgQWD+BF19+PTz4yOHw8OIdYcvmTev2xidPngp3P/BEWLhye/jGtVd3ft9J9v+pZ18IR156Ndxz501h48YNnd/LQAIECBAgQIAAAQLzICD8nocu2UcCBAgQIECAAIHOAu+8+1743v6fhldee2PFOfZcvytc/cUdwu/OygYSIECAAAECBAgQmD0B4ffs9cQeESBAgAABAgQIrKHASndIT3Ln9Frslju/10LVnAQIECBAgAABAgRCEH47CggQIECAAAECBIoSGBd+7/3O7nDg4GPh6PETlcuTD+0PV11xafX/9djmNvfu21MtV9K+w3zXzoVly4vEsTfcvji0vvyyi6slVj720Y8Olz1568/HwuO/eqbapj0+/tuDjx4evr71/PPCz+/7Qdh24dZl+9ZctuXNt4+G2/b9ZFjLSvMWdQAolgABAgQIECBAoBgB4XcxrVYoAQIECBAgQIBAM8Bur+1dh9PN0DmukX346eeH64CP2ibOWQffMRSvg/IYVB/764kqAD96/O/hwOKhcHD/zcOwOs792Qs+GXZcsq0Kv5957sgwaK/n233dNcN1wJvzxfW6477EkL4OwNuhfh18Hzxwy3CfrPnta4AAAQIECBAgQKAkAeF3Sd1WKwECBAgQIECAwPDu7VHhd/uBlzFAbobWK901HkPleNf23lt3D4WbY0/8458rrie+0rInMeyOH3HOUeF6e1x735rj650SfvsCIECAAAECBAgQKElA+F1St9VKgAABAgQIECCwJuF3czmSJnG9NMmWj29a9tDN5lIqk4TfMUi//2e/Dgd/dEvYsnnT8C2aoXsz/G4upRKXZBF+O/AJECBAgAABAgRKFBB+l9h1NRMgQIAAAQIEChYYt+Z3e83sSe78HnWX9Sji9rrgMQSvlz1ZuHL7cImTOLY5Z9fwOy6bUi/DEud053fBB77SCRAgQIAAAQIFCgi/C2y6kgkQIECAAAECJQusRfg9bajcvNv72i99cfjAy+Zd2inLnrjzu+QjXO0ECBAgQIAAAQK1gPDbsUCAAAECBAgQIFCUwFqE3/XDJb/65YXhut8x4H74l78JN37zK+F3v/9DZVyH2801vCe58zuOnfaBlys9APMLOz5fPYQzPjTTBwECBAgQIECAAIGcBYTfOXdXbQQIECBAgAABAv8nsBbhd3yT9pIm8d/2XL+rCsPrcPzo8RPD/bl3354qDJ9kze96UHNt8Xo98W0Xbq1eHlVXvCP9rvser17ftXMhXH7ZxeGV194Qfvu6IECAAAECBAgQKEJA+F1EmxVJgAABAgQIECBAgAABAgQIECBAgACBsgSE32X1W7UECBAgQIAAAQIECBAgQIAAAQIECBAoQkD4XUSbFUmAAAECBAgQIECAAAECBAgQIECAAIGyBITfZfVbtQQIECBAgAABAgQIECBAgAABAgQIEChCQPhdRJsVSYAAAQIECBAgQIAAAQIECBAgQIAAgbIEhN9l9Vu1BAgQIECAAAECBAgQIECAAAECBAgQKEJA+F1EmxVJgAABAgQIECBAgAABAgQIECBAgACBsgSE32X1W7UECBAgQIAAAQIECBAgQIAAAQIECBAoQkD4XUSbFUmAAAECBAgQIECAAAECBAgQIECAAIGyBITfZfVbtQQIECBAgAABAgQIECBAgAABAgQIEChCQPhdRJsVSYAAAQIECBAgQIAAAQIECBAgQIAAgbIEhN9l9Vu1BAgQIECAAAECBAgQIECAAAECBAgQKEJA+F1EmxVJgAABAgQIECBAgAABAgQIECBAgACBsgSE32X1W7UECBAgQIAAAQIECBAgQIAAAQIECBAoQkD4XUSbFUmAAAECBAgQIECAAAECBAgQIEABe6MrAAACz0lEQVSAAIGyBITfZfVbtQQIECBAgAABAgQIECBAgAABAgQIEChCQPhdRJsVSYAAAQIECBAgQIAAAQIECBAgQIAAgbIEhN9l9Vu1BAgQIECAAAECBAgQIECAAAECBAgQKEJA+F1EmxVJgAABAgQIECBAgAABAgQIECBAgACBsgSE32X1W7UECBAgQIAAAQIECBAgQIAAAQIECBAoQkD4XUSbFUmAAAECBAgQIECAAAECBAgQIECAAIGyBITfZfVbtQQIECBAgAABAgQIECBAgAABAgQIEChCQPhdRJsVSYAAAQIECBAgQIAAAQIECBAgQIAAgbIEhN9l9Vu1BAgQIECAAAECBAgQIECAAAECBAgQKEJA+F1EmxVJgAABAgQIECBAgAABAgQIECBAgACBsgSE32X1W7UECBAgQIAAAQIECBAgQIAAAQIECBAoQkD4XUSbFUmAAAECBAgQIECAAAECBAgQIECAAIGyBITfZfVbtQQIECBAgAABAgQIECBAgAABAgQIEChCQPhdRJsVSYAAAQIECBAgQIAAAQIECBAgQIAAgbIEhN9l9Vu1BAgQIECAAAECBAgQIECAAAECBAgQKEJA+F1EmxVJgAABAgQIECBAgAABAgQIECBAgACBsgSE32X1W7UECBAgQIAAAQIECBAgQIAAAQIECBAoQkD4XUSbFUmAAAECBAgQIECAAAECBAgQIECAAIGyBITfZfVbtQQIECBAgAABAgQIECBAgAABAgQIEChCQPhdRJsVSYAAAQIECBAgQIAAAQIECBAgQIAAgbIEhN9l9Vu1BAgQIECAAAECBAgQIECAAAECBAgQKEJA+F1EmxVJgAABAgQIECBAgAABAgQIECBAgACBsgSE32X1W7UECBAgQIAAAQIECBAgQIAAAQIECBAoQkD4XUSbFUmAAAECBAgQIECAAAECBAgQIECAAIGyBP4HHnMN1EopyC0AAAAASUVORK5CYII=",
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# plot \"Amount/Cost line chart\" and get a dataframe containing amount and cost per threshold for selected\n",
+ "# \"confusion classes\" (TN, FP, FN, TP) and their total\n",
+ "\n",
+ "# at least one of cost_dict or amounts must be given\n",
+ "# either cost_dict or amounts, if not given, is set to None and won't be visualized\n",
+ "# amount_classes, if not given, is set to 'all' when amounts is given, to None otherwise\n",
+ "# cost_classes, if not given, is set to 'all' when cost_dict is given, to None otherwise\n",
+ "\n",
+ "# for example, if we want to plot the sum of the amounts of the True Positive and False Positive data\n",
+ "# and the sum of the costs of all the data:\n",
+ "\n",
+ "amount_classes = ['TP', 'FP'] \n",
+ "cost_classes = 'all'\n",
+ "\n",
+ "total_cost_amount_df = bc.total_amount_cost_plot(\n",
+ " true_y = y_test, \n",
+ " predicted_proba = test_predicted_proba, \n",
+ " threshold_step = threshold_step,\n",
+ " amounts = amounts, \n",
+ " cost_dict = test_cost_dict,\n",
+ " amount_classes = amount_classes,\n",
+ " cost_classes = cost_classes,\n",
+ " currency = currency);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "fa57e083",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " threshold | \n",
+ " amount_TP | \n",
+ " amount_FP | \n",
+ " amount_sum | \n",
+ " cost_TN | \n",
+ " cost_FP | \n",
+ " cost_FN | \n",
+ " cost_TP | \n",
+ " cost_sum | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0.00 | \n",
+ " 72.867455 | \n",
+ " 301.374324 | \n",
+ " 374.241779 | \n",
+ " 0.0 | \n",
+ " 1590.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 1590.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.05 | \n",
+ " 72.867455 | \n",
+ " 246.827617 | \n",
+ " 319.695072 | \n",
+ " 0.0 | \n",
+ " 1260.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 1260.000000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.10 | \n",
+ " 72.867455 | \n",
+ " 169.424322 | \n",
+ " 242.291777 | \n",
+ " 0.0 | \n",
+ " 800.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 800.000000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.15 | \n",
+ " 72.867455 | \n",
+ " 99.924008 | \n",
+ " 172.791463 | \n",
+ " 0.0 | \n",
+ " 470.0 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 470.000000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.20 | \n",
+ " 70.866877 | \n",
+ " 56.842488 | \n",
+ " 127.709365 | \n",
+ " 0.0 | \n",
+ " 270.0 | \n",
+ " 5.979009 | \n",
+ " 0.0 | \n",
+ " 275.979009 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.25 | \n",
+ " 65.381257 | \n",
+ " 28.955882 | \n",
+ " 94.337139 | \n",
+ " 0.0 | \n",
+ " 120.0 | \n",
+ " 9.906647 | \n",
+ " 0.0 | \n",
+ " 129.906647 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.30 | \n",
+ " 64.833608 | \n",
+ " 20.307843 | \n",
+ " 85.141450 | \n",
+ " 0.0 | \n",
+ " 80.0 | \n",
+ " 11.436406 | \n",
+ " 0.0 | \n",
+ " 91.436406 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 0.35 | \n",
+ " 57.777003 | \n",
+ " 11.375114 | \n",
+ " 69.152117 | \n",
+ " 0.0 | \n",
+ " 40.0 | \n",
+ " 18.916651 | \n",
+ " 0.0 | \n",
+ " 58.916651 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 0.40 | \n",
+ " 57.777003 | \n",
+ " 5.094179 | \n",
+ " 62.871183 | \n",
+ " 0.0 | \n",
+ " 20.0 | \n",
+ " 18.916651 | \n",
+ " 0.0 | \n",
+ " 38.916651 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 0.45 | \n",
+ " 52.417931 | \n",
+ " 3.388757 | \n",
+ " 55.806687 | \n",
+ " 0.0 | \n",
+ " 10.0 | \n",
+ " 26.541712 | \n",
+ " 0.0 | \n",
+ " 36.541712 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 0.50 | \n",
+ " 40.529531 | \n",
+ " 0.000000 | \n",
+ " 40.529531 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 36.512711 | \n",
+ " 0.0 | \n",
+ " 36.512711 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 0.55 | \n",
+ " 33.582349 | \n",
+ " 0.000000 | \n",
+ " 33.582349 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 46.897857 | \n",
+ " 0.0 | \n",
+ " 46.897857 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 0.60 | \n",
+ " 28.449629 | \n",
+ " 0.000000 | \n",
+ " 28.449629 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 51.482290 | \n",
+ " 0.0 | \n",
+ " 51.482290 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 0.65 | \n",
+ " 14.824906 | \n",
+ " 0.000000 | \n",
+ " 14.824906 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 63.124482 | \n",
+ " 0.0 | \n",
+ " 63.124482 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 0.70 | \n",
+ " 13.212854 | \n",
+ " 0.000000 | \n",
+ " 13.212854 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 65.075407 | \n",
+ " 0.0 | \n",
+ " 65.075407 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 0.75 | \n",
+ " 10.770720 | \n",
+ " 0.000000 | \n",
+ " 10.770720 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 67.222522 | \n",
+ " 0.0 | \n",
+ " 67.222522 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 0.80 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 0.85 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 0.90 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 0.95 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 1.00 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.0 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ " 0.0 | \n",
+ " 75.966577 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " threshold amount_TP amount_FP amount_sum cost_TN cost_FP cost_FN \\\n",
+ "0 0.00 72.867455 301.374324 374.241779 0.0 1590.0 0.000000 \n",
+ "1 0.05 72.867455 246.827617 319.695072 0.0 1260.0 0.000000 \n",
+ "2 0.10 72.867455 169.424322 242.291777 0.0 800.0 0.000000 \n",
+ "3 0.15 72.867455 99.924008 172.791463 0.0 470.0 0.000000 \n",
+ "4 0.20 70.866877 56.842488 127.709365 0.0 270.0 5.979009 \n",
+ "5 0.25 65.381257 28.955882 94.337139 0.0 120.0 9.906647 \n",
+ "6 0.30 64.833608 20.307843 85.141450 0.0 80.0 11.436406 \n",
+ "7 0.35 57.777003 11.375114 69.152117 0.0 40.0 18.916651 \n",
+ "8 0.40 57.777003 5.094179 62.871183 0.0 20.0 18.916651 \n",
+ "9 0.45 52.417931 3.388757 55.806687 0.0 10.0 26.541712 \n",
+ "10 0.50 40.529531 0.000000 40.529531 0.0 0.0 36.512711 \n",
+ "11 0.55 33.582349 0.000000 33.582349 0.0 0.0 46.897857 \n",
+ "12 0.60 28.449629 0.000000 28.449629 0.0 0.0 51.482290 \n",
+ "13 0.65 14.824906 0.000000 14.824906 0.0 0.0 63.124482 \n",
+ "14 0.70 13.212854 0.000000 13.212854 0.0 0.0 65.075407 \n",
+ "15 0.75 10.770720 0.000000 10.770720 0.0 0.0 67.222522 \n",
+ "16 0.80 0.000000 0.000000 0.000000 0.0 0.0 75.966577 \n",
+ "17 0.85 0.000000 0.000000 0.000000 0.0 0.0 75.966577 \n",
+ "18 0.90 0.000000 0.000000 0.000000 0.0 0.0 75.966577 \n",
+ "19 0.95 0.000000 0.000000 0.000000 0.0 0.0 75.966577 \n",
+ "20 1.00 0.000000 0.000000 0.000000 0.0 0.0 75.966577 \n",
+ "\n",
+ " cost_TP cost_sum \n",
+ "0 0.0 1590.000000 \n",
+ "1 0.0 1260.000000 \n",
+ "2 0.0 800.000000 \n",
+ "3 0.0 470.000000 \n",
+ "4 0.0 275.979009 \n",
+ "5 0.0 129.906647 \n",
+ "6 0.0 91.436406 \n",
+ "7 0.0 58.916651 \n",
+ "8 0.0 38.916651 \n",
+ "9 0.0 36.541712 \n",
+ "10 0.0 36.512711 \n",
+ "11 0.0 46.897857 \n",
+ "12 0.0 51.482290 \n",
+ "13 0.0 63.124482 \n",
+ "14 0.0 65.075407 \n",
+ "15 0.0 67.222522 \n",
+ "16 0.0 75.966577 \n",
+ "17 0.0 75.966577 \n",
+ "18 0.0 75.966577 \n",
+ "19 0.0 75.966577 \n",
+ "20 0.0 75.966577 "
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# dataframe returned by the function\n",
+ "total_cost_amount_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "c0b79d97",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ " 5 | \n",
+ " 6 | \n",
+ " 7 | \n",
+ " 8 | \n",
+ " 9 | \n",
+ " 10 | \n",
+ " 11 | \n",
+ " 12 | \n",
+ " 13 | \n",
+ " 14 | \n",
+ " 15 | \n",
+ " 16 | \n",
+ " 17 | \n",
+ " 18 | \n",
+ " 19 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 24 | \n",
+ " -0.242065 | \n",
+ " -0.308503 | \n",
+ " 3.760622 | \n",
+ " -2.578657 | \n",
+ " -1.335929 | \n",
+ " -2.963459 | \n",
+ " -1.376958 | \n",
+ " 2.600828 | \n",
+ " 6.016473 | \n",
+ " 1.504403 | \n",
+ " 4.683341 | \n",
+ " -3.540326 | \n",
+ " -0.026682 | \n",
+ " -1.535550 | \n",
+ " 1.804470 | \n",
+ " 0.012693 | \n",
+ " -0.399791 | \n",
+ " -0.187518 | \n",
+ " 0.904504 | \n",
+ " -1.069521 | \n",
+ "
\n",
+ " \n",
+ " 96 | \n",
+ " -3.049729 | \n",
+ " -3.784003 | \n",
+ " 1.107009 | \n",
+ " -0.201179 | \n",
+ " 0.873662 | \n",
+ " -3.947325 | \n",
+ " -2.886823 | \n",
+ " -0.819648 | \n",
+ " 5.083153 | \n",
+ " 0.850560 | \n",
+ " 4.091439 | \n",
+ " 0.033962 | \n",
+ " -2.147115 | \n",
+ " -2.442134 | \n",
+ " -0.254247 | \n",
+ " 0.827896 | \n",
+ " -3.532146 | \n",
+ " 0.291766 | \n",
+ " -0.181126 | \n",
+ " 0.280283 | \n",
+ "
\n",
+ " \n",
+ " 99 | \n",
+ " -1.653646 | \n",
+ " -4.421039 | \n",
+ " -0.753483 | \n",
+ " 2.040763 | \n",
+ " -3.970115 | \n",
+ " -4.770070 | \n",
+ " 5.446214 | \n",
+ " 2.601620 | \n",
+ " 1.523824 | \n",
+ " 2.914646 | \n",
+ " 1.196405 | \n",
+ " -0.825719 | \n",
+ " 1.397109 | \n",
+ " 0.885938 | \n",
+ " 0.508796 | \n",
+ " 2.075217 | \n",
+ " 0.276888 | \n",
+ " 0.762572 | \n",
+ " 0.064900 | \n",
+ " -1.881491 | \n",
+ "
\n",
+ " \n",
+ " 126 | \n",
+ " -3.434496 | \n",
+ " -2.571210 | \n",
+ " -1.229471 | \n",
+ " 0.063910 | \n",
+ " 0.444734 | \n",
+ " -2.992123 | \n",
+ " 0.070030 | \n",
+ " -1.454459 | \n",
+ " 1.594785 | \n",
+ " 0.135879 | \n",
+ " 2.576930 | \n",
+ " 0.357375 | \n",
+ " -3.042757 | \n",
+ " 0.235390 | \n",
+ " 0.280402 | \n",
+ " -2.540403 | \n",
+ " 1.438169 | \n",
+ " 0.888857 | \n",
+ " -1.284318 | \n",
+ " 0.233549 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " -1.360906 | \n",
+ " -0.212136 | \n",
+ " 2.399920 | \n",
+ " 0.667694 | \n",
+ " 2.154019 | \n",
+ " -2.325576 | \n",
+ " 1.052893 | \n",
+ " 0.141161 | \n",
+ " 3.810893 | \n",
+ " 2.855883 | \n",
+ " 5.371719 | \n",
+ " -5.370557 | \n",
+ " 0.355076 | \n",
+ " -2.543752 | \n",
+ " 1.133172 | \n",
+ " 1.176871 | \n",
+ " 0.925120 | \n",
+ " 1.210851 | \n",
+ " -0.547587 | \n",
+ " 0.559531 | \n",
+ "
\n",
+ " \n",
+ " 176 | \n",
+ " 1.288896 | \n",
+ " -0.647020 | \n",
+ " 3.014068 | \n",
+ " -0.501110 | \n",
+ " 2.388474 | \n",
+ " -5.326921 | \n",
+ " 2.489166 | \n",
+ " -2.980914 | \n",
+ " -1.745957 | \n",
+ " -0.318102 | \n",
+ " -1.713305 | \n",
+ " -0.246686 | \n",
+ " -3.922431 | \n",
+ " 5.570090 | \n",
+ " 0.523616 | \n",
+ " 0.977063 | \n",
+ " 1.120706 | \n",
+ " 1.290673 | \n",
+ " 0.241414 | \n",
+ " 0.768060 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2 3 4 5 6 \\\n",
+ "24 -0.242065 -0.308503 3.760622 -2.578657 -1.335929 -2.963459 -1.376958 \n",
+ "96 -3.049729 -3.784003 1.107009 -0.201179 0.873662 -3.947325 -2.886823 \n",
+ "99 -1.653646 -4.421039 -0.753483 2.040763 -3.970115 -4.770070 5.446214 \n",
+ "126 -3.434496 -2.571210 -1.229471 0.063910 0.444734 -2.992123 0.070030 \n",
+ "136 -1.360906 -0.212136 2.399920 0.667694 2.154019 -2.325576 1.052893 \n",
+ "176 1.288896 -0.647020 3.014068 -0.501110 2.388474 -5.326921 2.489166 \n",
+ "\n",
+ " 7 8 9 10 11 12 13 \\\n",
+ "24 2.600828 6.016473 1.504403 4.683341 -3.540326 -0.026682 -1.535550 \n",
+ "96 -0.819648 5.083153 0.850560 4.091439 0.033962 -2.147115 -2.442134 \n",
+ "99 2.601620 1.523824 2.914646 1.196405 -0.825719 1.397109 0.885938 \n",
+ "126 -1.454459 1.594785 0.135879 2.576930 0.357375 -3.042757 0.235390 \n",
+ "136 0.141161 3.810893 2.855883 5.371719 -5.370557 0.355076 -2.543752 \n",
+ "176 -2.980914 -1.745957 -0.318102 -1.713305 -0.246686 -3.922431 5.570090 \n",
+ "\n",
+ " 14 15 16 17 18 19 \n",
+ "24 1.804470 0.012693 -0.399791 -0.187518 0.904504 -1.069521 \n",
+ "96 -0.254247 0.827896 -3.532146 0.291766 -0.181126 0.280283 \n",
+ "99 0.508796 2.075217 0.276888 0.762572 0.064900 -1.881491 \n",
+ "126 0.280402 -2.540403 1.438169 0.888857 -1.284318 0.233549 \n",
+ "136 1.133172 1.176871 0.925120 1.210851 -0.547587 0.559531 \n",
+ "176 0.523616 0.977063 1.120706 1.290673 0.241414 0.768060 "
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# the function get_confusion_class_df takes in input a \"confusion class\" {'TN', 'FP', 'FN', 'TP'},\n",
+ "# a feature dataset (X), the true labels (y), the predicted probabilites and a threshold \n",
+ "# and returns the portion of the feature dataset corresponding to the given class\n",
+ "\n",
+ "# for example, if we want the True Positive data points with a 0.7 threshold:\n",
+ "confusion_category = 'TP'\n",
+ "\n",
+ "bc.get_confusion_category_observations_df(\n",
+ " confusion_category = confusion_category, \n",
+ " X_data = X_test, \n",
+ " true_y = y_test, \n",
+ " predicted_proba = test_predicted_proba, \n",
+ " threshold = 0.7 # default = 0.5\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "68a5ff99-b28f-4ed2-9f6c-05009431d739",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernel_info": {
+ "name": "python3-azureml"
+ },
+ "kernelspec": {
+ "display_name": "Python 3.8 - AzureML",
+ "language": "python",
+ "name": "python38-azureml"
+ },
+ "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.5"
+ },
+ "nteract": {
+ "version": "nteract-front-end@1.0.0"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..fa7093a
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools>=42"]
+build-backend = "setuptools.build_meta"
\ No newline at end of file
diff --git a/resources/images/01-interactive-confusion-matrix-train.png b/resources/images/01-interactive-confusion-matrix-train.png
new file mode 100644
index 0000000..8241de8
Binary files /dev/null and b/resources/images/01-interactive-confusion-matrix-train.png differ
diff --git a/resources/images/02-interactive-confusion-matrix-testing.png b/resources/images/02-interactive-confusion-matrix-testing.png
new file mode 100644
index 0000000..131616d
Binary files /dev/null and b/resources/images/02-interactive-confusion-matrix-testing.png differ
diff --git a/resources/images/03-interactive-confusion-line-chart.png b/resources/images/03-interactive-confusion-line-chart.png
new file mode 100644
index 0000000..4af2c7d
Binary files /dev/null and b/resources/images/03-interactive-confusion-line-chart.png differ
diff --git a/resources/images/04-interactive-amount-cost-line-chart.png b/resources/images/04-interactive-amount-cost-line-chart.png
new file mode 100644
index 0000000..c2c0121
Binary files /dev/null and b/resources/images/04-interactive-amount-cost-line-chart.png differ
diff --git a/resources/images/logo.png b/resources/images/logo.png
new file mode 100644
index 0000000..630170a
Binary files /dev/null and b/resources/images/logo.png differ
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..1f3e32b
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,8 @@
+[metadata]
+description-file = README.rst
+license_files = LICENSE.txt
+
+[egg_info]
+tag_build =
+tag_date = 0
+
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..af6ef13
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,53 @@
+# Always prefer setuptools over distutils
+from setuptools import setup, find_packages
+import pathlib
+
+here = pathlib.Path(__file__).parent.resolve()
+
+# Get the long description from the README file
+long_description = (here / "README.md").read_text(encoding="utf-8")
+
+setup(
+ name="binclass-tools", #
+
+ version="0.1.7", # Required
+ description="A set of tools that facilitates the analysis of binary classification problems", # Optional
+
+ long_description=long_description, # Optional
+ long_description_content_type="text/markdown", # Optional
+
+ url="https://github.com/lucazav/binclass-tools/", # Optional
+
+ author="Luca Zavarella, Greta Villa", # Optional
+
+ author_email="lucazavarella@outlook.com", # Optional
+
+ # For a list of valid classifiers, see https://pypi.org/classifiers/
+ classifiers=[
+ "Development Status :: 3 - Alpha",
+ "Intended Audience :: Other Audience",
+ "License :: OSI Approved :: BSD License",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ ],
+
+ keywords="binary, classification, confusion, matrix, threshold, plot, precision, recall",
+
+ packages=["bctools"],
+
+ python_requires=">=3.6",
+
+ install_requires=["numpy",
+ "pandas",
+ "scikit-learn>=0.22.1",
+ "matplotlib",
+ "plotly"
+ ],
+
+
+ project_urls={
+ "Source": "https://github.com/lucazav/binclass-tools/",
+ },
+)
\ No newline at end of file