From 48c7863f6e0615032ba37524c0ef35ab642364a1 Mon Sep 17 00:00:00 2001 From: Hakima Laribi <57839546+LaribiHakima@users.noreply.github.com> Date: Wed, 22 Mar 2023 09:08:42 -0400 Subject: [PATCH 01/37] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 799a9cb..ff1fc18 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The dataset used to replicate this study is publicly available in [physionet](ht - Download the dataset and move the file ``cxr_ic_fusion_1103.csv`` to [csvs](csvs). - Install the requirements under **Python 3.9.13** as following: ``` -$ pip install requirements.txt +$ pip install -r requirements.txt ``` The package can be used with different sources combinations to predict one of the 12 predictive tasks defined above. Here is a code snippet which uses one combination of sources to predict patient's length-of-stay: From c81ffea72e12496ad873b2290eadc815c1d2a522 Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Wed, 21 Aug 2024 10:08:43 -0400 Subject: [PATCH 02/37] Implementation of the evaluator class with PyCaret --- src/evaluation/pycaret_evaluator.py | 220 ++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 src/evaluation/pycaret_evaluator.py diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py new file mode 100644 index 0000000..004c088 --- /dev/null +++ b/src/evaluation/pycaret_evaluator.py @@ -0,0 +1,220 @@ +import os +import json +from time import strftime +from typing import Dict, List, Optional, Union, Any +from sklearn.model_selection import StratifiedKFold, KFold, ShuffleSplit +from pycaret.classification import ( + create_model, setup, compare_models, pull, save_model, predict_model, tune_model, plot_model +) +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +from src.data.dataset import HAIMDataset +from src.utils.metric_scores import ( + BrierScore, BinaryBalancedAccuracy, BinaryCrossEntropy, + BalancedAccuracyEntropyRatio, Sensitivity, Specificity, + NegativePredictiveValue, F2Score, NTP, NFP, NFN, NTN +) + +class PyCaretEvaluator: + """ + Class to evaluate models using PyCaret. + """ + + def __init__(self, dataset: HAIMDataset, target: str, experiment_name: Optional[str], filepath: str, columns: Optional[List[str]] = None): + """ + Initialise the class parameters. + + Args: + dataset (HAIMDataset): the used dataset for machine learning. + target (str): the target class. + experiment_name (Optional[str]): optional name for the experiment. + filepath (str): path for saving results. + columns (Optional[List[str]]): optional list of column names. + """ + self.dataset = dataset + self.target = target + self.experiment_name = experiment_name if experiment_name else f"experiment_{strftime('%Y%m%d-%H%M%S')}" + self.filepath = filepath + self.columns = columns + + if not os.path.exists(self.filepath): + os.makedirs(self.filepath) + + # Define the fixed params + self.fixed_params = { + 'seed': 42, + 'eval_metric': 'logloss', + 'verbosity': 0 + } + + def save_results(self, results: List[Dict], filename: str) -> None: + """ + Save the results in a JSON file. + + Args: + results (List[Dict]): results to save. + filename (str): file name where the results are saved. + """ + with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: + json.dump(results, f, indent=4) + + def plot_roc_curves(self, model, fold: int) -> None: + """ + Plots the ROC curve for the given model using PyCaret. + + Args: + model: The trained model. + fold (int): The current fold number. + """ + plot_model(model, plot='auc') + plt.savefig(os.path.join(self.filepath, f'roc_curve_fold_{fold}.png')) + plt.close() + + def random_sampling_outer_cv(self, X, y, n_splits=3, test_size=0.2, random_state=42): + """ + Uses ShuffleSplit to create random folds for external validation. + """ + random_split = ShuffleSplit(n_splits=n_splits, test_size=test_size, random_state=random_state) + splits = [(train_index.tolist(), test_index.tolist()) for train_index, test_index in random_split.split(X)] + return splits + + def run_experiment(self, + train_size: float = 0.8, + fold: int = 5, + fold_strategy: str = 'kfold', + outer_fold: int = 5, + outer_strategy: str = 'stratifiedkfold', + session_id: int = 54288, + model: Optional[str] = None, + optimize: Union[str, List[str]] = 'Accuracy', + custom_grid: Optional[Dict[str, List[Any]]] = None) -> None: + """ + Executes the complete experiment including external cross-validation, training, and model optimization. + + Args: + train_size (float): Proportion of the dataset to include in the training split. + fold (int): Number of folds for internal cross-validation. + fold_strategy (str): Strategy for internal cross-validation ('kfold', 'stratifiedkfold'). + outer_fold (int): Number of folds for external cross-validation. + outer_strategy (str): Strategy for external cross-validation ('kfold', 'stratifiedkfold', 'random_sampling'). + session_id (int): Session ID for reproducibility. + model (Optional[str]): Specific model to use. If None, all models will be compared. + optimize (Union[str, List[str]]): The metric to optimize. + custom_grid (Optional[Dict[str, List[Any]]]): Custom grid of parameters for tuning. + """ + # Define the outer cross-validation strategy + if outer_strategy == 'stratifiedkfold': + outer_cv = StratifiedKFold(n_splits=outer_fold, shuffle=True, random_state=session_id) + elif outer_strategy == 'kfold': + outer_cv = KFold(n_splits=outer_fold, shuffle=True, random_state=session_id) + elif outer_strategy == 'random_sampling': + outer_cv = self.random_sampling_outer_cv(self.dataset.x, self.dataset.y, n_splits=outer_fold, random_state=session_id) + else: + raise ValueError(f"Unknown outer_strategy: {outer_strategy}") + + results = [] + + # External cross-validation loop + if isinstance(outer_cv, list): + # If outer_cv is a list, iterate directly over it + outer_cv_splits = outer_cv + else: + # Otherwise, generate splits using the split method + outer_cv_splits = outer_cv.split(self.dataset.x, self.dataset.y) + + for i, (train_index, test_index) in enumerate(outer_cv_splits): + print(f"Outer fold {i + 1}/{outer_fold}") + + # Extract the subsets + train_data_x = self.dataset.x[train_index] + train_data_y = self.dataset.y[train_index] + test_data_x = self.dataset.x[test_index] + test_data_y = self.dataset.y[test_index] + + # Create DataFrames using specified columns + train_df = pd.DataFrame(train_data_x, columns=self.columns) + train_df[self.target] = train_data_y + + test_df = pd.DataFrame(test_data_x, columns=self.columns) + test_df[self.target] = test_data_y + + # Configure PyCaret for the current fold with fixed parameters + exp = setup(data=train_df, + target=self.target, + train_size=train_size, + fold=fold, + fold_strategy=fold_strategy, + session_id=self.fixed_params['seed'], # Using the seed for reproducibility + verbose=self.fixed_params['verbosity']) # Control the verbosity level + + print(f"Configuring PyCaret for outer fold {i + 1}") + + # Comparing models or using a specific model + if model: + print(f"Creating model {model} for outer fold {i + 1}") + best_model = create_model(model, fold=fold) + if custom_grid: + print(f"Tuning hyperparameters for model {model} with custom grid") + best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) + else: + if isinstance(optimize, list): + print(f"Comparing models with multiple optimizations for outer fold {i + 1}") + best_model = compare_models(include=model, sort=optimize[0], fold=fold) + for metric in optimize[1:]: + best_model = tune_model(best_model, optimize=metric, fold=fold) + else: + print(f"Comparing models optimizing {optimize} for outer fold {i + 1}") + best_model = compare_models(sort=optimize, fold=fold) + if custom_grid: + best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) + + # Obtain results and predictions + model_results = pull() + save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{i}")) + test_predictions = predict_model(best_model, data=test_df) + + # Plot ROC curves using PyCaret + self.plot_roc_curves(best_model, i) + + # Save results + split_result = { + 'fold': i, + 'train_results': model_results.to_dict(), + 'test_predictions': test_predictions.to_dict() + } + results.append(split_result) + + # Save results in a JSON file + self.save_results(results, f"{self.experiment_name}_results.json") + + # Collect and compute final metrics after training + fold_metrics_list = [] + + for result in results: + train_results = result.get('train_results', {}) + if isinstance(train_results, dict): + # Convert the results for each fold into a DataFrame + metrics_df = pd.DataFrame(train_results, index=[0]) + fold_metrics_list.append(metrics_df) + + if fold_metrics_list: + # Combine the DataFrames from all folds + all_fold_metrics = pd.concat(fold_metrics_list, ignore_index=True) + + # Calculate the mean and standard deviation for each metric across all folds + final_metrics_mean = all_fold_metrics.mean() + final_metrics_std = all_fold_metrics.std() + + # Create a summary table of the final metrics + metrics_table = pd.DataFrame({ + 'Metric': final_metrics_mean.index, + 'Mean': final_metrics_mean.values, + 'Std Dev': final_metrics_std.values + }) + + print("Final metrics table:") + print(metrics_table) + + # Save the final metrics table to a CSV file + metrics_table.to_csv(os.path.join(self.filepath, f"{self.experiment_name}_final_metrics.csv"), index=False) From 1e69e3f233733cf15083b0e41c36b493496581ab Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Wed, 21 Aug 2024 11:39:56 -0400 Subject: [PATCH 03/37] Adjusting each task notebook's code --- notebooks/48h-mortality.ipynb | 114 ++-------- notebooks/atelectasis.ipynb | 113 ++-------- notebooks/cardiomegaly.ipynb | 113 ++-------- notebooks/consolidation.ipynb | 113 ++-------- notebooks/edema.ipynb | 113 ++-------- notebooks/enlarged-cardiomediastinum.ipynb | 113 ++-------- notebooks/fracture.ipynb | 113 ++-------- notebooks/length-of-stay.ipynb | 115 ++-------- notebooks/lung-lesion.ipynb | 113 ++-------- notebooks/lung-opacity.ipynb | 248 ++------------------- notebooks/pneumonia.ipynb | 248 ++------------------- notebooks/pneumothorax.ipynb | 248 ++------------------- 12 files changed, 217 insertions(+), 1547 deletions(-) diff --git a/notebooks/48h-mortality.ipynb b/notebooks/48h-mortality.ipynb index d92896b..e8c1025 100644 --- a/notebooks/48h-mortality.ipynb +++ b/notebooks/48h-mortality.ipynb @@ -49,14 +49,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -110,81 +107,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "0d9f8354", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "2fe30725", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6abdd3c8", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "f935bbb8", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3ceec6b8", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "114f173f", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -198,13 +126,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -249,21 +171,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name=''\n", - " evaluation_name='48h mortality'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Mortality\", experiment_name=\"CP_Mortality\", filepath=\"./results/mortality\")\n", + "\n", + "# Model training\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/atelectasis.ipynb b/notebooks/atelectasis.ipynb index a94bc92..7dd0682 100644 --- a/notebooks/atelectasis.ipynb +++ b/notebooks/atelectasis.ipynb @@ -56,14 +56,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -117,81 +114,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "cae73927", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "3a01b40e", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "ab601313", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "5a9141d4", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "0e83e476", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "8a507d0a", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -205,13 +133,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -256,20 +178,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Atelectasis'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Atelectasis\", experiment_name=\"CP_Atelectasis\", filepath=\"./results/atelectasis\")\n", + "\n", + "# Model training\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/cardiomegaly.ipynb b/notebooks/cardiomegaly.ipynb index 5b85801..c653c52 100644 --- a/notebooks/cardiomegaly.ipynb +++ b/notebooks/cardiomegaly.ipynb @@ -57,14 +57,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -118,81 +115,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "16aaaba3", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "b45111d8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "06e48fbf", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "6a883696", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c7928244", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "ad7c9d6d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -206,13 +134,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -257,20 +179,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Cardiomegaly'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Cardiomegaly\", experiment_name=\"CP_Cardiomegaly\", filepath=\"./results/cardiomegaly\")\n", + "\n", + "# Model training\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/consolidation.ipynb b/notebooks/consolidation.ipynb index 2b596ce..b030b90 100644 --- a/notebooks/consolidation.ipynb +++ b/notebooks/consolidation.ipynb @@ -56,14 +56,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -117,81 +114,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "16aaaba3", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "b45111d8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "06e48fbf", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "6a883696", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c7928244", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "ad7c9d6d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -205,13 +133,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -256,20 +178,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Consolidation'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Consolidation\", experiment_name=\"CP_Consolidation\", filepath=\"./results/consolidation\")\n", + "\n", + "# Model training\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/edema.ipynb b/notebooks/edema.ipynb index 0c73d0f..141eb4a 100644 --- a/notebooks/edema.ipynb +++ b/notebooks/edema.ipynb @@ -56,14 +56,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -117,81 +114,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "4491a25a", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "c64760c8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6c37ae3b", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "4992944e", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d45b9072", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "e280f91d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -205,13 +133,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -256,20 +178,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Edema'\n", - " )\n", - "evaluation.evaluate()" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Edema\", experiment_name=\"CP_Edema\", filepath=\"./results/edema\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/enlarged-cardiomediastinum.ipynb b/notebooks/enlarged-cardiomediastinum.ipynb index 1a08ac0..ce4117a 100644 --- a/notebooks/enlarged-cardiomediastinum.ipynb +++ b/notebooks/enlarged-cardiomediastinum.ipynb @@ -57,14 +57,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -118,81 +115,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "4491a25a", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "c64760c8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6c37ae3b", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "4992944e", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d45b9072", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "e280f91d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -206,13 +134,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -257,20 +179,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Enlarged Cardiomediastinum'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"EnlargedCardiomediastinum\", experiment_name=\"CP_EnlargedCardiomediastinum\", filepath=\"./results/enlargedcardiomediastinum\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index 182dace..ca82564 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -55,14 +55,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -116,81 +113,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "4491a25a", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "c64760c8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6c37ae3b", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "4992944e", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d45b9072", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "e280f91d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -204,13 +132,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -255,20 +177,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Fracture'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Fracture\", experiment_name=\"CP_Fracture\", filepath=\"./results/fracture\")\n", + "\n", + "# Model training\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/length-of-stay.ipynb b/notebooks/length-of-stay.ipynb index 282aca8..f79e8bc 100644 --- a/notebooks/length-of-stay.ipynb +++ b/notebooks/length-of-stay.ipynb @@ -46,14 +46,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -73,7 +70,7 @@ "metadata": {}, "outputs": [], "source": [ - "df = read_csv(FILE_DF, nrows=df = read_csv(constants.FILE_DF, nrows=constants.N_DATA))\n" + "df = read_csv(constants.FILE_DF, nrows=constants.N_DATA)\n" ] }, { @@ -107,81 +104,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "0d9f8354", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "2fe30725", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6abdd3c8", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "f935bbb8", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3ceec6b8", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "114f173f", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -195,13 +123,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -246,20 +168,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='48h los'\n", - " )\n", - "evaluation.evaluate()" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"LengthOfStay\", experiment_name=\"CP_LengthOfStay\", filepath=\"./results/lengthofstay\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/lung-lesion.ipynb b/notebooks/lung-lesion.ipynb index 857c12a..cc07e77 100644 --- a/notebooks/lung-lesion.ipynb +++ b/notebooks/lung-lesion.ipynb @@ -56,14 +56,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -117,81 +114,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "4491a25a", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "c64760c8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6c37ae3b", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "4992944e", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d45b9072", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "e280f91d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -205,13 +133,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -256,20 +178,21 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Lung Lesion'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"LungLesion\", experiment_name=\"CP_LungLesion\", filepath=\"./results/lunglesion\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] }, { diff --git a/notebooks/lung-opacity.ipynb b/notebooks/lung-opacity.ipynb index 9a66c14..f48836d 100644 --- a/notebooks/lung-opacity.ipynb +++ b/notebooks/lung-opacity.ipynb @@ -57,14 +57,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -118,81 +115,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "4491a25a", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "c64760c8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6c37ae3b", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "4992944e", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d45b9072", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "e280f91d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -206,13 +134,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -257,156 +179,22 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Lung Opacity'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"LungOpacity\", experiment_name=\"CP_LungOpacity\", filepath=\"./results/lungopacity\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0008 +- 0.00070.0139 +- 0.0071
test_metrics0.9735 +- 0.00220.6665 +- 0.03190.5759 +- 0.05730.9968 +- 0.00270.3362 +- 0.06590.7971 +- 0.01520.0246 +- 0.00180.1173 +- 0.0055
HAIM----------0.816----
NON_HAIM----------0.813----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9735 +- 0.0022 0.6665 +- 0.0319 0.5759 +- 0.0573 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9968 +- 0.0027 0.3362 +- 0.0659 0.7971 +- 0.0152 \n", - "HAIM -- -- 0.816 \n", - "NON_HAIM -- -- 0.813 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0008 +- 0.0007 0.0139 +- 0.0071 \n", - "test_metrics 0.0246 +- 0.0018 0.1173 +- 0.0055 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Lung Opacity', constants.LUNG_OPACITY)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/pneumonia.ipynb b/notebooks/pneumonia.ipynb index 907ed91..987fe52 100644 --- a/notebooks/pneumonia.ipynb +++ b/notebooks/pneumonia.ipynb @@ -55,14 +55,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -116,81 +113,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "4491a25a", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "c64760c8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6c37ae3b", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "4992944e", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d45b9072", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "e280f91d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -204,13 +132,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -255,156 +177,22 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Pneumonia'\n", - " )\n", - "evaluation.evaluate()" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Pneumonia\", experiment_name=\"CP_Pneumonia\", filepath=\"./results\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0016 +- 0.00190.0288 +- 0.0191
test_metrics0.7282 +- 0.02930.7398 +- 0.02440.7095 +- 0.04030.5433 +- 0.08850.9362 +- 0.04210.8714 +- 0.01260.1528 +- 0.01020.4679 +- 0.0308
HAIM----------0.883----
NON_HAIM----------0.876----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.7282 +- 0.0293 0.7398 +- 0.0244 0.7095 +- 0.0403 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.5433 +- 0.0885 0.9362 +- 0.0421 0.8714 +- 0.0126 \n", - "HAIM -- -- 0.883 \n", - "NON_HAIM -- -- 0.876 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0016 +- 0.0019 0.0288 +- 0.0191 \n", - "test_metrics 0.1528 +- 0.0102 0.4679 +- 0.0308 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Pneumonia', constants.PNEUMONIA)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/pneumothorax.ipynb b/notebooks/pneumothorax.ipynb index dbd6df3..9fa5231 100644 --- a/notebooks/pneumothorax.ipynb +++ b/notebooks/pneumothorax.ipynb @@ -55,14 +55,11 @@ "import os\n", "os.chdir('../')\n", "\n", - "from xgboost import XGBClassifier\n", "from pandas import read_csv\n", "\n", "from src.data import constants\n", "from src.data.dataset import HAIMDataset\n", - "from src.data.sampling import Sampler\n", - "from src.evaluation.evaluating import Evaluator\n", - "from src.evaluation.tuning import SklearnTuner\n", + "from src.evaluation.pycaret_evaluator import PyCaretEvaluator\n", "from src.utils.metric_scores import *" ] }, @@ -116,81 +113,12 @@ " constants.GLOBAL_ID)" ] }, - { - "cell_type": "markdown", - "id": "4491a25a", - "metadata": {}, - "source": [ - "#### Create the sampler\n" - ] - }, - { - "cell_type": "markdown", - "id": "c64760c8", - "metadata": {}, - "source": [ - "Sample the data using a 5 folds cross-validation method based on unique ``haim_id`` " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d8cc844e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████| 5/5 [00:00<00:00, 2788.77it/s]\n" - ] - } - ], - "source": [ - "sampler = Sampler(dataset, constants.GLOBAL_ID, 5)\n", - "_, masks = sampler()" - ] - }, - { - "cell_type": "markdown", - "id": "6c37ae3b", - "metadata": {}, - "source": [ - "#### Select the evaluation metrics" - ] - }, - { - "cell_type": "markdown", - "id": "4992944e", - "metadata": {}, - "source": [ - "Initilialize a list containing the evaluation metrics to report" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d45b9072", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialization of the list containing the evaluation metrics\n", - "evaluation_metrics = [BinaryAccuracy(), \n", - " BinaryBalancedAccuracy(),\n", - " BinaryBalancedAccuracy(Reduction.GEO_MEAN),\n", - " Sensitivity(), \n", - " Specificity(), \n", - " AUC(), \n", - " BrierScore(),\n", - " BinaryCrossEntropy()]" - ] - }, { "cell_type": "markdown", "id": "e280f91d", "metadata": {}, "source": [ - "#### Set hyper-parameters and fixed parameters" + "#### Set hyper-parameters" ] }, { @@ -204,13 +132,7 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }\n", - "\n", - "# Save the fixed parameters of the model\n", - "fixed_params = {'seed': 42,\n", - " 'eval_metric': 'logloss',\n", - " 'verbosity': 0\n", - " }" + " }" ] }, { @@ -255,156 +177,22 @@ "metadata": {}, "outputs": [], "source": [ - "evaluation = Evaluator(dataset=dataset,\n", - " masks=masks,\n", - " metrics=evaluation_metrics,\n", - " model=XGBClassifier,\n", - " tuner=SklearnTuner,\n", - " tuning_metric=AUC(),\n", - " hps=grid_hps,\n", - " n_tuning_splits=5,\n", - " fixed_params=fixed_params,\n", - " filepath=constants.EXPERIMENT_PATH,\n", - " weight='scale_pos_weight',\n", - " evaluation_name='CP_Pneumothorax'\n", - " )\n", - "evaluation.evaluate()\n" + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Pneumothorax\", experiment_name=\"CP_Pneumothorax\", filepath=\"./results/pneumothorax\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='Accuracy',\n", + " custom_grid=grid_hps\n", + ")\n" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0002 +- 0.00020.0081 +- 0.0047
test_metrics0.8754 +- 0.01650.6423 +- 0.0350.5295 +- 0.06420.2845 +- 0.06991.0 +- 0.00.8114 +- 0.02080.1066 +- 0.01280.4283 +- 0.0531
HAIM----------0.836----
NON_HAIM----------0.804----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.8754 +- 0.0165 0.6423 +- 0.035 0.5295 +- 0.0642 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.2845 +- 0.0699 1.0 +- 0.0 0.8114 +- 0.0208 \n", - "HAIM -- -- 0.836 \n", - "NON_HAIM -- -- 0.804 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0002 +- 0.0002 0.0081 +- 0.0047 \n", - "test_metrics 0.1066 +- 0.0128 0.4283 +- 0.0531 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Pneumothorax', constants.PNEUMOTHORAX)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From ac43db31e498d7a996ad91f8c8f0334508769c14 Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Wed, 21 Aug 2024 11:40:58 -0400 Subject: [PATCH 04/37] Adjusting the requirements file --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d3a24e3..0fddd5d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,5 @@ numpy~=1.23.4 scikit-learn~=1.0.2 matplotlib~=3.5.2 xgboost~=1.7.1 -tqdm~=4.64.1 \ No newline at end of file +tqdm~=4.64.1 +pycaret~=3.3.1 \ No newline at end of file From d003f138ac647425934e778fedb78938c4531f6d Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Wed, 21 Aug 2024 14:10:15 -0400 Subject: [PATCH 05/37] Deleting the ROC curve plotting functions --- src/evaluation/pycaret_evaluator.py | 32 +++-------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index 004c088..eaa2008 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -2,7 +2,7 @@ import json from time import strftime from typing import Dict, List, Optional, Union, Any -from sklearn.model_selection import StratifiedKFold, KFold, ShuffleSplit +from sklearn.model_selection import StratifiedKFold, KFold from pycaret.classification import ( create_model, setup, compare_models, pull, save_model, predict_model, tune_model, plot_model ) @@ -10,11 +10,7 @@ import numpy as np import pandas as pd from src.data.dataset import HAIMDataset -from src.utils.metric_scores import ( - BrierScore, BinaryBalancedAccuracy, BinaryCrossEntropy, - BalancedAccuracyEntropyRatio, Sensitivity, Specificity, - NegativePredictiveValue, F2Score, NTP, NFP, NFN, NTN -) + class PyCaretEvaluator: """ @@ -58,27 +54,7 @@ def save_results(self, results: List[Dict], filename: str) -> None: """ with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) - - def plot_roc_curves(self, model, fold: int) -> None: - """ - Plots the ROC curve for the given model using PyCaret. - - Args: - model: The trained model. - fold (int): The current fold number. - """ - plot_model(model, plot='auc') - plt.savefig(os.path.join(self.filepath, f'roc_curve_fold_{fold}.png')) - plt.close() - - def random_sampling_outer_cv(self, X, y, n_splits=3, test_size=0.2, random_state=42): - """ - Uses ShuffleSplit to create random folds for external validation. - """ - random_split = ShuffleSplit(n_splits=n_splits, test_size=test_size, random_state=random_state) - splits = [(train_index.tolist(), test_index.tolist()) for train_index, test_index in random_split.split(X)] - return splits - + def run_experiment(self, train_size: float = 0.8, fold: int = 5, @@ -174,8 +150,6 @@ def run_experiment(self, save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{i}")) test_predictions = predict_model(best_model, data=test_df) - # Plot ROC curves using PyCaret - self.plot_roc_curves(best_model, i) # Save results split_result = { From 1e6eaded67cc14163d2b2518ac0955e181f5b1be Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Mon, 26 Aug 2024 13:16:56 -0400 Subject: [PATCH 06/37] Adjusting the parameters --- .gitignore | 4 +- notebooks/48h-mortality.ipynb | 139 +- notebooks/atelectasis.ipynb | 139 +- notebooks/cardiomegaly.ipynb | 137 +- notebooks/consolidation.ipynb | 153 +- notebooks/edema.ipynb | 2 +- notebooks/enlarged-cardiomediastinum.ipynb | 155 +- notebooks/fracture.ipynb | 1922 ++++++++++++++++++-- notebooks/length-of-stay.ipynb | 2 +- notebooks/lung-lesion.ipynb | 1921 +++++++++++++++++-- notebooks/lung-opacity.ipynb | 314 +++- notebooks/pneumonia.ipynb | 16 +- notebooks/pneumothorax.ipynb | 6 +- 13 files changed, 3895 insertions(+), 1015 deletions(-) diff --git a/.gitignore b/.gitignore index cb0a5b4..b1e2b94 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ Fracture_* !.gitignore !.gitkeep !*best_experiment* -*.csv \ No newline at end of file +*.csv +logs.log +results \ No newline at end of file diff --git a/notebooks/48h-mortality.ipynb b/notebooks/48h-mortality.ipynb index e8c1025..1f26653 100644 --- a/notebooks/48h-mortality.ipynb +++ b/notebooks/48h-mortality.ipynb @@ -166,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "726c2332", "metadata": {}, "outputs": [], @@ -183,145 +183,10 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0 +- 0.00.0005 +- 0.0004
test_metrics0.9737 +- 0.0020.5182 +- 0.00370.1896 +- 0.01960.0363 +- 0.00741.0 +- 0.00.9066 +- 0.00720.0195 +- 0.00110.1098 +- 0.0052
HAIM----------0.912----
NON_HAIM----------0.889----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9737 +- 0.002 0.5182 +- 0.0037 0.1896 +- 0.0196 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.0363 +- 0.0074 1.0 +- 0.0 0.9066 +- 0.0072 \n", - "HAIM -- -- 0.912 \n", - "NON_HAIM -- -- 0.889 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0 +- 0.0 0.0005 +- 0.0004 \n", - "test_metrics 0.0195 +- 0.0011 0.1098 +- 0.0052 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/48h mortality', constants.MORTALITY)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "726f3c65", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/atelectasis.ipynb b/notebooks/atelectasis.ipynb index 7dd0682..f310da4 100644 --- a/notebooks/atelectasis.ipynb +++ b/notebooks/atelectasis.ipynb @@ -173,7 +173,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "726c2332", "metadata": {}, "outputs": [], @@ -190,145 +190,10 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0005 +- 0.00020.0097 +- 0.0032
test_metrics0.9797 +- 0.00440.6456 +- 0.01620.5407 +- 0.02930.9973 +- 0.00130.294 +- 0.03220.7654 +- 0.01320.0186 +- 0.00460.0974 +- 0.0243
HAIM----------0.779----
NON_HAIM----------0.767----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9797 +- 0.0044 0.6456 +- 0.0162 0.5407 +- 0.0293 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9973 +- 0.0013 0.294 +- 0.0322 0.7654 +- 0.0132 \n", - "HAIM -- -- 0.779 \n", - "NON_HAIM -- -- 0.767 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0005 +- 0.0002 0.0097 +- 0.0032 \n", - "test_metrics 0.0186 +- 0.0046 0.0974 +- 0.0243 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Atelectasis', constants.ATELECTASIS)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/cardiomegaly.ipynb b/notebooks/cardiomegaly.ipynb index c653c52..07025a2 100644 --- a/notebooks/cardiomegaly.ipynb +++ b/notebooks/cardiomegaly.ipynb @@ -191,145 +191,10 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0003 +- 0.00.0089 +- 0.001
test_metrics0.8826 +- 0.00710.814 +- 0.00860.8079 +- 0.00980.9125 +- 0.00910.7155 +- 0.01970.908 +- 0.00380.0736 +- 0.00420.2708 +- 0.0133
HAIM----------0.914----
NON_HAIM----------0.912----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.8826 +- 0.0071 0.814 +- 0.0086 0.8079 +- 0.0098 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9125 +- 0.0091 0.7155 +- 0.0197 0.908 +- 0.0038 \n", - "HAIM -- -- 0.914 \n", - "NON_HAIM -- -- 0.912 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0003 +- 0.0 0.0089 +- 0.001 \n", - "test_metrics 0.0736 +- 0.0042 0.2708 +- 0.0133 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Cardiomegaly', constants.CARDIOMEGALY)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/consolidation.ipynb b/notebooks/consolidation.ipynb index b030b90..aa04621 100644 --- a/notebooks/consolidation.ipynb +++ b/notebooks/consolidation.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "9ba42585", "metadata": {}, "outputs": [], @@ -173,7 +173,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "726c2332", "metadata": {}, "outputs": [], @@ -190,152 +190,17 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0009 +- 0.00130.0151 +- 0.0135
test_metrics0.8712 +- 0.02330.8451 +- 0.01930.8437 +- 0.01970.8856 +- 0.02980.8046 +- 0.03830.9181 +- 0.01830.0794 +- 0.01560.2927 +- 0.0787
HAIM----------0.929----
NON_HAIM----------0.92----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.8712 +- 0.0233 0.8451 +- 0.0193 0.8437 +- 0.0197 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.8856 +- 0.0298 0.8046 +- 0.0383 0.9181 +- 0.0183 \n", - "HAIM -- -- 0.929 \n", - "NON_HAIM -- -- 0.92 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0009 +- 0.0013 0.0151 +- 0.0135 \n", - "test_metrics 0.0794 +- 0.0156 0.2927 +- 0.0787 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Consolidation', constants.CONSOLIDATION)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python 3", "language": "python", - "name": "haim" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -347,7 +212,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/notebooks/edema.ipynb b/notebooks/edema.ipynb index 141eb4a..3150366 100644 --- a/notebooks/edema.ipynb +++ b/notebooks/edema.ipynb @@ -190,7 +190,7 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] diff --git a/notebooks/enlarged-cardiomediastinum.ipynb b/notebooks/enlarged-cardiomediastinum.ipynb index ce4117a..8174f64 100644 --- a/notebooks/enlarged-cardiomediastinum.ipynb +++ b/notebooks/enlarged-cardiomediastinum.ipynb @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -76,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -102,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -110,7 +110,7 @@ "dataset = HAIMDataset(df, \n", " constants.CHEST_PREDICTORS, \n", " constants.ALL_MODALITIES, \n", - " constants.ENLARGED_CARDIOMEDIASTINUM \n", + " constants.ENLARGED_CARDIOMEDIASTINUM,\n", " constants.IMG_ID, \n", " constants.GLOBAL_ID)" ] @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -174,7 +174,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "726c2332", "metadata": {}, "outputs": [], @@ -191,152 +191,17 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0005 +- 0.00050.0145 +- 0.0081
test_metrics0.788 +- 0.03060.799 +- 0.03140.7981 +- 0.03160.7794 +- 0.03660.8186 +- 0.05430.8768 +- 0.0350.1208 +- 0.02250.4129 +- 0.0921
HAIM----------0.876----
NON_HAIM----------0.868----
\n", - "
" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.788 +- 0.0306 0.799 +- 0.0314 0.7981 +- 0.0316 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.7794 +- 0.0366 0.8186 +- 0.0543 0.8768 +- 0.035 \n", - "HAIM -- -- 0.876 \n", - "NON_HAIM -- -- 0.868 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0005 +- 0.0005 0.0145 +- 0.0081 \n", - "test_metrics 0.1208 +- 0.0225 0.4129 +- 0.0921 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Enlarged Cardiomediastinum', constants.ENLARGED_CARDIOMEDIASTINUM)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python 3", "language": "python", - "name": "haim" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -348,7 +213,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index ca82564..c0c537b 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -74,7 +74,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -100,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -172,169 +172,1797 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 8, "id": "726c2332", "metadata": {}, - "outputs": [], - "source": [ - "# Initialize the PyCaret Evaluator\n", - "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Fracture\", experiment_name=\"CP_Fracture\", filepath=\"./results/fracture\")\n", - "\n", - "# Model training\n", - "evaluator.run_experiment(\n", - " train_size=0.8,\n", - " fold=5,\n", - " fold_strategy='kfold',\n", - " outer_fold=5,\n", - " outer_strategy='kfold',\n", - " session_id=42,\n", - " model='xgboost',\n", - " optimize='Accuracy',\n", - " custom_grid=grid_hps\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 1/5\n", + "Configuring PyCaret for outer fold 1\n", + "Creating model xgboost for outer fold 1\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ - "
\n", - "\n", - "\n", + "
\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0029 +- 0.00060.039 +- 0.0037
test_metrics0.9052 +- 0.04340.6851 +- 0.16050.5897 +- 0.23930.9363 +- 0.03430.4339 +- 0.32280.828 +- 0.11030.0516 +- 0.02140.1901 +- 0.067
HAIM----------0.838----
NON_HAIM----------0.787----00.95830.81251.00000.95770.97840.38640.4893
10.92960.53641.00000.92960.96350.00000.0000
20.92960.74851.00000.92960.96350.00000.0000
30.94370.66971.00000.94290.97060.31730.4342
40.94370.65761.00000.94290.97060.31730.4342
Mean0.94100.68491.00000.94050.96930.20420.2716
Std0.01070.09310.00000.01050.00550.16860.2226
\n", - "
" + "\n" ], "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9052 +- 0.0434 0.6851 +- 0.1605 0.5897 +- 0.2393 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9363 +- 0.0343 0.4339 +- 0.3228 0.828 +- 0.1103 \n", - "HAIM -- -- 0.838 \n", - "NON_HAIM -- -- 0.787 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0029 +- 0.0006 0.039 +- 0.0037 \n", - "test_metrics 0.0516 +- 0.0214 0.1901 +- 0.067 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Fracture', constants.FRACTURE)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.81251.00000.95770.97840.38640.4893
10.92960.53641.00000.92960.96350.00000.0000
20.92960.74851.00000.92960.96350.00000.0000
30.94370.66971.00000.94290.97060.31730.4342
40.94370.65761.00000.94290.97060.31730.4342
Mean0.94100.68491.00000.94050.96930.20420.2716
Std0.01070.09310.00000.01050.00550.16860.2226
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.98210.96541.00000.98150.99070.79100.8089
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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m5sbPv74Y9SoUSM/L9fEmjVrMGXKFMycORNvvPEGrK2tsX//fpN9fvnlF1StWhXVqlVDRkYGBg0ahKNHj+L999/HmjVr4OnpiWHDhonFbnh4OEaNGoUaNWrg888/x/z58xEaGorhw4fDaDTmyODu7o5du3bBzc0Nr7/+Onbt2oXq1avj77//Rt++fQEACxYswLx58xAZGYk+ffrkKJqffR1169Z97uv18PDArFmzcPXqVfTp0wdXrlzB8uXLcxSjR48eRePGjfMcQrF48WK0b9/epO3Z7yWdToeIiAjMnz8frq6uePPNN8V9Tp48iVdffRVarTbXc7dv3x6jR4+GtbV1jseioqLw9ttvIy0tDYsWLcKmTZvQoUMH7NixA9u3bwfw4mtgNBrx3nvvIS0tDUuWLMG6devg6OiIkSNH4t69ezme85NPPkHPnj0BALt27cp1mExsbCz69OmDq1ev4uOPP8by5cthNBrx9ttv57heq1evxrvvvoslS5bgtddee+7XmIheHsfoElm4s2fPonr16iZtMpkMfn5+WLlypVikPnjwAADg4+OT5/kqVKgg9ipm35z2omPy8ujRIzg5OcHGxqbA53iefv36oV27duL2G2+8gQMHDuD9998HAKSkpOD333/H6NGjAQA//vgjQkJCsHv3btSuXRsA0KxZMwwYMADLli3D999/j8uXLyM9PR3vvfcePDw8AACenp44evQoUlNTYWtra5JBrVajTp06UKvVcHZ2Rp06dQAAy5cvR4UKFbBx40YoFAoAQHBwMNq0aYNVq1Zh5cqVz30deWnfvj0OHjyI3377DYMGDUK9evVMHk9ISEBCQgJ8fX1zHPvfG9BkMpmYDcgax7pv374c+yxduhTOzs4AgLi4OGRkZBT4e+LmzZsIDAzEypUrxa9lkyZNcOrUKZw5cwbDhw9/4TVIS0vD3bt3MWrUKPENVK1atbBmzRrodLocz1mlShV4enoCgHh9sn8esm3btg3x8fH45ptv4O3tDSDre6N9+/ZYuXIlVq1aJe775ptvokePHgV6/URkHha6RBauevXqmD17NoCs3rLPPvsMmZmZ+Oyzz1CpUiVxP+H/79bP7aPsZykUihz75taTmV8KhQIGg6HAx+clMDDQZLtLly744YcfcPnyZdSqVQtHjx6FTqdD586dAQCnT5+Gm5sbqlevblL0tWjRAkuWLEFCQgJq164NKysr9OzZE+3atUOzZs3E2SnyKzU1Ff/++y/GjBljUkja29ujRYsWJh+x5/Y68hIdHY3z589DJpPh0KFDGD16tEmP7vOu1b1799C2bVuTNm9vb5NZL1q0aCG+KRAEAbGxsTh48CA++OADpKWloXfv3uLrKeg1DQ4ORnBwMDIzM3H79m3cu3cPN2/eRGxsLBwdHQHghdfAxsYGVapUwccff4yTJ08iODgYzZo1w9SpUwuUCcj63ggMDISHh4f4vSGXy9GsWTP89NNPJvuac72I6OWw0CWycDY2NqhZs6a4Xbt2bXTu3BlDhgzB3r17xZ647F6qhw8f5nm+8PBwcd9y5cq98JjY2FjY2tpCrVbn+ri3tzeOHz+OlJSU5/bqPnr0SOxxM8d/Pxpv1KgRPDw8sH//ftSqVQv79+9HUFCQeO74+HhER0fn6AHPFh0djSpVquCrr77Cxo0bsWfPHmzfvh329vbo168fJkyYYDJLwfMkJSVBEAS4urrmeMzV1RVJSUl5vo7nMRqN+PDDD6HX67Fy5UpMmDABM2fONOkddnJygrW1dY5r5uXlhT179ojba9euzTGe2dHR0eR7CQCaN2+OqKgoLF26FD169ICDgwNsbGwQERHx3JypqanIzMzMdXyv0WjEihUrsHPnTqSmpsLLywu1atWClZWVuI+Pj88Lr8HmzZvx+eef4/Dhw9i3bx9UKhVat26N2bNn5/q8LxIfH4979+4993sjLS1N/Hd+rxcRvTyO0SUiE66urpg5cyYiIyNNblKqUaMG3N3d8euvvz732PDwcFy7dk0cxxsYGAhXV1f88ccfzz1mxowZaN68ea4fGQNZPXhGoxF//vlnro/HxsaiVatWYlaZTJajt/B5NzX9l1wuR6dOnfDrr78iLi4Op06dEscoA4CdnR18fX2xZ8+eXP/L/jg++2PwM2fOYOvWrXjttdewfv36PL92z7Kzs4NMJkNMTEyOx6Kjo8WeS3Nt3LgRf/31F2bNmoU33ngDQ4YMwa+//ppjLtiWLVvi5MmTJnMcq9Vq1KxZU/zPnAw1atRAYmIi4uLiAGRd0zNnziAjIyPX/Xfv3o3GjRvj6tWrub6GrVu3YsaMGTh37hyOHz+OVatWiW/Isr3oGmSPVz558iT27duHoUOH4rfffsNnn32W79f1LDs7OwQFBT33e+N5b+SIqGix0CWiHNq1a4emTZvil19+wf/+9z8AWUXgmDFjcOrUKXzzzTc5jklPT8e0adNgZ2eHfv36iccMHjwYx48fz3Vhh7///hsnTpxAu3btnlsIBAcHw8/PD59++qlYKD1r+fLl0Ov16NSpE4CsHurscaDZzp8/n+/X3qVLFzx69Ahr166FQqEw+bg+KCgIkZGRcHFxMSn6Tp06hS+++AIKhQJbt25FixYtoNPpoFar8eqrr2Lu3LkAkGcv5rOsra1Ro0YNHDx40KRoT0pKwvHjx1G/fv18v55s//zzD1avXo3u3buLN5GNHz8eAQEBmDdvnskiDcOHD4der8eMGTNyfQOSnp6eY1GHvPz7779wcHCAk5MTAGDIkCGIj4/PtaiMjo7G5s2bUaVKlVx7R8+fP48qVaqgR48esLOzAwA8fvwYN2/eFIddvOgaXLhwAU2aNMHly5chk8kQGBiI999/H35+fvm+Rv8VFBSE0NBQVKxY0eR748cff8SePXtMhqAQUfHh0AUiytW0adPQuXNnzJs3Dz/88AMUCgXeeust3LlzB7NmzcLZs2fRvn17ODg44O7du9i2bRuio6Px2WefiTcAAcDgwYNx9uxZjB07Fr1798brr78OuVyOs2fPYseOHQgMDMSkSZOem0OpVGLJkiUYMmQIevToIS4YERsbi7179+LPP//EpEmTxPGXLVq0wI4dOzB9+nT07NkTN2/exJYtW/JdaPj5+SEwMBBff/013nzzTZObx7p3746vvvoK77zzDkaMGAEvLy/89ddf2LRpE/r37w+VSoXGjRtj2bJlGD16NPr37w+FQoFvv/0WarU6z9kn/mvSpEkYOnQohg8fjn79+iEzMxMbN26ETqcTx8HmV2JiIj744AOUK1cOM2bMENvVajWWLVuG7t27Y/Lkydi5cycUCgX8/f2xdOlSTJ06Fd27d0fPnj3h7+8PvV6PCxcuYM+ePYiJicmxgltsbCwuXrwobqelpWHfvn04ffo0Jk6cKF6DOnXqYPz48fjss89w584ddO3aFU5OTrh16xa+/PJLZGRkPLdntVatWli3bh02btyIOnXq4N69e9iwYQN0Op04POBF18Db2xsajQYffvghxo4dC1dXV/z111+4fv06Bg4caNbXNtvgwYPx448/YvDgwRgyZAicnJxw4MAB7N69+6XG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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 2/5\n", + "Configuring PyCaret for outer fold 2\n", + "Creating model xgboost for outer fold 2\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.86031.00000.95770.97840.38640.4893
10.95770.80301.00000.95650.97780.55350.6186
20.92960.36361.00000.92960.96350.00000.0000
30.94370.77271.00000.94290.97060.31730.4342
40.94370.88481.00000.94290.97060.31730.4342
Mean0.94660.73691.00000.94590.97220.31490.3953
Std0.01070.19080.00000.01040.00550.17960.2088
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.82721.00000.95770.97840.38640.4893
10.95770.75151.00000.95650.97780.55350.6186
20.92960.36971.00000.92960.96350.00000.0000
30.95770.73031.00000.95650.97780.55350.6186
40.94370.91521.00000.94290.97060.31730.4342
Mean0.94940.71881.00000.94860.97360.36210.4321
Std0.01140.18620.00000.01100.00580.20340.2278
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95540.87261.00000.95500.97700.27460.3989
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 3/5\n", + "Configuring PyCaret for outer fold 3\n", + "Creating model xgboost for outer fold 3\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.62871.00000.95770.97840.38640.4893
10.95770.77271.00000.95650.97780.55350.6186
20.94370.59391.00000.94290.97060.31730.4342
30.92960.65761.00000.92960.96350.00000.0000
40.94370.83031.00000.94290.97060.31730.4342
Mean0.94660.69661.00000.94590.97220.31490.3953
Std0.01070.08980.00000.01040.00550.17960.2088
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.62871.00000.95770.97840.38640.4893
10.95770.77271.00000.95650.97780.55350.6186
20.94370.59391.00000.94290.97060.31730.4342
30.92960.65761.00000.92960.96350.00000.0000
40.94370.83031.00000.94290.97060.31730.4342
Mean0.94660.69661.00000.94590.97220.31490.3953
Std0.01070.08980.00000.01040.00550.17960.2088
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95500.90321.00000.95450.97670.27450.3989
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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hIeH4+Pjw4oVK+jTpw81atSgfv36zJw5ky5dujBx4kT5/15QUBB//fUXGzduxMnJierVq2Nra8uaNWuIiopi7969hXi0BWP//v307NkTHR0djhw58l7biI+Px9vbmxkzZtC/f3/q1KmDqakp3t7eVK9eneXLlxdIrFu2bKFDhw64urpiamrKwoULOXnyJPHx8Sptnz9/zpUrVxg6dCg1a9akTZs22Nvby19ktm/fjrW1NSNHjqR27dqMHTuW0qVLs2/fvgKJ9UMUu0S3MGRlZTF37lxat27NvHnzlF778ssvCykqQRCET8/du3cxMTHhxIkTODo6Ym1tzezZs4mMjMTd3R0rKyuGDh0qjxRlZGQwb9487O3tMTMzw9HRkZ07d8rbS0lJYerUqdja2mJra8uUKVPkxMvExITff/8dW1tbhgwZAsDly5fp1q0bVlZWODo6sn379jfGGxUVxYABA7C2tsbCwoLu3bsTHR0NwPfff8/SpUuV2nt4eMh3NIuMjKRXr140aNCAdu3asXXrVrndsmXLGDZsGD169KBJkyZcuHCBhIQEfvrpJxo3boy5uTlubm5cvHhRXic+Pp6+ffvKJQbr1q1TOlUeEhKCu7s7DRo0oGPHju+ViGlpaaGtrY22ds4lPrt378bMzIxmzZqptB02bBgJCQmcOnUKgICAANq2bUuNGjWU2lWsWBFfX1++/fZbtftMSUlh9uzZ2NnZqe3D8+fPy23zlgecP38eR0dHpk2bho2NDcuXL8fExEQpkYuLi8PU1JQHDx4AsGPHDvn3rlevXty8efOd35uoqCgiIyOxtbXF3t6egICAd143r/3791OuXDk6duyotFxTU5MFCxYwatQotev16tVLpdzExMSEXr16qW1/9epVGjVqJD+vUqUKX331FVevXlVpq6enR8mSJdmzZw+ZmZnExMRw6dIl6tWrB+T87jVo0EBur6GhgbGxMVeuXMnn0Rc8keh+BFpaWoSEhJCdnc3GjRvfWAMjCILwX0tMuvPWR17Ziqy3tn+cfE9pncysdLXbeldr1qzBx8eHWbNmsXnzZjw9PRkzZgzr1q3jypUrchKxZs0aTpw4wbJlyzh8+DCurq7MmjWLR48eATB58mQuXryIj48P69ev5+LFi/z222/yfv766y+2b9+Ol5cX0dHR9OnTh8aNG7Nnzx5GjBjBggUL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 4/5\n", + "Configuring PyCaret for outer fold 4\n", + "Creating model xgboost for outer fold 4\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97220.68571.00000.97220.98590.00000.0000
10.91550.69741.00000.91550.95590.00000.0000
20.97180.96671.00000.97060.98510.73610.7631
30.94370.74251.00000.94370.97100.00000.0000
40.97180.80971.00000.97100.98530.65370.6968
Mean0.95500.78041.00000.95460.97660.27790.2920
Std0.02260.10280.00000.02230.01180.34140.3582
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97220.56431.00000.97220.98590.00000.0000
10.92960.69741.00000.92860.96300.26800.3934
20.98590.95151.00000.98510.99250.88150.8877
30.94370.70521.00000.94370.97100.00000.0000
40.97180.80601.00000.97100.98530.65370.6968
Mean0.96060.74491.00000.96010.97950.36060.3956
Std0.02070.12870.00000.02080.01090.35380.3594
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.92790.72671.00000.92660.96190.31270.4305
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 5/5\n", + "Configuring PyCaret for outer fold 5\n", + "Creating model xgboost for outer fold 5\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.54591.00000.95830.97870.00000.0000
10.95770.86671.00000.95590.97740.64680.6913
20.92960.80001.00000.92960.96350.00000.0000
31.00001.00001.00001.00001.00001.00001.0000
40.94370.70521.00000.94370.97100.00000.0000
Mean0.95790.78361.00000.95750.97810.32940.3383
Std0.02360.15270.00000.02360.01220.41860.4256
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97220.61841.00000.97180.98570.48940.5692
10.95770.88461.00000.95590.97740.64680.6913
20.92960.81821.00000.92960.96350.00000.0000
31.00001.00001.00001.00001.00001.00001.0000
40.94370.70901.00000.94370.97100.00000.0000
Mean0.96060.80601.00000.96020.97950.42720.4521
Std0.02430.13310.00000.02430.01260.38600.3949
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96400.80701.00000.96260.98100.64980.6938
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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D2CLbglYqewR5N1WfExERESWa8iQIbh69SoGDx6MgIAAqcOhB7BFtwRstY5oWr0HmlbvAVuto9ThEBERlYqIuHP4LexLnL/1BwTBJHU45VJ0dDReeOEFXLx4USyTyWR4++23meSWQ2zRJSIiIgBAdPIVRMafQ1zaTdTzaSt1OOVOZmYmOnfujDt37uD27ds4cOAA1Gq11GFRIdiiS0RERADur4jmasvBaAWxsrLC5MmTIZPJ0K5dOwiCIHVI9Bhs0S2BtKxEXLx9BABQ1zsUdlpOv0JERBVbdo4Bybq7AAA3zp8run37Nry9vcXtV155Ba1atUJISIiEUVFRsUW3BLKy03Ep5i9civkLWdnpUodDRET0xBLToyEgt4XShUv/IjU1FRMnTkTLli1x48YNsVwulzPJrUCY6BIRERHi0/NWRJPBlYkurl+/jq+//hrp6el49913pQ6HSohdF4iIiEjsn+to7QaVkgsdNGjQANOmTcONGzewePFiqcOhEmKiS0RERGKLrqUORPvnn3+QkpKCLl26iGUzZsyAXM6b3xUZrx4REZGFy8rOQFpWIgDA1QIHoq1duxY9evTA+PHjERsbK5Yzya342KJLRERk4TRKawxq+hbi027Bxdb78QdUMvXq1YPJZEJ2djYuXboEd3d3qUOiUsJEl4iIyMLJZDLYaBxho3GUOpSnQhAEyGQycbtdu3ZYvnw5unTpAh8fy2vRrsyY6BIRERWTIJggQIBcphDLknV3kZaVhOwcPYw5epgKWELX06E6HK09xO2oxEvI0KcU+lw+TnXMlpu/HncWBmNmocdUdwuGRmktbl+580+B8TzI36Mp5HJFoXUqg/DwcEycOBGzZ89Gu3btxPKXXnpJwqiorDDRLQEbjROa13hWfExEROVbjskIY44B2Tn6e/8MMIqP9bDVOsHToYZY/0bCBUTEnb1Xx3Aveb13vEkPY042GlTthAZVO4vHnL/1B67Gnio0jpa1+pklumExx3A76Uqhx3QOesks0T0XdRjJuthHHwDA06GGWaL7T8SPMOYYCj2mpnsjyFG5E93s7GwMGDAAt27dwqRJk3D06FHY29tLHRaVISa6JWCttkNglVZSh0FEVCkJgglGUzayc/TIMRnNVp/MNKThevxZxBujcCEmDjK5ILag5iahBjhYuaJFzb7iMddiT+PPKzsKfc4a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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final metrics table:\n", + " Metric Mean Std Dev\n", + "0 Accuracy 0.96386 0.007613\n", + "1 AUC 0.69022 0.120949\n", + "2 Recall 1.00000 0.000000\n", + "3 Prec. 0.96342 0.007834\n", + "4 F1 0.98136 0.004054\n", + "5 Kappa 0.32972 0.189638\n", + "6 MCC 0.40742 0.230368\n" + ] + } + ], + "source": [ + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Fracture\", experiment_name=\"CP_Fracture\", filepath=\"./results/fracture\")\n", + "\n", + "# Model training\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='AUC',\n", + " custom_grid=grid_hps\n", + ")" + ] } ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python 3", "language": "python", - "name": "haim" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -346,7 +1974,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/notebooks/length-of-stay.ipynb b/notebooks/length-of-stay.ipynb index f79e8bc..5a095ef 100644 --- a/notebooks/length-of-stay.ipynb +++ b/notebooks/length-of-stay.ipynb @@ -180,7 +180,7 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] diff --git a/notebooks/lung-lesion.ipynb b/notebooks/lung-lesion.ipynb index cc07e77..aa6e8c1 100644 --- a/notebooks/lung-lesion.ipynb +++ b/notebooks/lung-lesion.ipynb @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -173,169 +173,1798 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], - "source": [ - "# Initialize the PyCaret Evaluator\n", - "evaluator = PyCaretEvaluator(dataset=dataset, target=\"LungLesion\", experiment_name=\"CP_LungLesion\", filepath=\"./results/lunglesion\")\n", - "\n", - "# Model training and results evaluation\n", - "evaluator.run_experiment(\n", - " train_size=0.8,\n", - " fold=5,\n", - " fold_strategy='kfold',\n", - " outer_fold=5,\n", - " outer_strategy='kfold',\n", - " session_id=42,\n", - " model='xgboost',\n", - " optimize='Accuracy',\n", - " custom_grid=grid_hps\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "6787a8cc", - "metadata": {}, - "source": [ - "#### Comparison with the paper results:\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b517ec5e", - "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 1/5\n", + "Configuring PyCaret for outer fold 1\n", + "Creating model xgboost for outer fold 1\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/html": [ - "
\n", - "\n", - "\n", + "
\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0035 +- 0.00080.0353 +- 0.0042
test_metrics0.9601 +- 0.01130.6165 +- 0.09910.3786 +- 0.30940.9922 +- 0.00240.2407 +- 0.19730.8286 +- 0.05290.0374 +- 0.00820.147 +- 0.0333
HAIM----------0.844----
NON_HAIM----------0.831----00.95800.88421.00000.95800.97850.00000.0000
10.98320.79131.00000.98290.99140.65900.7010
20.98320.72651.00000.98320.99150.00000.0000
30.95800.83331.00000.95760.97840.27530.3995
40.95800.81711.00000.95760.97840.27530.3995
Mean0.96810.81051.00000.96790.98360.24190.3000
Std0.01240.05180.00000.01240.00640.24220.2686
\n", - "
" + "\n" ], "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9601 +- 0.0113 0.6165 +- 0.0991 0.3786 +- 0.3094 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.9922 +- 0.0024 0.2407 +- 0.1973 0.8286 +- 0.0529 \n", - "HAIM -- -- 0.844 \n", - "NON_HAIM -- -- 0.831 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0035 +- 0.0008 0.0353 +- 0.0042 \n", - "test_metrics 0.0374 +- 0.0082 0.147 +- 0.0333 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Lung Lesion', constants.LUNG_LESION)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.88421.00000.95800.97850.00000.0000
10.98320.79131.00000.98290.99140.65900.7010
20.98320.72651.00000.98320.99150.00000.0000
30.95800.83331.00000.95760.97840.27530.3995
40.95800.81711.00000.95760.97840.27530.3995
Mean0.96810.81051.00000.96790.98360.24190.3000
Std0.01240.05180.00000.01240.00640.24220.2686
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.94620.82951.00000.94570.97210.27230.3970
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAH7CAYAAAAjETxNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAADaWUlEQVR4nOzdd3hT5fvH8Xdmk+5JW1qgrJay97IgW2TIEkQF8SeIoICDryKCCAoKAiqCyFAUFRVFBQcOBBzgQmTInoUy29I90yTn90clEFpKCy2nbe7XdXGRc3LOySc9TXL3yXOeR6MoioIQQgghhBCVjFbtAEIIIYQQQpQFKXSFEEIIIUSlJIWuEEIIIYSolKTQFUIIIYQQlZIUukIIIYQQolKSQlcIIYQQQlRKUugKIYQQQohKSQpdIYQQQghRKUmhK4QQQgghKiUpdIVwYcOHDycqKsrpX7169WjevDkDBw5k3bp1he63adMmRo0aRZs2bWjcuDG33XYbL730EmfPnr3qY33//feMHDmS9u3b07RpU/r06cPixYvJyMgoVta0tDQWLVpE3759adasGe3atWPEiBFs2rTpup57efPHH39w22230bBhQ0aNGlWqxz548CCNGjVi5MiRFDYZ5uzZs2nUqBH79u1zWn/06FFeeOEFbrvtNpo0aUKLFi0YOnQoH374IVar1WnbLl26FPg9atOmDWPGjOHAgQOF5vr333958skn6dSpE40bN6Zbt248++yzxMXFOW0XFRXFwoULb/CnUDILFy4kKirKsZyRkcGYMWNo0qQJrVq1IjY2lqioKD7//PObmksIUTJ6tQMIIdRVv359nnvuOceyzWbj3LlzvPvuuzz11FP4+vpy6623Ou6fMWMGH374Ib179+aFF17A29ubI0eO8P777/PFF1/w+uuv07ZtW8f2drudJ598ku+++45BgwZx99134+Hhwc6dO3n77bf58ccfeffdd/H29r5qxqNHj/Lggw9it9u57777qFevHllZWXz11VeMHTuWRx99lIcffrhsfkA3ycsvv4zdbmfZsmUEBASU6rGjoqJ44oknmD17NqtWrWLYsGGO+3788Ufeeecdnn32WerXr+9Yv379eiZPnkzt2rX5v//7P2rWrElOTg4///wzL774Ir/++iuLFy9Go9E49rn11lsd58FqtRIfH8+KFSsYMWIE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6u/G1f6QE0KULSl0hRAF9OzZkw4dOvD111/z119/AflF4Lhx49i6dSsfffRRgX1ycnJ45pln8PLy4p577nHsc//99/PTTz8VOrHDH3/8wc8//0zPnj2vWgjExMQQGRnJq6++6iiULjd//nysVit9+/YF8luoL/YDvWj79u3Ffu79+vXj3LlzvPHGG+h0Oqev61u3bs3Zs2cJCAhwKvq2bt3KW2+9hU6n491336Vz585YLBaMRiPt2rXjhRdeACiyFfNy7u7uNGzYkG+//dapaE9PT+enn36iRYsWxX4+F/3zzz8sXLiQgQMHOi4ie/TRR6lXrx4zZ850mqRh9OjRWK1Wpk6dWugfIDk5OQUmdSjKv//+i4+PD35+fgA88MADpKSkFFpUJiQksGLFCurUqVNo6+j27dupU6cOgwYNwsvLC4Dz589z6NAhR7eLa52DHTt20L59e3bv3o1GoyE6OprHH3+cyMjIYp+jK7Vu3Zrjx49Ts2ZNp9+NdevWsWbNGqcuKEKIm0e6LgghCvXMM89wxx13MHPmTL744gt0Oh133XUXR48eZfr06Wzbto1evXrh4+PDsWPHWLlyJQkJCbz22muOC4AA7r//frZt28b48eMZMmQIt956K1qtlm3btvH+++8THR3NxIkTr5pDr9fz8ssv88ADDzBo0CDHhBFJSUl8/vnn/Prrr0ycONHR/7Jz5868//77TJkyhTvvvJNDhw7xzjvvFLvQiIyMJDo6mg8//JDbb7/d6eKxgQMH8sEHH/B///d/jBkzhtDQUH777TeWL1/OsGHDMBgMtG3blnnz5vHII48wbNgwdDodH3/8MUajscjRJ640ceJERo4cyejRo7nnnnvIy8tj2bJlWCwWRz/Y4kpLS+N///sfVatWZerUqY71RqORefPmMXDgQJ588klWrVqFTqcjKiqKuXPnMnnyZAYOHMidd95JVFQUVquVHTt2sGbNGhITEwvM4JaUlMTOnTsdy9nZ2axdu5bff/+dJ554wnEOmjZtyqOPPsprr73G0aNH6d+/P35+fhw+fJi3336b3Nzcq7asNm7cmMWLF7Ns2TKaNm3KiRMnWLp0KRaLxdE94FrnICwsDJPJxFNPPcX48eMJDAzkt99+Y//+/dx3330l+tledP/997Nu3Truv/9+HnjgAfz8/Fi/fj2ffPLJDfX9FULcGCl0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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 2/5\n", + "Configuring PyCaret for outer fold 2\n", + "Creating model xgboost for outer fold 2\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.76111.00000.95760.97840.27530.3995
10.97480.87611.00000.97460.98710.39180.4936
20.98320.99151.00000.98320.99150.00000.0000
30.94960.83161.00000.94920.97390.23880.3682
40.95800.85841.00000.95730.97820.42950.5230
Mean0.96470.86371.00000.96440.98180.26710.3569
Std0.01240.07490.00000.01250.00650.15110.1874
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.76111.00000.95760.97840.27530.3995
10.97480.87611.00000.97460.98710.39180.4936
20.98320.99151.00000.98320.99150.00000.0000
30.94960.83161.00000.94920.97390.23880.3682
40.95800.85841.00000.95730.97820.42950.5230
Mean0.96470.86371.00000.96440.98180.26710.3569
Std0.01240.07490.00000.01250.00650.15110.1874
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96770.87361.00000.96740.98340.38950.4918
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 3/5\n", + "Configuring PyCaret for outer fold 3\n", + "Creating model xgboost for outer fold 3\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.90181.00000.95730.97820.42950.5230
10.96640.79571.00000.96640.98290.00000.0000
20.97480.79601.00000.97480.98720.00000.0000
30.94120.86101.00000.94120.96970.00000.0000
40.94960.85811.00000.94870.97370.38340.4870
Mean0.95800.84251.00000.95770.97830.16260.2020
Std0.01190.04110.00000.01200.00630.19970.2477
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.89161.00000.95730.97820.42950.5230
10.96640.77391.00000.96640.98290.00000.0000
20.98320.82471.00000.98310.99150.49360.5724
30.94120.86611.00000.94120.96970.00000.0000
40.94960.89411.00000.94870.97370.38340.4870
Mean0.95970.85011.00000.95930.97920.26130.3165
Std0.01450.04550.00000.01460.00760.21620.2598
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.97310.77461.00000.97310.98640.00000.0000
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 4/5\n", + "Configuring PyCaret for outer fold 4\n", + "Creating model xgboost for outer fold 4\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.77371.00000.96610.98280.32390.4396
10.98320.86521.00000.98290.99140.65900.7010
20.99160.39831.00000.99160.99580.00000.0000
30.96640.74041.00000.96580.98260.48710.5674
40.95800.77431.00000.95760.97840.27530.3995
Mean0.97310.71041.00000.97280.98620.34900.4215
Std0.01240.16150.00000.01250.00640.22050.2358
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.77371.00000.96610.98280.32390.4396
10.98320.86521.00000.98290.99140.65900.7010
20.99160.39831.00000.99160.99580.00000.0000
30.96640.74041.00000.96580.98260.48710.5674
40.95800.77431.00000.95760.97840.27530.3995
Mean0.97310.71041.00000.97280.98620.34900.4215
Std0.01240.16150.00000.01250.00640.22050.2358
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.93010.73091.00000.92970.96360.12450.2577
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 5/5\n", + "Configuring PyCaret for outer fold 5\n", + "Creating model xgboost for outer fold 5\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.78831.00000.95730.97820.42950.5230
10.98320.80001.00000.98280.99130.74190.7679
20.99160.99711.00000.99150.99570.79590.8130
30.94120.89640.98200.95610.96890.43220.4456
40.93280.85591.00000.93280.96520.00000.0000
Mean0.96130.86750.99640.96410.97990.47990.5099
Std0.02290.07560.00720.02090.01200.28410.2908
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.80231.00000.95730.97820.42950.5230
10.98320.90701.00000.98280.99130.74190.7679
20.99161.00001.00000.99150.99570.79590.8130
30.95800.93361.00000.95690.97800.52820.5990
40.93280.86821.00000.93280.96520.00000.0000
Mean0.96470.90221.00000.96420.98170.49910.5406
Std0.02090.06590.00000.02090.01080.28350.2905
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.98920.86411.00000.98920.99460.00000.0000
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final metrics table:\n", + " Metric Mean Std Dev\n", + "0 Accuracy 0.95968 0.003757\n", + "1 AUC 0.82258 0.061525\n", + "2 Recall 1.00000 0.000000\n", + "3 Prec. 0.95926 0.003834\n", + "4 F1 0.97922 0.002005\n", + "5 Kappa 0.29164 0.176332\n", + "6 MCC 0.37702 0.217478\n" + ] + } + ], + "source": [ + "# Initialize the PyCaret Evaluator\n", + "evaluator = PyCaretEvaluator(dataset=dataset, target=\"LungLesion\", experiment_name=\"CP_LungLesion\", filepath=\"./results/lunglesion\")\n", + "\n", + "# Model training and results evaluation\n", + "evaluator.run_experiment(\n", + " train_size=0.8,\n", + " fold=5,\n", + " fold_strategy='kfold',\n", + " outer_fold=5,\n", + " outer_strategy='kfold',\n", + " session_id=42,\n", + " model='xgboost',\n", + " optimize='AUC',\n", + " custom_grid=grid_hps\n", + ")" + ] } ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python 3", "language": "python", - "name": "haim" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -347,7 +1976,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/notebooks/lung-opacity.ipynb b/notebooks/lung-opacity.ipynb index f48836d..7a7c3d7 100644 --- a/notebooks/lung-opacity.ipynb +++ b/notebooks/lung-opacity.ipynb @@ -76,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -102,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -174,10 +174,306 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 1/5\n", + "Configuring PyCaret for outer fold 1\n", + "Creating model xgboost for outer fold 1\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97510.80001.00000.97480.98720.49590.5742
10.96960.79801.00000.96930.98440.38580.4889
20.97070.80051.00000.97040.98500.39490.4960
30.98010.79341.00000.97990.98990.47830.5606
40.97680.84471.00000.97650.98810.46650.5515
Mean0.97450.80731.00000.97420.98690.44430.5342
Std0.00390.01880.00000.00390.00200.04510.0350
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Initiated. . . . . . . . . . . . . . . . . .10:59:22
Status. . . . . . . . . . . . . . . . . .Searching Hyperparameters
Estimator. . . . . . . . . . . . . . . . . .Extreme Gradient Boosting
\n", + "
" + ], + "text/plain": [ + " \n", + " \n", + "Initiated . . . . . . . . . . . . . . . . . . 10:59:22\n", + "Status . . . . . . . . . . . . . . . . . . Searching Hyperparameters\n", + "Estimator . . . . . . . . . . . . . . . . . . Extreme Gradient Boosting" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fe2a56a7fd9746aca1821a657e1efc84", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Processing: 0%| | 0/7 [00:00\n from pycaret.utils.generic import get_all_object_vars_and_properties, variable_return\n File \"c:\\Python310\\lib\\site-packages\\pycaret\\utils\\generic.py\", line 11, in \n import pandas as pd\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\__init__.py\", line 22, in \n from pandas.compat import is_numpy_dev as _is_numpy_dev\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\compat\\__init__.py\", line 15, in \n from pandas.compat.numpy import (\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\compat\\numpy\\__init__.py\", line 4, in \n from pandas.util.version import Version\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\util\\__init__.py\", line 1, in \n from pandas.util._decorators import ( # noqa:F401\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\util\\_decorators.py\", line 14, in \n from pandas._libs.properties import cache_readonly # noqa:F401\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\_libs\\__init__.py\", line 13, in \n from pandas._libs.interval import Interval\nImportError: DLL load failed while importing interval: Le fichier de pagination est insuffisant pour terminer cette opération.\n\"\"\"", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[1;31mBrokenProcessPool\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [5]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m evaluator \u001b[38;5;241m=\u001b[39m PyCaretEvaluator(dataset\u001b[38;5;241m=\u001b[39mdataset, target\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLungOpacity\u001b[39m\u001b[38;5;124m\"\u001b[39m, experiment_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCP_LungOpacity\u001b[39m\u001b[38;5;124m\"\u001b[39m, filepath\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./results/lungopacity\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;66;03m# Model training and results evaluation\u001b[39;00m\n\u001b[1;32m----> 5\u001b[0m \u001b[43mevaluator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_experiment\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.8\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mfold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mfold_strategy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mkfold\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mouter_fold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mouter_strategy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mkfold\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43msession_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m42\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mxgboost\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43moptimize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mAccuracy\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mcustom_grid\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgrid_hps\u001b[49m\n\u001b[0;32m 15\u001b[0m \u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\user\\Downloads\\HAIM-PyCaret-vf\\HAIM_PyCaret\\src\\evaluation\\pycaret_evaluator.py:135\u001b[0m, in \u001b[0;36mPyCaretEvaluator.run_experiment\u001b[1;34m(self, train_size, fold, fold_strategy, outer_fold, outer_strategy, session_id, model, optimize, custom_grid)\u001b[0m\n\u001b[0;32m 133\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m custom_grid:\n\u001b[0;32m 134\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTuning hyperparameters for model \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with custom grid\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m--> 135\u001b[0m best_model \u001b[38;5;241m=\u001b[39m \u001b[43mtune_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbest_model\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcustom_grid\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcustom_grid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfold\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 136\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 137\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(optimize, \u001b[38;5;28mlist\u001b[39m):\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\utils\\generic.py:964\u001b[0m, in \u001b[0;36mcheck_if_global_is_not_none..decorator..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 962\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m globals_d[name] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 963\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(message)\n\u001b[1;32m--> 964\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\classification\\functional.py:1208\u001b[0m, in \u001b[0;36mtune_model\u001b[1;34m(estimator, fold, round, n_iter, custom_grid, optimize, custom_scorer, search_library, search_algorithm, early_stopping, early_stopping_max_iters, choose_better, fit_kwargs, groups, return_tuner, verbose, tuner_verbose, return_train_score, **kwargs)\u001b[0m\n\u001b[0;32m 1017\u001b[0m \u001b[38;5;129m@check_if_global_is_not_none\u001b[39m(\u001b[38;5;28mglobals\u001b[39m(), _CURRENT_EXPERIMENT_DECORATOR_DICT)\n\u001b[0;32m 1018\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtune_model\u001b[39m(\n\u001b[0;32m 1019\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1037\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1038\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m 1039\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 1040\u001b[0m \u001b[38;5;124;03m This function tunes the hyperparameters of a given estimator. The output of\u001b[39;00m\n\u001b[0;32m 1041\u001b[0m \u001b[38;5;124;03m this function is a score grid with CV scores by fold of the best selected\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1205\u001b[0m \n\u001b[0;32m 1206\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 1208\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _CURRENT_EXPERIMENT\u001b[38;5;241m.\u001b[39mtune_model(\n\u001b[0;32m 1209\u001b[0m estimator\u001b[38;5;241m=\u001b[39mestimator,\n\u001b[0;32m 1210\u001b[0m fold\u001b[38;5;241m=\u001b[39mfold,\n\u001b[0;32m 1211\u001b[0m \u001b[38;5;28mround\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mround\u001b[39m,\n\u001b[0;32m 1212\u001b[0m n_iter\u001b[38;5;241m=\u001b[39mn_iter,\n\u001b[0;32m 1213\u001b[0m custom_grid\u001b[38;5;241m=\u001b[39mcustom_grid,\n\u001b[0;32m 1214\u001b[0m optimize\u001b[38;5;241m=\u001b[39moptimize,\n\u001b[0;32m 1215\u001b[0m custom_scorer\u001b[38;5;241m=\u001b[39mcustom_scorer,\n\u001b[0;32m 1216\u001b[0m search_library\u001b[38;5;241m=\u001b[39msearch_library,\n\u001b[0;32m 1217\u001b[0m search_algorithm\u001b[38;5;241m=\u001b[39msearch_algorithm,\n\u001b[0;32m 1218\u001b[0m early_stopping\u001b[38;5;241m=\u001b[39mearly_stopping,\n\u001b[0;32m 1219\u001b[0m early_stopping_max_iters\u001b[38;5;241m=\u001b[39mearly_stopping_max_iters,\n\u001b[0;32m 1220\u001b[0m choose_better\u001b[38;5;241m=\u001b[39mchoose_better,\n\u001b[0;32m 1221\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 1222\u001b[0m groups\u001b[38;5;241m=\u001b[39mgroups,\n\u001b[0;32m 1223\u001b[0m return_tuner\u001b[38;5;241m=\u001b[39mreturn_tuner,\n\u001b[0;32m 1224\u001b[0m verbose\u001b[38;5;241m=\u001b[39mverbose,\n\u001b[0;32m 1225\u001b[0m tuner_verbose\u001b[38;5;241m=\u001b[39mtuner_verbose,\n\u001b[0;32m 1226\u001b[0m return_train_score\u001b[38;5;241m=\u001b[39mreturn_train_score,\n\u001b[0;32m 1227\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1228\u001b[0m )\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\classification\\oop.py:1558\u001b[0m, in \u001b[0;36mClassificationExperiment.tune_model\u001b[1;34m(self, estimator, fold, round, n_iter, custom_grid, optimize, custom_scorer, search_library, search_algorithm, early_stopping, early_stopping_max_iters, choose_better, fit_kwargs, groups, return_tuner, verbose, tuner_verbose, return_train_score, **kwargs)\u001b[0m\n\u001b[0;32m 1367\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtune_model\u001b[39m(\n\u001b[0;32m 1368\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1369\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1387\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1388\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m 1389\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 1390\u001b[0m \u001b[38;5;124;03m This function tunes the hyperparameters of a given estimator. The output of\u001b[39;00m\n\u001b[0;32m 1391\u001b[0m \u001b[38;5;124;03m this function is a score grid with CV scores by fold of the best selected\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1555\u001b[0m \n\u001b[0;32m 1556\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 1558\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mtune_model(\n\u001b[0;32m 1559\u001b[0m estimator\u001b[38;5;241m=\u001b[39mestimator,\n\u001b[0;32m 1560\u001b[0m fold\u001b[38;5;241m=\u001b[39mfold,\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;28mround\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mround\u001b[39m,\n\u001b[0;32m 1562\u001b[0m n_iter\u001b[38;5;241m=\u001b[39mn_iter,\n\u001b[0;32m 1563\u001b[0m custom_grid\u001b[38;5;241m=\u001b[39mcustom_grid,\n\u001b[0;32m 1564\u001b[0m optimize\u001b[38;5;241m=\u001b[39moptimize,\n\u001b[0;32m 1565\u001b[0m custom_scorer\u001b[38;5;241m=\u001b[39mcustom_scorer,\n\u001b[0;32m 1566\u001b[0m search_library\u001b[38;5;241m=\u001b[39msearch_library,\n\u001b[0;32m 1567\u001b[0m search_algorithm\u001b[38;5;241m=\u001b[39msearch_algorithm,\n\u001b[0;32m 1568\u001b[0m early_stopping\u001b[38;5;241m=\u001b[39mearly_stopping,\n\u001b[0;32m 1569\u001b[0m early_stopping_max_iters\u001b[38;5;241m=\u001b[39mearly_stopping_max_iters,\n\u001b[0;32m 1570\u001b[0m choose_better\u001b[38;5;241m=\u001b[39mchoose_better,\n\u001b[0;32m 1571\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 1572\u001b[0m groups\u001b[38;5;241m=\u001b[39mgroups,\n\u001b[0;32m 1573\u001b[0m return_tuner\u001b[38;5;241m=\u001b[39mreturn_tuner,\n\u001b[0;32m 1574\u001b[0m verbose\u001b[38;5;241m=\u001b[39mverbose,\n\u001b[0;32m 1575\u001b[0m tuner_verbose\u001b[38;5;241m=\u001b[39mtuner_verbose,\n\u001b[0;32m 1576\u001b[0m return_train_score\u001b[38;5;241m=\u001b[39mreturn_train_score,\n\u001b[0;32m 1577\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1578\u001b[0m )\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\internal\\pycaret_experiment\\supervised_experiment.py:2680\u001b[0m, in \u001b[0;36m_SupervisedExperiment.tune_model\u001b[1;34m(self, estimator, fold, round, n_iter, custom_grid, optimize, custom_scorer, search_library, search_algorithm, early_stopping, early_stopping_max_iters, choose_better, fit_kwargs, groups, return_tuner, verbose, tuner_verbose, return_train_score, **kwargs)\u001b[0m\n\u001b[0;32m 2672\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m patch(\n\u001b[0;32m 2673\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msklearn.model_selection._search.sample_without_replacement\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 2674\u001b[0m pycaret\u001b[38;5;241m.\u001b[39minternal\u001b[38;5;241m.\u001b[39mpatches\u001b[38;5;241m.\u001b[39msklearn\u001b[38;5;241m.\u001b[39m_mp_sample_without_replacement,\n\u001b[0;32m 2675\u001b[0m ):\n\u001b[0;32m 2676\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m patch(\n\u001b[0;32m 2677\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msklearn.model_selection._search.ParameterGrid.__getitem__\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 2678\u001b[0m pycaret\u001b[38;5;241m.\u001b[39minternal\u001b[38;5;241m.\u001b[39mpatches\u001b[38;5;241m.\u001b[39msklearn\u001b[38;5;241m.\u001b[39m_mp_ParameterGrid_getitem,\n\u001b[0;32m 2679\u001b[0m ):\n\u001b[1;32m-> 2680\u001b[0m model_grid\u001b[38;5;241m.\u001b[39mfit(data_X, data_y, groups\u001b[38;5;241m=\u001b[39mgroups, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_kwargs)\n\u001b[0;32m 2681\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2682\u001b[0m model_grid\u001b[38;5;241m.\u001b[39mfit(data_X, data_y, groups\u001b[38;5;241m=\u001b[39mgroups, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_kwargs)\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\base.py:1474\u001b[0m, in \u001b[0;36m_fit_context..decorator..wrapper\u001b[1;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1467\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[0;32m 1469\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m 1470\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m 1471\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m 1472\u001b[0m )\n\u001b[0;32m 1473\u001b[0m ):\n\u001b[1;32m-> 1474\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fit_method(estimator, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\model_selection\\_search.py:970\u001b[0m, in \u001b[0;36mBaseSearchCV.fit\u001b[1;34m(self, X, y, **params)\u001b[0m\n\u001b[0;32m 964\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_format_results(\n\u001b[0;32m 965\u001b[0m all_candidate_params, n_splits, all_out, all_more_results\n\u001b[0;32m 966\u001b[0m )\n\u001b[0;32m 968\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results\n\u001b[1;32m--> 970\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_search\u001b[49m\u001b[43m(\u001b[49m\u001b[43mevaluate_candidates\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 972\u001b[0m \u001b[38;5;66;03m# multimetric is determined here because in the case of a callable\u001b[39;00m\n\u001b[0;32m 973\u001b[0m \u001b[38;5;66;03m# self.scoring the return type is only known after calling\u001b[39;00m\n\u001b[0;32m 974\u001b[0m first_test_score \u001b[38;5;241m=\u001b[39m all_out[\u001b[38;5;241m0\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest_scores\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\model_selection\\_search.py:1914\u001b[0m, in \u001b[0;36mRandomizedSearchCV._run_search\u001b[1;34m(self, evaluate_candidates)\u001b[0m\n\u001b[0;32m 1912\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run_search\u001b[39m(\u001b[38;5;28mself\u001b[39m, evaluate_candidates):\n\u001b[0;32m 1913\u001b[0m \u001b[38;5;124;03m\"\"\"Search n_iter candidates from param_distributions\"\"\"\u001b[39;00m\n\u001b[1;32m-> 1914\u001b[0m \u001b[43mevaluate_candidates\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1915\u001b[0m \u001b[43m \u001b[49m\u001b[43mParameterSampler\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1916\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparam_distributions\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mn_iter\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrandom_state\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrandom_state\u001b[49m\n\u001b[0;32m 1917\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1918\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\model_selection\\_search.py:916\u001b[0m, in \u001b[0;36mBaseSearchCV.fit..evaluate_candidates\u001b[1;34m(candidate_params, cv, more_results)\u001b[0m\n\u001b[0;32m 908\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m 909\u001b[0m \u001b[38;5;28mprint\u001b[39m(\n\u001b[0;32m 910\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFitting \u001b[39m\u001b[38;5;132;01m{0}\u001b[39;00m\u001b[38;5;124m folds for each of \u001b[39m\u001b[38;5;132;01m{1}\u001b[39;00m\u001b[38;5;124m candidates,\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 911\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m totalling \u001b[39m\u001b[38;5;132;01m{2}\u001b[39;00m\u001b[38;5;124m fits\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\n\u001b[0;32m 912\u001b[0m n_splits, n_candidates, n_candidates \u001b[38;5;241m*\u001b[39m n_splits\n\u001b[0;32m 913\u001b[0m )\n\u001b[0;32m 914\u001b[0m )\n\u001b[1;32m--> 916\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mparallel\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mdelayed\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_fit_and_score\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mclone\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbase_estimator\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 920\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 921\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 922\u001b[0m \u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 923\u001b[0m \u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 924\u001b[0m \u001b[43m \u001b[49m\u001b[43msplit_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_splits\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 925\u001b[0m \u001b[43m \u001b[49m\u001b[43mcandidate_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_candidates\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 926\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfit_and_score_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 927\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 928\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mproduct\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 929\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcandidate_params\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 930\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcv\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mrouted_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplitter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 931\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 932\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 934\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(out) \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m 935\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 936\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo fits were performed. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 937\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWas the CV iterator empty? \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 938\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWere there no candidates?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 939\u001b[0m )\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\utils\\parallel.py:67\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m 62\u001b[0m config \u001b[38;5;241m=\u001b[39m get_config()\n\u001b[0;32m 63\u001b[0m iterable_with_config \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 64\u001b[0m (_with_config(delayed_func, config), args, kwargs)\n\u001b[0;32m 65\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m delayed_func, args, kwargs \u001b[38;5;129;01min\u001b[39;00m iterable\n\u001b[0;32m 66\u001b[0m )\n\u001b[1;32m---> 67\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__call__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43miterable_with_config\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1952\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m 1946\u001b[0m \u001b[38;5;66;03m# The first item from the output is blank, but it makes the interpreter\u001b[39;00m\n\u001b[0;32m 1947\u001b[0m \u001b[38;5;66;03m# progress until it enters the Try/Except block of the generator and\u001b[39;00m\n\u001b[0;32m 1948\u001b[0m \u001b[38;5;66;03m# reach the first `yield` statement. This starts the aynchronous\u001b[39;00m\n\u001b[0;32m 1949\u001b[0m \u001b[38;5;66;03m# dispatch of the tasks to the workers.\u001b[39;00m\n\u001b[0;32m 1950\u001b[0m \u001b[38;5;28mnext\u001b[39m(output)\n\u001b[1;32m-> 1952\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m output \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreturn_generator \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43moutput\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1595\u001b[0m, in \u001b[0;36mParallel._get_outputs\u001b[1;34m(self, iterator, pre_dispatch)\u001b[0m\n\u001b[0;32m 1592\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[0;32m 1594\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backend\u001b[38;5;241m.\u001b[39mretrieval_context():\n\u001b[1;32m-> 1595\u001b[0m \u001b[38;5;28;01myield from\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_retrieve()\n\u001b[0;32m 1597\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mGeneratorExit\u001b[39;00m:\n\u001b[0;32m 1598\u001b[0m \u001b[38;5;66;03m# The generator has been garbage collected before being fully\u001b[39;00m\n\u001b[0;32m 1599\u001b[0m \u001b[38;5;66;03m# consumed. This aborts the remaining tasks if possible and warn\u001b[39;00m\n\u001b[0;32m 1600\u001b[0m \u001b[38;5;66;03m# the user if necessary.\u001b[39;00m\n\u001b[0;32m 1601\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1699\u001b[0m, in \u001b[0;36mParallel._retrieve\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1692\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_wait_retrieval():\n\u001b[0;32m 1693\u001b[0m \n\u001b[0;32m 1694\u001b[0m \u001b[38;5;66;03m# If the callback thread of a worker has signaled that its task\u001b[39;00m\n\u001b[0;32m 1695\u001b[0m \u001b[38;5;66;03m# triggered an exception, or if the retrieval loop has raised an\u001b[39;00m\n\u001b[0;32m 1696\u001b[0m \u001b[38;5;66;03m# exception (e.g. `GeneratorExit`), exit the loop and surface the\u001b[39;00m\n\u001b[0;32m 1697\u001b[0m \u001b[38;5;66;03m# worker traceback.\u001b[39;00m\n\u001b[0;32m 1698\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_aborting:\n\u001b[1;32m-> 1699\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_raise_error_fast\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1700\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[0;32m 1702\u001b[0m \u001b[38;5;66;03m# If the next job is not ready for retrieval yet, we just wait for\u001b[39;00m\n\u001b[0;32m 1703\u001b[0m \u001b[38;5;66;03m# async callbacks to progress.\u001b[39;00m\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1734\u001b[0m, in \u001b[0;36mParallel._raise_error_fast\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1730\u001b[0m \u001b[38;5;66;03m# If this error job exists, immediatly raise the error by\u001b[39;00m\n\u001b[0;32m 1731\u001b[0m \u001b[38;5;66;03m# calling get_result. This job might not exists if abort has been\u001b[39;00m\n\u001b[0;32m 1732\u001b[0m \u001b[38;5;66;03m# called directly or if the generator is gc'ed.\u001b[39;00m\n\u001b[0;32m 1733\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m error_job \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m-> 1734\u001b[0m \u001b[43merror_job\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_result\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:736\u001b[0m, in \u001b[0;36mBatchCompletionCallBack.get_result\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 730\u001b[0m backend \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparallel\u001b[38;5;241m.\u001b[39m_backend\n\u001b[0;32m 732\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m backend\u001b[38;5;241m.\u001b[39msupports_retrieve_callback:\n\u001b[0;32m 733\u001b[0m \u001b[38;5;66;03m# We assume that the result has already been retrieved by the\u001b[39;00m\n\u001b[0;32m 734\u001b[0m \u001b[38;5;66;03m# callback thread, and is stored internally. It's just waiting to\u001b[39;00m\n\u001b[0;32m 735\u001b[0m \u001b[38;5;66;03m# be returned.\u001b[39;00m\n\u001b[1;32m--> 736\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_return_or_raise\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 738\u001b[0m \u001b[38;5;66;03m# For other backends, the main thread needs to run the retrieval step.\u001b[39;00m\n\u001b[0;32m 739\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:754\u001b[0m, in \u001b[0;36mBatchCompletionCallBack._return_or_raise\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 752\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 753\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstatus \u001b[38;5;241m==\u001b[39m TASK_ERROR:\n\u001b[1;32m--> 754\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n\u001b[0;32m 755\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n\u001b[0;32m 756\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", + "\u001b[1;31mBrokenProcessPool\u001b[0m: A task has failed to un-serialize. Please ensure that the arguments of the function are all picklable." + ] + } + ], "source": [ "# Initialize the PyCaret Evaluator\n", "evaluator = PyCaretEvaluator(dataset=dataset, target=\"LungOpacity\", experiment_name=\"CP_LungOpacity\", filepath=\"./results/lungopacity\")\n", @@ -191,7 +487,7 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] @@ -199,9 +495,9 @@ ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python 3", "language": "python", - "name": "haim" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -213,7 +509,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/notebooks/pneumonia.ipynb b/notebooks/pneumonia.ipynb index 987fe52..ebf799b 100644 --- a/notebooks/pneumonia.ipynb +++ b/notebooks/pneumonia.ipynb @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -74,7 +74,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -100,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "726c2332", "metadata": {}, "outputs": [], @@ -197,9 +197,9 @@ ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python 3", "language": "python", - "name": "haim" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -211,7 +211,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/notebooks/pneumothorax.ipynb b/notebooks/pneumothorax.ipynb index 9fa5231..05f90f3 100644 --- a/notebooks/pneumothorax.ipynb +++ b/notebooks/pneumothorax.ipynb @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "726c2332", "metadata": {}, "outputs": [], @@ -189,9 +189,9 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", - ")\n" + ")" ] } ], From fad7c42e5129cf7a1264684d855ec0e4fe297f6c Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Tue, 27 Aug 2024 10:50:21 -0400 Subject: [PATCH 07/37] Adjustments --- notebooks/pneumonia.ipynb | 2 +- run_experiments.py | 55 +++++++++++++-------------------------- 2 files changed, 19 insertions(+), 38 deletions(-) diff --git a/notebooks/pneumonia.ipynb b/notebooks/pneumonia.ipynb index ebf799b..b2b16b6 100644 --- a/notebooks/pneumonia.ipynb +++ b/notebooks/pneumonia.ipynb @@ -189,7 +189,7 @@ " outer_strategy='kfold',\n", " session_id=42,\n", " model='xgboost',\n", - " optimize='Accuracy',\n", + " optimize='AUC',\n", " custom_grid=grid_hps\n", ")" ] diff --git a/run_experiments.py b/run_experiments.py index c4ce522..eac6ea3 100644 --- a/run_experiments.py +++ b/run_experiments.py @@ -21,7 +21,7 @@ from src.data import constants from src.data.dataset import Task, HAIMDataset from src.data.sampling import Sampler -from src.evaluation.evaluating import Evaluator +from src.evaluation.pycaret_evaluator import PyCaretEvaluator from src.evaluation.tuning import SklearnTuner from src.utils.metric_scores import * @@ -69,48 +69,29 @@ def run_single_experiment(prediction_task: str, constants.IMG_ID, constants.GLOBAL_ID) - # Sample the dataset using a 5-folds cross-validation method - sampler = Sampler(dataset, constants.GLOBAL_ID, 5) - _, masks = sampler() - - # Initialization of the list containing the evaluation metrics - evaluation_metrics = [BinaryAccuracy(), - BinaryBalancedAccuracy(), - BinaryBalancedAccuracy(Reduction.GEO_MEAN), - Sensitivity(), - Specificity(), - AUC(), - BrierScore(), - BinaryCrossEntropy()] - # Define the grid of hyper-parameters for the tuning grid_hps = {'max_depth': [5, 6, 7, 8], 'n_estimators': [200, 300], 'learning_rate': [0.3, 0.1, 0.05], } - # Save the fixed parameters of the model - fixed_params = {'seed': 42, - 'eval_metric': 'logloss', - 'verbosity': 1 - } - - # Launch the evaluation - evaluation = Evaluator(dataset=dataset, - masks=masks, - metrics=evaluation_metrics, - model=XGBClassifier, - tuner=SklearnTuner, - tuning_metric=AUC(), - hps=grid_hps, - n_tuning_splits=5, - fixed_params=fixed_params, - filepath=constants.EXPERIMENT_PATH, - weight='scale_pos_weight', - evaluation_name=evaluation_name - ) - evaluation.evaluate() + # Initialize the PyCaret Evaluator + evaluator = PyCaretEvaluator(dataset=dataset, experiment_name= evaluation_name, filepath="constants.EXPERIMENT_PATH") + + # Model training and results evaluation + evaluator.run_experiment( + train_size=0.8, + fold=5, + fold_strategy='kfold', + outer_fold=5, + outer_strategy='kfold', + session_id=42, + model='xgboost', + optimize='AUC', + custom_grid=grid_hps + ) + if __name__ == '__main__': # Get arguments passed @@ -143,4 +124,4 @@ def run_single_experiment(prediction_task: str, dataset=df, evaluation_name=task + '_' + str(count)) bar.update() - Evaluator.get_best_of_experiments(task, constants.EXPERIMENT_PATH, count) + PyCaretEvaluator.get_best_of_experiments(task, constants.EXPERIMENT_PATH, count) From 570c6961f8304844d6e90b46354cd0ded448b7b9 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Wed, 28 Aug 2024 13:27:51 -0400 Subject: [PATCH 08/37] Printing results --- notebooks/consolidation.ipynb | 1683 ++++++++++++++++- notebooks/enlarged-cardiomediastinum.ipynb | 1683 ++++++++++++++++- notebooks/fracture.ipynb | 1885 ++++++++++---------- notebooks/lung-lesion.ipynb | 1874 +++++++++---------- 4 files changed, 5124 insertions(+), 2001 deletions(-) diff --git a/notebooks/consolidation.ipynb b/notebooks/consolidation.ipynb index aa04621..85eec1e 100644 --- a/notebooks/consolidation.ipynb +++ b/notebooks/consolidation.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "9ba42585", "metadata": {}, "outputs": [], @@ -173,10 +173,1671 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 1/5\n", + "Configuring PyCaret for outer fold 1\n", + "Creating model xgboost for outer fold 1\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.87940.88120.95480.90240.92790.56070.5692
10.89340.92330.97200.90400.93680.59890.6154
20.89670.91690.96560.91260.93830.62100.6305
30.91240.95160.97410.92240.94760.68280.6923
40.90190.92890.97200.91300.94150.63900.6513
Mean0.89680.92040.96770.91090.93840.62050.6317
Std0.01080.02280.00700.00720.00640.04070.0406
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.88460.88830.96130.90300.93120.57470.5858
10.90210.92400.97420.91150.94180.63620.6504
20.90720.93070.97420.91700.94470.65680.6687
30.91590.95620.97410.92620.94960.69790.7060
40.90890.93740.97840.91530.94580.66210.6769
Mean0.90380.92730.97250.91460.94260.64550.6576
Std0.01050.02230.00580.00760.00620.04060.0401
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.88580.91660.95740.90740.93170.58390.5919
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 2/5\n", + "Configuring PyCaret for outer fold 2\n", + "Creating model xgboost for outer fold 2\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.89860.89790.96990.91110.93960.62630.6383
10.88990.91180.97200.90040.93490.58230.6006
20.93350.95860.97630.94390.95980.76630.7700
30.90370.92420.97630.91160.94290.63790.6535
40.89140.88820.95910.91190.93490.60980.6169
Mean0.90340.91610.97070.91580.94240.64450.6559
Std0.01580.02450.00640.01470.00920.06370.0599
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90380.89930.97200.91500.94260.64700.6585
10.88810.90930.96340.90510.93330.58760.5989
20.93870.96370.97420.95170.96280.78880.7906
30.91770.92610.98710.91800.95130.68800.7074
40.90370.89100.97840.90980.94290.63820.6558
Mean0.91040.91790.97500.91990.94660.66990.6822
Std0.01700.02570.00780.01650.00990.06750.0641
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.87790.90130.96140.89600.92760.54270.5566
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 3/5\n", + "Configuring PyCaret for outer fold 3\n", + "Creating model xgboost for outer fold 3\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.88640.90670.96130.90490.93220.58280.5932
10.91260.92440.96990.92610.94750.68790.6945
20.88090.90050.96990.89310.92990.53900.5600
30.91770.94380.98280.92140.95110.69310.7078
40.90540.92210.98060.91000.94400.64330.6623
Mean0.90060.91950.97290.91110.94090.62920.6435
Std0.01450.01510.00790.01180.00840.06000.0576
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.89690.91580.97420.90600.93890.61200.6289
10.91080.92250.97850.91730.94690.67000.6839
20.88440.90860.96990.89660.93180.55630.5754
30.92120.95390.98280.92510.95310.70860.7214
40.91240.91720.98060.91730.94790.67510.6902
Mean0.90510.92360.97720.91250.94370.64440.6600
Std0.01300.01580.00460.01000.00750.05390.0517
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.91710.94370.97660.92560.95040.69980.7092
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 4/5\n", + "Configuring PyCaret for outer fold 4\n", + "Creating model xgboost for outer fold 4\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90380.92650.97200.91500.94260.64700.6585
10.88990.90600.97630.89720.93510.57520.5985
20.89670.92560.97200.90760.93870.61160.6265
30.91940.92820.97850.92670.95190.70570.7157
40.88790.88970.95910.90820.93290.59400.6023
Mean0.89950.91520.97160.91090.94030.62670.6403
Std0.01140.01510.00680.00970.00670.04600.0433
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90730.92970.96990.92040.94450.66520.6737
10.88990.90530.98280.89260.93550.56420.5966
20.91590.93160.98490.91780.95020.68270.7006
30.91770.93130.98060.92310.95100.69560.7082
40.89320.90630.96120.91210.93600.61460.6224
Mean0.90480.92080.97590.91320.94340.64450.6603
Std0.01140.01230.00900.01090.00670.04870.0438
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.91150.93540.98210.91530.94750.66860.6857
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 5/5\n", + "Configuring PyCaret for outer fold 5\n", + "Creating model xgboost for outer fold 5\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.89340.89450.96560.90890.93640.60850.6193
10.90910.92060.97420.91890.94570.66760.6786
20.90540.90670.97200.91680.94360.65170.6626
30.91070.93080.98060.91570.94700.66420.6805
40.89140.88670.97200.90200.93570.59050.6079
Mean0.90200.90790.97290.91250.94170.63650.6498
Std0.00810.01620.00480.00620.00470.03120.0304
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90730.90280.98280.91040.94520.64860.6690
10.91260.92090.97850.91920.94790.67780.6908
20.90020.91420.97630.90800.94090.62160.6391
30.90890.93730.97630.91720.94580.66190.6748
40.90020.88850.97630.90780.94080.62500.6423
Mean0.90580.91270.97810.91250.94410.64700.6632
Std0.00490.01650.00250.00480.00280.02140.0198
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.90820.94800.97800.91490.94540.65870.6734
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final metrics table:\n", + " Metric Mean Std Dev\n", + "0 Accuracy 0.89998 0.009589\n", + "1 AUC 0.90718 0.015962\n", + "2 Recall 0.97204 0.007752\n", + "3 Prec. 0.91096 0.006959\n", + "4 F1 0.94048 0.005735\n", + "5 Kappa 0.62950 0.036245\n", + "6 MCC 0.64318 0.036501\n" + ] + } + ], "source": [ "# Initialize the PyCaret Evaluator\n", "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Consolidation\", experiment_name=\"CP_Consolidation\", filepath=\"./results/consolidation\")\n", @@ -185,9 +1846,9 @@ "evaluator.run_experiment(\n", " train_size=0.8,\n", " fold=5,\n", - " fold_strategy='kfold',\n", + " fold_strategy='stratifiedkfold',\n", " outer_fold=5,\n", - " outer_strategy='kfold',\n", + " outer_strategy='stratifiedkfold',\n", " session_id=42,\n", " model='xgboost',\n", " optimize='AUC',\n", @@ -198,9 +1859,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -212,7 +1873,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/notebooks/enlarged-cardiomediastinum.ipynb b/notebooks/enlarged-cardiomediastinum.ipynb index 8174f64..5330d78 100644 --- a/notebooks/enlarged-cardiomediastinum.ipynb +++ b/notebooks/enlarged-cardiomediastinum.ipynb @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -76,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -102,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -174,10 +174,1671 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 1/5\n", + "Configuring PyCaret for outer fold 1\n", + "Creating model xgboost for outer fold 1\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.86370.89280.96080.86980.91300.60200.6182
10.82930.86230.92790.85500.88990.51230.5209
20.86340.88870.94100.88310.91110.61770.6235
30.87070.87230.97060.87100.91810.61590.6367
40.86340.88020.97710.85920.91440.58380.6145
Mean0.85810.87930.95550.86760.90930.58630.6028
Std0.01470.01110.01840.00990.01000.03900.0416
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85890.89580.95420.86900.90970.59060.6043
10.82930.86660.92130.85930.88920.51890.5249
20.86100.88860.93440.88510.90910.61470.6188
30.87800.87460.97390.87650.92260.63900.6591
40.86830.88540.98040.86210.91740.59870.6301
Mean0.85910.88220.95280.87040.90960.59240.6075
Std0.01640.01040.02250.00950.01140.04030.0450
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.85510.90390.95400.86530.90750.57770.5926
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 2/5\n", + "Configuring PyCaret for outer fold 2\n", + "Creating model xgboost for outer fold 2\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.82970.85040.93460.85120.89100.50590.5177
10.86620.90810.97060.86590.91530.60220.6250
20.83900.86270.93770.85890.89660.53700.5477
30.84150.89960.93770.86140.89800.54560.5556
40.84630.86050.98370.83840.90530.51210.5616
Mean0.84450.87620.95290.85520.90120.54060.5615
Std0.01210.02310.02030.00960.00840.03420.0351
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.83210.84890.93790.85160.89270.51130.5241
10.86860.91750.97390.86630.91690.60800.6326
20.85370.85620.95080.86570.90620.57620.5896
30.85120.90370.94750.86530.90450.57060.5829
40.86100.87460.98690.85070.91380.56520.6094
Mean0.85330.88020.95940.85990.90680.56630.5877
Std0.01220.02660.01810.00720.00840.03130.0362
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.87050.91480.95610.88050.91680.62770.6386
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 3/5\n", + "Configuring PyCaret for outer fold 3\n", + "Creating model xgboost for outer fold 3\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.84910.87230.96080.85470.90460.55000.5722
10.83940.87690.94440.85500.89750.53090.5452
20.83410.87880.94100.85160.89410.51640.5303
30.83660.86940.94430.85210.89580.52180.5369
40.83410.84730.93460.85630.89380.51920.5297
Mean0.83870.86890.94500.85390.89720.52770.5429
Std0.00560.01130.00860.00180.00400.01220.0157
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85890.88300.96080.86470.91020.58490.6030
10.82970.86820.95750.83710.89330.48080.5087
20.84630.89560.95080.85800.90200.55040.5663
30.84150.86730.95740.84880.89980.52620.5489
40.83410.86470.93460.85630.89380.51920.5297
Mean0.84210.87580.95220.85300.89980.53230.5513
Std0.01020.01180.00940.00940.00620.03450.0322
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.87990.90380.96440.88480.92290.65310.6657
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 4/5\n", + "Configuring PyCaret for outer fold 4\n", + "Creating model xgboost for outer fold 4\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.83700.88270.93790.85670.89550.52870.5401
10.83940.85750.96080.84480.89910.51400.5405
20.85370.88100.94430.87010.90570.58200.5918
30.84150.85870.92160.87310.89670.55740.5612
40.83660.88070.93790.85670.89550.52470.5361
Mean0.84160.87210.94050.86030.89850.54140.5539
Std0.00630.01150.01260.01020.00380.02490.0208
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85890.88880.95100.87130.90940.59340.6052
10.84180.86780.96410.84530.90080.51970.5481
20.84390.86860.94430.85970.90000.54800.5607
30.86100.86160.95100.87390.91080.59840.6095
40.82440.90040.94440.84010.88920.47260.4920
Mean0.84600.87750.95090.85800.90200.54640.5631
Std0.01330.01470.00720.01350.00780.04710.0429
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.84090.88760.94340.85710.89820.53770.5509
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 5/5\n", + "Configuring PyCaret for outer fold 5\n", + "Creating model xgboost for outer fold 5\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85400.88600.94440.87050.90600.58230.5921
10.85160.87580.93460.87460.90360.58240.5885
20.85610.87560.93770.87730.90650.59580.6021
30.85370.89070.93140.87960.90480.59010.5946
40.83900.88290.93460.86140.89660.53660.5458
Mean0.85090.88220.93660.87270.90350.57740.5846
Std0.00610.00580.00440.00640.00360.02100.0199
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.87350.89600.96410.87800.91900.63300.6477
10.86620.89530.95100.87920.91370.61840.6279
20.84390.86520.93110.86850.89870.56010.5666
30.86340.89110.94440.88110.91170.61220.6194
40.84150.89250.93460.86400.89800.54520.5537
Mean0.85770.88800.94510.87420.90820.59380.6031
Std0.01270.01160.01180.00670.00840.03460.0364
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.84400.85450.95180.85500.90080.54070.5581
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final metrics table:\n", + " Metric Mean Std Dev\n", + "0 Accuracy 0.85646 0.015014\n", + "1 AUC 0.88250 0.019545\n", + "2 Recall 0.95360 0.010194\n", + "3 Prec. 0.86692 0.009822\n", + "4 F1 0.90820 0.009547\n", + "5 Kappa 0.58264 0.044186\n", + "6 MCC 0.59686 0.044837\n" + ] + } + ], "source": [ "# Initialize the PyCaret Evaluator\n", "evaluator = PyCaretEvaluator(dataset=dataset, target=\"EnlargedCardiomediastinum\", experiment_name=\"CP_EnlargedCardiomediastinum\", filepath=\"./results/enlargedcardiomediastinum\")\n", @@ -186,9 +1847,9 @@ "evaluator.run_experiment(\n", " train_size=0.8,\n", " fold=5,\n", - " fold_strategy='kfold',\n", + " fold_strategy='stratifiedkfold',\n", " outer_fold=5,\n", - " outer_strategy='kfold',\n", + " outer_strategy='stratifiedkfold',\n", " session_id=42,\n", " model='xgboost',\n", " optimize='AUC',\n", @@ -199,9 +1860,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -213,7 +1874,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index c0c537b..fa29e9a 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -74,7 +74,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -100,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "id": "726c2332", "metadata": {}, "outputs": [ @@ -199,21 +199,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -228,80 +228,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95830.81251.00000.95770.97840.38640.4893
10.92960.53641.00000.92960.96350.00000.0000
20.92960.74851.00000.92960.96350.00000.0000
30.94370.66971.00000.94290.97060.31730.4342
40.94370.65761.00000.94290.97060.31730.4342
Mean0.94100.68491.00000.94050.96930.20420.2716
Std0.01070.09310.00000.01050.00550.16860.222600.94440.78211.00000.94370.97100.31750.4344
10.94370.69401.00000.94370.97100.00000.0000
20.97180.85071.00000.97100.98530.65370.6968
30.95770.83941.00000.95650.97780.55350.6186
40.94370.54551.00000.94290.97060.31730.4342
Mean0.95230.74231.00000.95150.97510.36840.4368
Std0.01120.11300.00000.01100.00570.22650.2414
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -338,21 +338,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -367,80 +367,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95830.81251.00000.95770.97840.38640.4893
10.92960.53641.00000.92960.96350.00000.0000
20.92960.74851.00000.92960.96350.00000.0000
30.94370.66971.00000.94290.97060.31730.4342
40.94370.65761.00000.94290.97060.31730.4342
Mean0.94100.68491.00000.94050.96930.20420.2716
Std0.01070.09310.00000.01050.00550.16860.222600.97220.87761.00000.97100.98530.73630.7633
10.95770.84701.00000.95710.97810.38620.4892
20.97180.89181.00000.97100.98530.65370.6968
30.95770.93941.00000.95650.97780.55350.6186
40.94370.59701.00000.94290.97060.31730.4342
Mean0.96060.83061.00000.95970.97940.52940.6004
Std0.01060.12050.00000.01050.00550.15770.1234
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -461,7 +461,6 @@ "output_type": "stream", "text": [ "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -470,57 +469,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.98210.96541.00000.98150.99070.79100.80890Extreme Gradient Boosting0.93750.70881.00000.93750.96770.00000.0000
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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m5sbPv74Y9SoUSM/L9fEmjVrMGXKFMycORNvvPEGrK2tsX//fpN9fvnlF1StWhXVqlVDRkYGBg0ahKNHj+L999/HmjVr4OnpiWHDhonFbnh4OEaNGoUaNWrg888/x/z58xEaGorhw4fDaDTmyODu7o5du3bBzc0Nr7/+Onbt2oXq1avj77//Rt++fQEACxYswLx58xAZGYk+ffrkKJqffR1169Z97uv18PDArFmzcPXqVfTp0wdXrlzB8uXLcxSjR48eRePGjfMcQrF48WK0b9/epO3Z7yWdToeIiAjMnz8frq6uePPNN8V9Tp48iVdffRVarTbXc7dv3x6jR4+GtbV1jseioqLw9ttvIy0tDYsWLcKmTZvQoUMH7NixA9u3bwfw4mtgNBrx3nvvIS0tDUuWLMG6devg6OiIkSNH4t69ezme85NPPkHPnj0BALt27cp1mExsbCz69OmDq1ev4uOPP8by5cthNBrx9ttv57heq1evxrvvvoslS5bgtddee+7XmIheHsfoElm4s2fPonr16iZtMpkMfn5+WLlypVikPnjwAADg4+OT5/kqVKgg9ipm35z2omPy8ujRIzg5OcHGxqbA53iefv36oV27duL2G2+8gQMHDuD9998HAKSkpOD333/H6NGjAQA//vgjQkJCsHv3btSuXRsA0KxZMwwYMADLli3D999/j8uXLyM9PR3vvfcePDw8AACenp44evQoUlNTYWtra5JBrVajTp06UKvVcHZ2Rp06dQAAy5cvR4UKFbBx40YoFAoAQHBwMNq0aYNVq1Zh5cqVz30deWnfvj0OHjyI3377DYMGDUK9evVMHk9ISEBCQgJ8fX1zHPvfG9BkMpmYDcgax7pv374c+yxduhTOzs4AgLi4OGRkZBT4e+LmzZsIDAzEypUrxa9lkyZNcOrUKZw5cwbDhw9/4TVIS0vD3bt3MWrUKPENVK1atbBmzRrodLocz1mlShV4enoCgHh9sn8esm3btg3x8fH45ptv4O3tDSDre6N9+/ZYuXIlVq1aJe775ptvokePHgV6/URkHha6RBauevXqmD17NoCs3rLPPvsMmZmZ+Oyzz1CpUiVxP+H/79bP7aPsZykUihz75taTmV8KhQIGg6HAx+clMDDQZLtLly744YcfcPnyZdSqVQtHjx6FTqdD586dAQCnT5+Gm5sbqlevblL0tWjRAkuWLEFCQgJq164NKysr9OzZE+3atUOzZs3E2SnyKzU1Ff/++y/GjBljUkja29ujRYsWJh+x5/Y68hIdHY3z589DJpPh0KFDGD16tEmP7vOu1b1799C2bVuTNm9vb5NZL1q0aCG+KRAEAbGxsTh48CA++OADpKWloXfv3uLrKeg1DQ4ORnBwMDIzM3H79m3cu3cPN2/eRGxsLBwdHQHghdfAxsYGVapUwccff4yTJ08iODgYzZo1w9SpUwuUCcj63ggMDISHh4f4vSGXy9GsWTP89NNPJvuac72I6OWw0CWycDY2NqhZs6a4Xbt2bXTu3BlDhgzB3r17xZ647F6qhw8f5nm+8PBwcd9y5cq98JjY2FjY2tpCrVbn+ri3tzeOHz+OlJSU5/bqPnr0SOxxM8d/Pxpv1KgRPDw8sH//ftSqVQv79+9HUFCQeO74+HhER0fn6AHPFh0djSpVquCrr77Cxo0bsWfPHmzfvh329vbo168fJkyYYDJLwfMkJSVBEAS4urrmeMzV1RVJSUl5vo7nMRqN+PDDD6HX67Fy5UpMmDABM2fONOkddnJygrW1dY5r5uXlhT179ojba9euzTGe2dHR0eR7CQCaN2+OqKgoLF26FD169ICDgwNsbGwQERHx3JypqanIzMzMdXyv0WjEihUrsHPnTqSmpsLLywu1atWClZWVuI+Pj88Lr8HmzZvx+eef4/Dhw9i3bx9UKhVat26N2bNn5/q8LxIfH4979+4993sjLS1N/Hd+rxcRvTyO0SUiE66urpg5cyYiIyNNblKqUaMG3N3d8euvvz732PDwcFy7dk0cxxsYGAhXV1f88ccfzz1mxowZaN68ea4fGQNZPXhGoxF//vlnro/HxsaiVatWYlaZTJajt/B5NzX9l1wuR6dOnfDrr78iLi4Op06dEscoA4CdnR18fX2xZ8+eXP/L/jg++2PwM2fOYOvWrXjttdewfv36PL92z7Kzs4NMJkNMTEyOx6Kjo8WeS3Nt3LgRf/31F2bNmoU33ngDQ4YMwa+//ppjLtiWLVvi5MmTJnMcq9Vq1KxZU/zPnAw1atRAYmIi4uLiAGRd0zNnziAjIyPX/Xfv3o3GjRvj6tWrub6GrVu3YsaMGTh37hyOHz+OVatWiW/Isr3oGmSPVz558iT27duHoUOH4rfffsNnn32W79f1LDs7OwQFBT33e+N5b+SIqGix0CWiHNq1a4emTZvil19+wf/+9z8AWUXgmDFjcOrUKXzzzTc5jklPT8e0adNgZ2eHfv36iccMHjwYx48fz3Vhh7///hsnTpxAu3btnlsIBAcHw8/PD59++qlYKD1r+fLl0Ov16NSpE4CsHurscaDZzp8/n+/X3qVLFzx69Ahr166FQqEw+bg+KCgIkZGRcHFxMSn6Tp06hS+++AIKhQJbt25FixYtoNPpoFar8eqrr2Lu3LkAkGcv5rOsra1Ro0YNHDx40KRoT0pKwvHjx1G/fv18v55s//zzD1avXo3u3buLN5GNHz8eAQEBmDdvnskiDcOHD4der8eMGTNyfQOSnp6eY1GHvPz7779wcHCAk5MTAGDIkCGIj4/PtaiMjo7G5s2bUaVKlVx7R8+fP48qVaqgR48esLOzAwA8fvwYN2/eFIddvOgaXLhwAU2aNMHly5chk8kQGBiI999/H35+fvm+Rv8VFBSE0NBQVKxY0eR748cff8SePXtMhqAQUfHh0AUiytW0adPQuXNnzJs3Dz/88AMUCgXeeust3LlzB7NmzcLZs2fRvn17ODg44O7du9i2bRuio6Px2WefiTcAAcDgwYNx9uxZjB07Fr1798brr78OuVyOs2fPYseOHQgMDMSkSZOem0OpVGLJkiUYMmQIevToIS4YERsbi7179+LPP//EpEmTxPGXLVq0wI4dOzB9+nT07NkTN2/exJYtW/JdaPj5+SEwMBBff/013nzzTZObx7p3746vvvoK77zzDkaMGAEvLy/89ddf2LRpE/r37w+VSoXGjRtj2bJlGD16NPr37w+FQoFvv/0WarU6z9kn/mvSpEkYOnQohg8fjn79+iEzMxMbN26ETqcTx8HmV2JiIj744AOUK1cOM2bMENvVajWWLVuG7t27Y/Lkydi5cycUCgX8/f2xdOlSTJ06Fd27d0fPnj3h7+8PvV6PCxcuYM+ePYiJicmxgltsbCwuXrwobqelpWHfvn04ffo0Jk6cKF6DOnXqYPz48fjss89w584ddO3aFU5OTrh16xa+/PJLZGRkPLdntVatWli3bh02btyIOnXq4N69e9iwYQN0Op04POBF18Db2xsajQYffvghxo4dC1dXV/z111+4fv06Bg4caNbXNtvgwYPx448/YvDgwRgyZAicnJxw4MAB7N69+6XG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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -549,21 +528,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -578,80 +557,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95830.86031.00000.95770.97840.38640.4893
10.95770.80301.00000.95650.97780.55350.6186
20.92960.36361.00000.92960.96350.00000.0000
30.94370.77271.00000.94290.97060.31730.4342
40.94370.88481.00000.94290.97060.31730.4342
Mean0.94660.73691.00000.94590.97220.31490.3953
Std0.01070.19080.00000.01040.00550.17960.208800.93060.59701.00000.93060.96400.00000.0000
10.94370.92161.00000.94370.97100.00000.0000
20.94370.77991.00000.94370.97100.00000.0000
30.94370.67161.00000.94370.97100.00000.0000
40.94370.79391.00000.94290.97060.31730.4342
Mean0.94100.75281.00000.94090.96950.06350.0868
Std0.00520.11120.00000.00520.00280.12690.1737
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -688,21 +667,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -717,80 +696,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95830.82721.00000.95770.97840.38640.4893
10.95770.75151.00000.95650.97780.55350.6186
20.92960.36971.00000.92960.96350.00000.0000
30.95770.73031.00000.95650.97780.55350.6186
40.94370.91521.00000.94290.97060.31730.4342
Mean0.94940.71881.00000.94860.97360.36210.4321
Std0.01140.18620.00000.01100.00580.20340.227800.93060.59701.00000.93060.96400.00000.0000
10.94370.92161.00000.94370.97100.00000.0000
20.94370.77991.00000.94370.97100.00000.0000
30.94370.67161.00000.94370.97100.00000.0000
40.94370.79391.00000.94290.97060.31730.4342
Mean0.94100.75281.00000.94090.96950.06350.0868
Std0.00520.11120.00000.00520.00280.12690.1737
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -811,6 +790,7 @@ "output_type": "stream", "text": [ "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -819,57 +799,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95540.87261.00000.95500.97700.27460.39890Extreme Gradient Boosting0.95540.75121.00000.95410.97650.52700.5982
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -898,21 +858,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -927,80 +887,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95830.62871.00000.95770.97840.38640.4893
10.95770.77271.00000.95650.97780.55350.6186
20.94370.59391.00000.94290.97060.31730.4342
30.92960.65761.00000.92960.96350.00000.0000
40.94370.83031.00000.94290.97060.31730.4342
Mean0.94660.69661.00000.94590.97220.31490.3953
Std0.01070.08980.00000.01040.00550.17960.208800.93060.60901.00000.93060.96400.00000.0000
10.97180.73881.00000.97100.98530.65370.6968
20.95770.97391.00000.95710.97810.38620.4892
30.94370.64241.00000.94290.97060.31730.4342
40.95770.77881.00000.95650.97780.55350.6186
Mean0.95230.74861.00000.95160.97520.38210.4478
Std0.01410.12850.00000.01380.00730.22510.2423
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1037,21 +997,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1066,80 +1026,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95830.62871.00000.95770.97840.38640.4893
10.95770.77271.00000.95650.97780.55350.6186
20.94370.59391.00000.94290.97060.31730.4342
30.92960.65761.00000.92960.96350.00000.0000
40.94370.83031.00000.94290.97060.31730.4342
Mean0.94660.69661.00000.94590.97220.31490.3953
Std0.01070.08980.00000.01040.00550.17960.208800.93060.60901.00000.93060.96400.00000.0000
10.97180.73881.00000.97100.98530.65370.6968
20.95770.97391.00000.95710.97810.38620.4892
30.94370.64241.00000.94290.97060.31730.4342
40.95770.77881.00000.95650.97780.55350.6186
Mean0.95230.74861.00000.95160.97520.38210.4478
Std0.01410.12850.00000.01380.00730.22510.2423
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1169,57 +1129,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95500.90321.00000.95450.97670.27450.39890Extreme Gradient Boosting0.95500.78161.00000.95410.97650.42840.5221
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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hIeH4+Pjw4oVK+jTpw81atSgfv36zJw5ky5dujBx4kT5/15QUBB//fUXGzduxMnJierVq2Nra8uaNWuIiopi7969hXi0BWP//v307NkTHR0djhw58l7biI+Px9vbmxkzZtC/f3/q1KmDqakp3t7eVK9eneXLlxdIrFu2bKFDhw64urpiamrKwoULOXnyJPHx8Sptnz9/zpUrVxg6dCg1a9akTZs22Nvby19ktm/fjrW1NSNHjqR27dqMHTuW0qVLs2/fvgKJ9UMUu0S3MGRlZTF37lxat27NvHnzlF778ssvCykqQRCET8/du3cxMTHhxIkTODo6Ym1tzezZs4mMjMTd3R0rKyuGDh0qjxRlZGQwb9487O3tMTMzw9HRkZ07d8rbS0lJYerUqdja2mJra8uUKVPkxMvExITff/8dW1tbhgwZAsDly5fp1q0bVlZWODo6sn379jfGGxUVxYABA7C2tsbCwoLu3bsTHR0NwPfff8/SpUuV2nt4eMh3NIuMjKRXr140aNCAdu3asXXrVrndsmXLGDZsGD169KBJkyZcuHCBhIQEfvrpJxo3boy5uTlubm5cvHhRXic+Pp6+ffvKJQbr1q1TOlUeEhKCu7s7DRo0oGPHju+ViGlpaaGtrY22ds4lPrt378bMzIxmzZqptB02bBgJCQmcOnUKgICAANq2bUuNGjWU2lWsWBFfX1++/fZbtftMSUlh9uzZ2NnZqe3D8+fPy23zlgecP38eR0dHpk2bho2NDcuXL8fExEQpkYuLi8PU1JQHDx4AsGPHDvn3rlevXty8efOd35uoqCgiIyOxtbXF3t6egICAd143r/3791OuXDk6duyotFxTU5MFCxYwatQotev16tVLpdzExMSEXr16qW1/9epVGjVqJD+vUqUKX331FVevXlVpq6enR8mSJdmzZw+ZmZnExMRw6dIl6tWrB+T87jVo0EBur6GhgbGxMVeuXMnn0Rc8keh+BFpaWoSEhJCdnc3GjRvfWAMjCILwX0tMuvPWR17Ziqy3tn+cfE9pncysdLXbeldr1qzBx8eHWbNmsXnzZjw9PRkzZgzr1q3jypUrchKxZs0aTpw4wbJlyzh8+DCurq7MmjWLR48eATB58mQuXryIj48P69ev5+LFi/z222/yfv766y+2b9+Ol5cX0dHR9OnTh8aNG7Nnzx5GjBjBggUL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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -1248,21 +1188,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1277,80 +1217,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97220.68571.00000.97220.98590.00000.0000
10.91550.69741.00000.91550.95590.00000.0000
20.97180.96671.00000.97060.98510.73610.7631
30.94370.74251.00000.94370.97100.00000.0000
40.97180.80971.00000.97100.98530.65370.6968
Mean0.95500.78041.00000.95460.97660.27790.2920
Std0.02260.10280.00000.02230.01180.34140.358200.94440.56421.00000.94370.97100.31750.4344
10.94370.52611.00000.94370.97100.00000.0000
20.97180.80221.00000.97100.98530.65370.6968
30.92960.80001.00000.92960.96350.00000.0000
40.94370.98181.00000.94290.97060.31730.4342
Mean0.94660.73491.00000.94620.97230.25770.3131
Std0.01380.16880.00000.01350.00710.24360.2730
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1387,21 +1327,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1416,80 +1356,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97220.56431.00000.97220.98590.00000.0000
10.92960.69741.00000.92860.96300.26800.3934
20.98590.95151.00000.98510.99250.88150.8877
30.94370.70521.00000.94370.97100.00000.0000
40.97180.80601.00000.97100.98530.65370.6968
Mean0.96060.74491.00000.96010.97950.36060.3956
Std0.02070.12870.00000.02080.01090.35380.359400.94440.56421.00000.94370.97100.31750.4344
10.94370.52611.00000.94370.97100.00000.0000
20.97180.80221.00000.97100.98530.65370.6968
30.92960.80001.00000.92960.96350.00000.0000
40.94370.98181.00000.94290.97060.31730.4342
Mean0.94660.73491.00000.94620.97230.25770.3131
Std0.01380.16880.00000.01350.00710.24360.2730
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1510,6 +1450,7 @@ "output_type": "stream", "text": [ "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -1518,57 +1459,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.92790.72671.00000.92660.96190.31270.43050Extreme Gradient Boosting0.94590.85301.00000.94550.97200.23800.3675
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -1597,21 +1518,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1626,80 +1547,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95830.54591.00000.95830.97870.00000.0000
10.95770.86671.00000.95590.97740.64680.6913
20.92960.80001.00000.92960.96350.00000.0000
31.00001.00001.00001.00001.00001.00001.0000
40.94370.70521.00000.94370.97100.00000.0000
Mean0.95790.78361.00000.95750.97810.32940.3383
Std0.02360.15270.00000.02360.01220.41860.425600.93060.86870.98510.94290.96350.25620.2863
10.95770.85451.00000.95710.97810.38620.4892
20.94370.84701.00000.94370.97100.00000.0000
30.95770.70911.00000.95650.97780.55350.6186
40.94370.74241.00000.94290.97060.31730.4342
Mean0.94670.80430.99700.94860.97220.30260.3657
Std0.01020.06540.00600.00670.00540.18100.2116
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1736,21 +1657,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1765,80 +1686,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97220.61841.00000.97180.98570.48940.5692
10.95770.88461.00000.95590.97740.64680.6913
20.92960.81821.00000.92960.96350.00000.0000
31.00001.00001.00001.00001.00001.00001.0000
40.94370.70901.00000.94370.97100.00000.0000
Mean0.96060.80601.00000.96020.97950.42720.4521
Std0.02430.13310.00000.02430.01260.38600.394900.94440.83581.00000.94370.97100.31750.4344
10.97180.79851.00000.97100.98530.65370.6968
20.94370.83961.00000.94370.97100.00000.0000
30.95770.67581.00000.95650.97780.55350.6186
40.94370.79091.00000.94290.97060.31730.4342
Mean0.95230.78811.00000.95150.97510.36840.4368
Std0.01120.05940.00000.01100.00570.22650.2414
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1867,57 +1788,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96400.80701.00000.96260.98100.64980.69380Extreme Gradient Boosting0.95500.65521.00000.95410.97650.42840.5221
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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D2CLbglYqewR5N1WfExERESWa8iQIbh69SoGDx6MgIAAqcOhB7BFtwRstY5oWr0HmlbvAVuto9ThEBERlYqIuHP4LexLnL/1BwTBJHU45VJ0dDReeOEFXLx4USyTyWR4++23meSWQ2zRJSIiIgBAdPIVRMafQ1zaTdTzaSt1OOVOZmYmOnfujDt37uD27ds4cOAA1Gq11GFRIdiiS0RERADur4jmasvBaAWxsrLC5MmTIZPJ0K5dOwiCIHVI9Bhs0S2BtKxEXLx9BABQ1zsUdlpOv0JERBVbdo4Bybq7AAA3zp8run37Nry9vcXtV155Ba1atUJISIiEUVFRsUW3BLKy03Ep5i9civkLWdnpUodDRET0xBLToyEgt4XShUv/IjU1FRMnTkTLli1x48YNsVwulzPJrUCY6BIRERHi0/NWRJPBlYkurl+/jq+//hrp6el49913pQ6HSohdF4iIiEjsn+to7QaVkgsdNGjQANOmTcONGzewePFiqcOhEmKiS0RERGKLrqUORPvnn3+QkpKCLl26iGUzZsyAXM6b3xUZrx4REZGFy8rOQFpWIgDA1QIHoq1duxY9evTA+PHjERsbK5Yzya342KJLRERk4TRKawxq+hbi027Bxdb78QdUMvXq1YPJZEJ2djYuXboEd3d3qUOiUsJEl4iIyMLJZDLYaBxho3GUOpSnQhAEyGQycbtdu3ZYvnw5unTpAh8fy2vRrsyY6BIRERWTIJggQIBcphDLknV3kZaVhOwcPYw5epgKWELX06E6HK09xO2oxEvI0KcU+lw+TnXMlpu/HncWBmNmocdUdwuGRmktbl+580+B8TzI36Mp5HJFoXUqg/DwcEycOBGzZ89Gu3btxPKXXnpJwqiorDDRLQEbjROa13hWfExEROVbjskIY44B2Tn6e/8MMIqP9bDVOsHToYZY/0bCBUTEnb1Xx3Aveb13vEkPY042GlTthAZVO4vHnL/1B67Gnio0jpa1+pklumExx3A76Uqhx3QOesks0T0XdRjJuthHHwDA06GGWaL7T8SPMOYYCj2mpnsjyFG5E93s7GwMGDAAt27dwqRJk3D06FHY29tLHRaVISa6JWCttkNglVZSh0FEVCkJgglGUzayc/TIMRnNVp/MNKThevxZxBujcCEmDjK5ILag5iahBjhYuaJFzb7iMddiT+PPKzsKfc4a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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -1929,13 +1830,13 @@ "text": [ "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.96386 0.007613\n", - "1 AUC 0.69022 0.120949\n", + "0 Accuracy 0.94444 0.016983\n", + "1 AUC 0.69672 0.147700\n", "2 Recall 1.00000 0.000000\n", - "3 Prec. 0.96342 0.007834\n", - "4 F1 0.98136 0.004054\n", - "5 Kappa 0.32972 0.189638\n", - "6 MCC 0.40742 0.230368\n" + "3 Prec. 0.94392 0.016494\n", + "4 F1 0.97106 0.008696\n", + "5 Kappa 0.27426 0.303174\n", + "6 MCC 0.32642 0.326835\n" ] } ], @@ -1947,9 +1848,9 @@ "evaluator.run_experiment(\n", " train_size=0.8,\n", " fold=5,\n", - " fold_strategy='kfold',\n", + " fold_strategy='stratifiedkfold',\n", " outer_fold=5,\n", - " outer_strategy='kfold',\n", + " outer_strategy='stratifiedkfold',\n", " session_id=42,\n", " model='xgboost',\n", " optimize='AUC',\n", @@ -1960,9 +1861,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -1974,7 +1875,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/notebooks/lung-lesion.ipynb b/notebooks/lung-lesion.ipynb index aa6e8c1..ef37b06 100644 --- a/notebooks/lung-lesion.ipynb +++ b/notebooks/lung-lesion.ipynb @@ -200,21 +200,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -229,80 +229,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.88421.00000.95800.97850.00000.0000
10.98320.79131.00000.98290.99140.65900.7010
20.98320.72651.00000.98320.99150.00000.0000
30.95800.83331.00000.95760.97840.27530.3995
40.95800.81711.00000.95760.97840.27530.3995
Mean0.96810.81051.00000.96790.98360.24190.3000
Std0.01240.05180.00000.01240.00640.24220.268600.97480.91401.00000.97440.98700.56090.6243
10.95800.84741.00000.95800.97850.00000.0000
20.95800.86141.00000.95800.97850.00000.0000
30.95800.75091.00000.95800.97850.00000.0000
40.95800.92481.00000.95760.97840.27530.3995
Mean0.96130.85971.00000.96120.98020.16720.2048
Std0.00670.06190.00000.00660.00340.22380.2607
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -339,21 +339,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -368,80 +368,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.88421.00000.95800.97850.00000.0000
10.98320.79131.00000.98290.99140.65900.7010
20.98320.72651.00000.98320.99150.00000.0000
30.95800.83331.00000.95760.97840.27530.3995
40.95800.81711.00000.95760.97840.27530.3995
Mean0.96810.81051.00000.96790.98360.24190.3000
Std0.01240.05180.00000.01240.00640.24220.268600.97480.91401.00000.97440.98700.56090.6243
10.95800.84741.00000.95800.97850.00000.0000
20.95800.86141.00000.95800.97850.00000.0000
30.95800.75091.00000.95800.97850.00000.0000
40.95800.92481.00000.95760.97840.27530.3995
Mean0.96130.85971.00000.96120.98020.16720.2048
Std0.00670.06190.00000.00660.00340.22380.2607
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -471,57 +471,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.94620.82951.00000.94570.97210.27230.39700Extreme Gradient Boosting0.96770.78931.00000.96740.98340.38950.4918
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAH7CAYAAAAjETxNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAADaWUlEQVR4nOzdd3hT5fvH8Xdmk+5JW1qgrJay97IgW2TIEkQF8SeIoICDryKCCAoKAiqCyFAUFRVFBQcOBBzgQmTInoUy29I90yTn90clEFpKCy2nbe7XdXGRc3LOySc9TXL3yXOeR6MoioIQQgghhBCVjFbtAEIIIYQQQpQFKXSFEEIIIUSlJIWuEEIIIYSolKTQFUIIIYQQlZIUukIIIYQQolKSQlcIIYQQQlRKUugKIYQQQohKSQpdIYQQQghRKUmhK4QQQgghKiUpdIVwYcOHDycqKsrpX7169WjevDkDBw5k3bp1he63adMmRo0aRZs2bWjcuDG33XYbL730EmfPnr3qY33//feMHDmS9u3b07RpU/r06cPixYvJyMgoVta0tDQWLVpE3759adasGe3atWPEiBFs2rTpup57efPHH39w22230bBhQ0aNGlWqxz548CCNGjVi5MiRFDYZ5uzZs2nUqBH79u1zWn/06FFeeOEFbrvtNpo0aUKLFi0YOnQoH374IVar1WnbLl26FPg9atOmDWPGjOHAgQOF5vr333958skn6dSpE40bN6Zbt248++yzxMXFOW0XFRXFwoULb/CnUDILFy4kKirKsZyRkcGYMWNo0qQJrVq1IjY2lqioKD7//PObmksIUTJ6tQMIIdRVv359nnvuOceyzWbj3LlzvPvuuzz11FP4+vpy6623Ou6fMWMGH374Ib179+aFF17A29ubI0eO8P777/PFF1/w+uuv07ZtW8f2drudJ598ku+++45BgwZx99134+Hhwc6dO3n77bf58ccfeffdd/H29r5qxqNHj/Lggw9it9u57777qFevHllZWXz11VeMHTuWRx99lIcffrhsfkA3ycsvv4zdbmfZsmUEBASU6rGjoqJ44oknmD17NqtWrWLYsGGO+3788Ufeeecdnn32WerXr+9Yv379eiZPnkzt2rX5v//7P2rWrElOTg4///wzL774Ir/++iuLFy9Go9E49rn11lsd58FqtRIfH8+KFSsYMWIE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6u/G1f6QE0KULSl0hRAF9OzZkw4dOvD111/z119/AflF4Lhx49i6dSsfffRRgX1ycnJ45pln8PLy4p577nHsc//99/PTTz8VOrHDH3/8wc8//0zPnj2vWgjExMQQGRnJq6++6iiULjd//nysVit9+/YF8luoL/YDvWj79u3Ffu79+vXj3LlzvPHGG+h0Oqev61u3bs3Zs2cJCAhwKvq2bt3KW2+9hU6n491336Vz585YLBaMRiPt2rXjhRdeACiyFfNy7u7uNGzYkG+//dapaE9PT+enn36iRYsWxX4+F/3zzz8sXLiQgQMHOi4ie/TRR6lXrx4zZ850mqRh9OjRWK1Wpk6dWugfIDk5OQUmdSjKv//+i4+PD35+fgA88MADpKSkFFpUJiQksGLFCurUqVNo6+j27dupU6cOgwYNwsvLC4Dz589z6NAhR7eLa52DHTt20L59e3bv3o1GoyE6OprHH3+cyMjIYp+jK7Vu3Zrjx49Ts2ZNp9+NdevWsWbNGqcuKEKIm0e6LgghCvXMM89wxx13MHPmTL744gt0Oh133XUXR48eZfr06Wzbto1evXrh4+PDsWPHWLlyJQkJCbz22muOC4AA7r//frZt28b48eMZMmQIt956K1qtlm3btvH+++8THR3NxIkTr5pDr9fz8ssv88ADDzBo0CDHhBFJSUl8/vnn/Prrr0ycONHR/7Jz5868//77TJkyhTvvvJNDhw7xzjvvFLvQiIyMJDo6mg8//JDbb7/d6eKxgQMH8sEHH/B///d/jBkzhtDQUH777TeWL1/OsGHDMBgMtG3blnnz5vHII48wbNgwdDodH3/8MUajscjRJ640ceJERo4cyejRo7nnnnvIy8tj2bJlWCwWRz/Y4kpLS+N///sfVatWZerUqY71RqORefPmMXDgQJ588klWrVqFTqcjKiqKuXPnMnnyZAYOHMidd95JVFQUVquVHTt2sGbNGhITEwvM4JaUlMTOnTsdy9nZ2axdu5bff/+dJ554wnEOmjZtyqOPPsprr73G0aNH6d+/P35+fhw+fJi3336b3Nzcq7asNm7cmMWLF7Ns2TKaNm3KiRMnWLp0KRaLxdE94FrnICwsDJPJxFNPPcX48eMJDAzkt99+Y//+/dx3330l+tledP/997Nu3Truv/9+HnjgAfz8/Fi/fj2ffPLJDfX9FULcGCl0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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -550,21 +530,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -579,80 +559,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.76111.00000.95760.97840.27530.3995
10.97480.87611.00000.97460.98710.39180.4936
20.98320.99151.00000.98320.99150.00000.0000
30.94960.83161.00000.94920.97390.23880.3682
40.95800.85841.00000.95730.97820.42950.5230
Mean0.96470.86371.00000.96440.98180.26710.3569
Std0.01240.07490.00000.01250.00650.15110.187400.96640.89651.00000.96610.98280.32390.4396
10.95800.73681.00000.95800.97850.00000.0000
20.96640.72281.00000.96610.98280.32390.4396
30.95800.77891.00000.95800.97850.00000.0000
40.96640.86871.00000.96580.98260.48710.5674
Mean0.96300.80081.00000.96280.98100.22700.2893
Std0.00410.06990.00000.00390.00200.19470.2408
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -689,21 +669,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -718,80 +698,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.76111.00000.95760.97840.27530.3995
10.97480.87611.00000.97460.98710.39180.4936
20.98320.99151.00000.98320.99150.00000.0000
30.94960.83161.00000.94920.97390.23880.3682
40.95800.85841.00000.95730.97820.42950.5230
Mean0.96470.86371.00000.96440.98180.26710.3569
Std0.01240.07490.00000.01250.00650.15110.187400.96640.90181.00000.96610.98280.32390.4396
10.96640.70701.00000.96610.98280.32390.4396
20.96640.75791.00000.96610.98280.32390.4396
30.95800.69121.00000.95800.97850.00000.0000
40.96640.88791.00000.96580.98260.48710.5674
Mean0.96470.78921.00000.96440.98190.29170.3772
Std0.00340.08920.00000.00320.00170.15900.1950
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -812,7 +792,6 @@ "output_type": "stream", "text": [ "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -821,57 +800,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96770.87361.00000.96740.98340.38950.49180Extreme Gradient Boosting0.96770.93121.00000.96740.98340.38950.4918
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -900,21 +859,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -929,80 +888,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.90181.00000.95730.97820.42950.5230
10.96640.79571.00000.96640.98290.00000.0000
20.97480.79601.00000.97480.98720.00000.0000
30.94120.86101.00000.94120.96970.00000.0000
40.94960.85811.00000.94870.97370.38340.4870
Mean0.95800.84251.00000.95770.97830.16260.2020
Std0.01190.04110.00000.01200.00630.19970.247700.96640.75091.00000.96610.98280.32390.4396
10.97480.68251.00000.97440.98700.56090.6243
20.96640.56321.00000.96610.98280.32390.4396
30.95800.71581.00000.95800.97850.00000.0000
40.95800.82741.00000.95760.97840.27530.3995
Mean0.96470.70791.00000.96440.98190.29680.3806
Std0.00630.08690.00000.00620.00320.17880.2057
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1039,21 +998,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1068,80 +1027,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.89161.00000.95730.97820.42950.5230
10.96640.77391.00000.96640.98290.00000.0000
20.98320.82471.00000.98310.99150.49360.5724
30.94120.86611.00000.94120.96970.00000.0000
40.94960.89411.00000.94870.97370.38340.4870
Mean0.95970.85011.00000.95930.97920.26130.3165
Std0.01450.04550.00000.01460.00760.21620.259800.96640.75091.00000.96610.98280.32390.4396
10.97480.68251.00000.97440.98700.56090.6243
20.96640.56321.00000.96610.98280.32390.4396
30.95800.71581.00000.95800.97850.00000.0000
40.95800.82741.00000.95760.97840.27530.3995
Mean0.96470.70791.00000.96440.98190.29680.3806
Std0.00630.08690.00000.00620.00320.17880.2057
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1162,6 +1121,7 @@ "output_type": "stream", "text": [ "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -1170,57 +1130,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.97310.77461.00000.97310.98640.00000.00000Extreme Gradient Boosting0.96240.85111.00000.96220.98070.21470.3468
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -1249,21 +1189,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1278,80 +1218,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.77371.00000.96610.98280.32390.4396
10.98320.86521.00000.98290.99140.65900.7010
20.99160.39831.00000.99160.99580.00000.0000
30.96640.74041.00000.96580.98260.48710.5674
40.95800.77431.00000.95760.97840.27530.3995
Mean0.97310.71041.00000.97280.98620.34900.4215
Std0.01240.16150.00000.01250.00640.22050.235800.97480.99121.00000.97440.98700.56090.6243
10.96640.59821.00000.96610.98280.32390.4396
20.96640.84911.00000.96610.98280.32390.4396
30.96640.67541.00000.96610.98280.32390.4396
40.96640.82301.00000.96580.98260.48710.5674
Mean0.96810.78741.00000.96770.98360.40390.5021
Std0.00340.13780.00000.00330.00170.10080.0786
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1388,21 +1328,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1417,80 +1357,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.77371.00000.96610.98280.32390.4396
10.98320.86521.00000.98290.99140.65900.7010
20.99160.39831.00000.99160.99580.00000.0000
30.96640.74041.00000.96580.98260.48710.5674
40.95800.77431.00000.95760.97840.27530.3995
Mean0.97310.71041.00000.97280.98620.34900.4215
Std0.01240.16150.00000.01250.00640.22050.235800.97480.99121.00000.97440.98700.56090.6243
10.96640.59821.00000.96610.98280.32390.4396
20.96640.84911.00000.96610.98280.32390.4396
30.96640.67541.00000.96610.98280.32390.4396
40.96640.82301.00000.96580.98260.48710.5674
Mean0.96810.78741.00000.96770.98360.40390.5021
Std0.00340.13780.00000.00330.00170.10080.0786
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1520,57 +1460,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.93010.73091.00000.92970.96360.12450.25770Extreme Gradient Boosting0.95700.80621.00000.95700.97800.00000.0000
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -1599,21 +1519,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1628,80 +1548,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.78831.00000.95730.97820.42950.5230
10.98320.80001.00000.98280.99130.74190.7679
20.99160.99711.00000.99150.99570.79590.8130
30.94120.89640.98200.95610.96890.43220.4456
40.93280.85591.00000.93280.96520.00000.0000
Mean0.96130.86750.99640.96410.97990.47990.5099
Std0.02290.07560.00720.02090.01200.28410.290800.96640.82631.00000.96610.98280.32390.4396
10.96640.76841.00000.96610.98280.32390.4396
20.96640.83681.00000.96610.98280.32390.4396
30.95800.90701.00000.95800.97850.00000.0000
40.95800.93071.00000.95760.97840.27530.3995
Mean0.96300.85391.00000.96280.98100.24940.3436
Std0.00410.05840.00000.00410.00210.12610.1725
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1738,21 +1658,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1767,80 +1687,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.95800.80231.00000.95730.97820.42950.5230
10.98320.90701.00000.98280.99130.74190.7679
20.99161.00001.00000.99150.99570.79590.8130
30.95800.93361.00000.95690.97800.52820.5990
40.93280.86821.00000.93280.96520.00000.0000
Mean0.96470.90221.00000.96420.98170.49910.5406
Std0.02090.06590.00000.02090.01080.28350.290500.96640.80701.00000.96610.98280.32390.4396
10.96640.74041.00000.96610.98280.32390.4396
20.96640.79471.00000.96610.98280.32390.4396
30.96640.93511.00000.96610.98280.32390.4396
40.96640.89091.00000.96580.98260.48710.5674
Mean0.96640.83361.00000.96600.98270.35650.4651
Std0.00000.07000.00000.00010.00010.06530.0511
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1869,57 +1789,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.98920.86411.00000.98920.99460.00000.00000Extreme Gradient Boosting0.96240.80351.00000.96200.98060.35220.4624
\n" ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "" ] }, "metadata": {}, @@ -1931,13 +1831,13 @@ "text": [ "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.95968 0.003757\n", - "1 AUC 0.82258 0.061525\n", + "0 Accuracy 0.96976 0.004601\n", + "1 AUC 0.87298 0.094533\n", "2 Recall 1.00000 0.000000\n", - "3 Prec. 0.95926 0.003834\n", - "4 F1 0.97922 0.002005\n", - "5 Kappa 0.29164 0.176332\n", - "6 MCC 0.37702 0.217478\n" + "3 Prec. 0.96942 0.004546\n", + "4 F1 0.98448 0.002300\n", + "5 Kappa 0.41870 0.129810\n", + "6 MCC 0.51348 0.101164\n" ] } ], @@ -1949,9 +1849,9 @@ "evaluator.run_experiment(\n", " train_size=0.8,\n", " fold=5,\n", - " fold_strategy='kfold',\n", + " fold_strategy='stratifiedkfold',\n", " outer_fold=5,\n", - " outer_strategy='kfold',\n", + " outer_strategy='stratifiedkfold',\n", " session_id=42,\n", " model='xgboost',\n", " optimize='AUC',\n", @@ -1962,9 +1862,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -1976,7 +1876,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, From 8cd8e7b22cf0abd92cbd4513c95f7254bb096f0c Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Thu, 29 Aug 2024 05:10:57 -0400 Subject: [PATCH 09/37] Optimisation of the training algorithm --- notebooks/pneumonia.ipynb | 1668 ++++++++++++++++++++++++++- src/evaluation/pycaret_evaluator.py | 69 +- 2 files changed, 1687 insertions(+), 50 deletions(-) diff --git a/notebooks/pneumonia.ipynb b/notebooks/pneumonia.ipynb index b2b16b6..53a2f4d 100644 --- a/notebooks/pneumonia.ipynb +++ b/notebooks/pneumonia.ipynb @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "2d0990d5", "metadata": {}, "outputs": [], @@ -74,7 +74,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -100,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -172,10 +172,1666 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 1/5\n", + "Configuring PyCaret for outer fold 1\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78700.86350.81410.80310.80860.56860.5687
10.78490.87500.79230.80040.79630.56840.5684
20.77950.85780.82330.75790.78930.55880.5609
30.76970.86760.80610.77330.78930.53570.5362
40.75760.84980.78720.78120.78420.50770.5077
Mean0.77570.86270.80460.78320.79350.54780.5484
Std0.01090.00860.01340.01690.00840.02340.0236
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79890.87140.82580.81310.81940.59260.5927
10.81840.89070.81670.83720.82680.63600.6362
20.78270.87630.82760.76040.79260.56530.5675
30.79140.87830.81010.80200.80600.58030.5803
40.76950.86210.81430.78250.79810.52980.5303
Mean0.79220.87570.81890.79900.80860.58080.5814
Std0.01640.00930.00670.02620.01280.03470.0344
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.80000.89040.82290.79840.81050.59890.5992
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 2/5\n", + "Configuring PyCaret for outer fold 2\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.77300.85440.82210.77610.79850.53910.5402
10.77730.86760.79550.78250.78890.55330.5534
20.78270.87680.81960.76160.78950.56560.5672
30.76320.85880.76630.78380.77490.52530.5254
40.76730.85220.78260.79040.78650.53090.5309
Mean0.77270.86200.79720.77890.78770.54280.5434
Std0.00690.00910.02140.00980.00760.01480.0152
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78490.86560.82020.79350.80660.56440.5648
10.77840.87570.79550.78410.78970.55550.5555
20.81620.88580.86520.78660.82400.63260.6358
30.78590.87030.77640.81280.79420.57140.5721
40.77710.86450.78660.80240.79440.55100.5511
Mean0.78850.87240.80880.79590.80180.57500.5759
Std0.01430.00780.03170.01060.01240.02970.0308
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.83600.91730.84010.85640.84820.66990.6700
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 3/5\n", + "Configuring PyCaret for outer fold 3\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78700.87380.80000.80800.80400.57090.5709
10.76540.86710.81540.76140.78750.52640.5279
20.76650.85770.78510.75210.76820.53320.5337
30.77080.86430.77060.79630.78320.54020.5406
40.75320.84680.75640.78730.77150.50350.5040
Mean0.76860.86190.78550.78100.78290.53480.5354
Std0.01090.00920.02090.02110.01270.02180.0216
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79890.88680.80790.82090.81440.59510.5952
10.78700.87240.83160.78240.80630.57030.5716
20.80220.87660.82020.78740.80340.60450.6050
30.78050.87390.79070.79880.79470.55900.5590
40.76410.86690.78000.78930.78460.52380.5239
Mean0.78650.87530.80610.79580.80070.57050.5709
Std0.01370.00660.01880.01370.01020.02850.0286
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.79240.88520.83700.78810.81180.58080.5821
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 4/5\n", + "Configuring PyCaret for outer fold 4\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79030.86530.77560.82520.79960.58010.5813
10.79240.87280.82760.79220.80950.58170.5824
20.75780.85720.81240.73690.77280.51490.5177
30.77950.86380.79120.79760.79440.55660.5566
40.78350.86780.79060.81290.80160.56360.5639
Mean0.78070.86530.79950.79300.79560.55940.5604
Std0.01230.00510.01830.03030.01240.02420.0235
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79680.88320.81160.81160.81160.59100.5910
10.79570.88390.82760.79690.81190.58840.5890
20.76760.85750.83160.74140.78390.53420.5384
30.78270.87120.79520.80000.79760.56300.5631
40.80300.88300.82190.82190.82190.60160.6016
Mean0.78910.87580.81760.79440.80540.57570.5766
Std0.01270.01030.01300.02790.01320.02430.0229
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.80480.89370.84080.79880.81920.60750.6084
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Outer fold 5/5\n", + "Configuring PyCaret for outer fold 5\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.77510.86530.79140.78500.78820.54860.5486
10.78920.86120.81670.79920.80790.57440.5746
20.76650.86850.81600.74210.77730.53300.5357
30.76970.85810.81580.76760.79100.53520.5364
40.79330.87910.80230.82000.81110.58290.5831
Mean0.77880.86640.80850.78280.79510.55480.5557
Std0.01060.00720.01010.02660.01260.02040.0197
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tuning hyperparameters for model xgboost with custom grid\n" + ] + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78590.87890.79750.79750.79750.57050.5705
10.79140.87190.81670.80230.80950.57890.5790
20.78920.87580.82900.76750.79710.57840.5803
30.80760.88360.85430.79920.82580.61140.6131
40.82250.89120.83950.83950.83950.64100.6410
Mean0.79930.88030.82740.80120.81390.59600.5968
Std0.01380.00670.01940.02290.01650.02650.0265
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Transformation Pipeline and Model Successfully Saved\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.81250.89530.84020.81600.82790.62190.6223
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Final metrics table:\n", + " Metric Mean Std Dev\n", + "0 Accuracy 0.79308 0.007072\n", + "1 AUC 0.87718 0.008649\n", + "2 Recall 0.81260 0.010990\n", + "3 Prec. 0.80732 0.011441\n", + "4 F1 0.80990 0.008337\n", + "5 Kappa 0.58272 0.014181\n", + "6 MCC 0.58284 0.014092\n" + ] + } + ], "source": [ "# Initialize the PyCaret Evaluator\n", "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Pneumonia\", experiment_name=\"CP_Pneumonia\", filepath=\"./results\")\n", diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index eaa2008..c322ff6 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -4,22 +4,22 @@ from typing import Dict, List, Optional, Union, Any from sklearn.model_selection import StratifiedKFold, KFold from pycaret.classification import ( - create_model, setup, compare_models, pull, save_model, predict_model, tune_model, plot_model + create_model, setup, pull, save_model, predict_model, tune_model ) -import matplotlib.pyplot as plt import numpy as np import pandas as pd from src.data.dataset import HAIMDataset +import gc # Garbage collector pour libérer la mémoire après chaque fold class PyCaretEvaluator: """ - Class to evaluate models using PyCaret. + Class to evaluate models using PyCaret, optimized for memory management. """ def __init__(self, dataset: HAIMDataset, target: str, experiment_name: Optional[str], filepath: str, columns: Optional[List[str]] = None): """ - Initialise the class parameters. + Initialize the class parameters. Args: dataset (HAIMDataset): the used dataset for machine learning. @@ -54,16 +54,16 @@ def save_results(self, results: List[Dict], filename: str) -> None: """ with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) - + def run_experiment(self, train_size: float = 0.8, fold: int = 5, fold_strategy: str = 'kfold', outer_fold: int = 5, outer_strategy: str = 'stratifiedkfold', - session_id: int = 54288, - model: Optional[str] = None, - optimize: Union[str, List[str]] = 'Accuracy', + session_id: int = 42, + model: Optional[str] = 'xgboost', + optimize: Union[str, List[str]] = 'AUC', custom_grid: Optional[Dict[str, List[Any]]] = None) -> None: """ Executes the complete experiment including external cross-validation, training, and model optimization. @@ -75,7 +75,7 @@ def run_experiment(self, outer_fold (int): Number of folds for external cross-validation. outer_strategy (str): Strategy for external cross-validation ('kfold', 'stratifiedkfold', 'random_sampling'). session_id (int): Session ID for reproducibility. - model (Optional[str]): Specific model to use. If None, all models will be compared. + model (Optional[str]): Specific model to use. optimize (Union[str, List[str]]): The metric to optimize. custom_grid (Optional[Dict[str, List[Any]]]): Custom grid of parameters for tuning. """ @@ -84,22 +84,13 @@ def run_experiment(self, outer_cv = StratifiedKFold(n_splits=outer_fold, shuffle=True, random_state=session_id) elif outer_strategy == 'kfold': outer_cv = KFold(n_splits=outer_fold, shuffle=True, random_state=session_id) - elif outer_strategy == 'random_sampling': - outer_cv = self.random_sampling_outer_cv(self.dataset.x, self.dataset.y, n_splits=outer_fold, random_state=session_id) else: raise ValueError(f"Unknown outer_strategy: {outer_strategy}") results = [] # External cross-validation loop - if isinstance(outer_cv, list): - # If outer_cv is a list, iterate directly over it - outer_cv_splits = outer_cv - else: - # Otherwise, generate splits using the split method - outer_cv_splits = outer_cv.split(self.dataset.x, self.dataset.y) - - for i, (train_index, test_index) in enumerate(outer_cv_splits): + for i, (train_index, test_index) in enumerate(outer_cv.split(self.dataset.x, self.dataset.y)): print(f"Outer fold {i + 1}/{outer_fold}") # Extract the subsets @@ -122,36 +113,22 @@ def run_experiment(self, fold=fold, fold_strategy=fold_strategy, session_id=self.fixed_params['seed'], # Using the seed for reproducibility - verbose=self.fixed_params['verbosity']) # Control the verbosity level + verbose=False) # Use verbose=False to reduce output during setup print(f"Configuring PyCaret for outer fold {i + 1}") - # Comparing models or using a specific model - if model: - print(f"Creating model {model} for outer fold {i + 1}") - best_model = create_model(model, fold=fold) - if custom_grid: - print(f"Tuning hyperparameters for model {model} with custom grid") - best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) - else: - if isinstance(optimize, list): - print(f"Comparing models with multiple optimizations for outer fold {i + 1}") - best_model = compare_models(include=model, sort=optimize[0], fold=fold) - for metric in optimize[1:]: - best_model = tune_model(best_model, optimize=metric, fold=fold) - else: - print(f"Comparing models optimizing {optimize} for outer fold {i + 1}") - best_model = compare_models(sort=optimize, fold=fold) - if custom_grid: - best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) - - # Obtain results and predictions - model_results = pull() + # Create and tune the specified model + best_model = create_model(model, fold=fold) + if custom_grid: + print(f"Tuning hyperparameters for model {model} with custom grid") + best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) + + # Get the results and predictions + model_results = pull() # Pulls the results after create_model save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{i}")) test_predictions = predict_model(best_model, data=test_df) - - # Save results + # Save the results of the fold split_result = { 'fold': i, 'train_results': model_results.to_dict(), @@ -159,6 +136,10 @@ def run_experiment(self, } results.append(split_result) + # Clean up memory after each fold + del train_df, test_df, best_model, model_results, test_predictions + gc.collect() + # Save results in a JSON file self.save_results(results, f"{self.experiment_name}_results.json") @@ -175,7 +156,7 @@ def run_experiment(self, if fold_metrics_list: # Combine the DataFrames from all folds all_fold_metrics = pd.concat(fold_metrics_list, ignore_index=True) - + # Calculate the mean and standard deviation for each metric across all folds final_metrics_mean = all_fold_metrics.mean() final_metrics_std = all_fold_metrics.std() From 1320e65c008e5f6a36c452285922562574020a26 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Fri, 30 Aug 2024 09:26:29 -0400 Subject: [PATCH 10/37] Optimising the pycaretevaluator --- notebooks/edema.ipynb | 4 +- notebooks/pneumonia.ipynb | 10 +-- src/evaluation/pycaret_evaluator.py | 128 ++++++++++++++-------------- 3 files changed, 70 insertions(+), 72 deletions(-) diff --git a/notebooks/edema.ipynb b/notebooks/edema.ipynb index 3150366..68d40de 100644 --- a/notebooks/edema.ipynb +++ b/notebooks/edema.ipynb @@ -185,9 +185,9 @@ "evaluator.run_experiment(\n", " train_size=0.8,\n", " fold=5,\n", - " fold_strategy='kfold',\n", + " fold_strategy='stratifiedkfold',\n", " outer_fold=5,\n", - " outer_strategy='kfold',\n", + " outer_strategy='stratifiedkfold',\n", " session_id=42,\n", " model='xgboost',\n", " optimize='AUC',\n", diff --git a/notebooks/pneumonia.ipynb b/notebooks/pneumonia.ipynb index b2b16b6..45891a2 100644 --- a/notebooks/pneumonia.ipynb +++ b/notebooks/pneumonia.ipynb @@ -184,9 +184,9 @@ "evaluator.run_experiment(\n", " train_size=0.8,\n", " fold=5,\n", - " fold_strategy='kfold',\n", + " fold_strategy='stratifiedkfold',\n", " outer_fold=5,\n", - " outer_strategy='kfold',\n", + " outer_strategy='stratifiedkfold',\n", " session_id=42,\n", " model='xgboost',\n", " optimize='AUC',\n", @@ -197,9 +197,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -211,7 +211,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index eaa2008..d5a0dad 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -4,23 +4,28 @@ from typing import Dict, List, Optional, Union, Any from sklearn.model_selection import StratifiedKFold, KFold from pycaret.classification import ( - create_model, setup, compare_models, pull, save_model, predict_model, tune_model, plot_model + create_model, setup, pull, save_model, predict_model, tune_model ) -import matplotlib.pyplot as plt + import numpy as np import pandas as pd from src.data.dataset import HAIMDataset - - +import gc # Garbage collector to liberate memory after each fold + + class PyCaretEvaluator: + """ - Class to evaluate models using PyCaret. - """ + Class to evaluate models using PyCaret, optimized for memory management. + + """ + def __init__(self, dataset: HAIMDataset, target: str, experiment_name: Optional[str], filepath: str, columns: Optional[List[str]] = None): - """ - Initialise the class parameters. + """ + Initialize the class parameters. + Args: dataset (HAIMDataset): the used dataset for machine learning. target (str): the target class. @@ -28,6 +33,7 @@ def __init__(self, dataset: HAIMDataset, target: str, experiment_name: Optional[ filepath (str): path for saving results. columns (Optional[List[str]]): optional list of column names. """ + self.dataset = dataset self.target = target self.experiment_name = experiment_name if experiment_name else f"experiment_{strftime('%Y%m%d-%H%M%S')}" @@ -36,22 +42,24 @@ def __init__(self, dataset: HAIMDataset, target: str, experiment_name: Optional[ if not os.path.exists(self.filepath): os.makedirs(self.filepath) - + # Define the fixed params self.fixed_params = { 'seed': 42, 'eval_metric': 'logloss', 'verbosity': 0 } - + def save_results(self, results: List[Dict], filename: str) -> None: + """ Save the results in a JSON file. - + Args: results (List[Dict]): results to save. filename (str): file name where the results are saved. """ + with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) @@ -61,13 +69,14 @@ def run_experiment(self, fold_strategy: str = 'kfold', outer_fold: int = 5, outer_strategy: str = 'stratifiedkfold', - session_id: int = 54288, - model: Optional[str] = None, - optimize: Union[str, List[str]] = 'Accuracy', + session_id: int = 42, + model: Optional[str] = 'xgboost', + optimize: Union[str, List[str]] = 'AUC', custom_grid: Optional[Dict[str, List[Any]]] = None) -> None: + """ Executes the complete experiment including external cross-validation, training, and model optimization. - + Args: train_size (float): Proportion of the dataset to include in the training split. fold (int): Number of folds for internal cross-validation. @@ -75,46 +84,38 @@ def run_experiment(self, outer_fold (int): Number of folds for external cross-validation. outer_strategy (str): Strategy for external cross-validation ('kfold', 'stratifiedkfold', 'random_sampling'). session_id (int): Session ID for reproducibility. - model (Optional[str]): Specific model to use. If None, all models will be compared. + model (Optional[str]): Specific model to use. optimize (Union[str, List[str]]): The metric to optimize. custom_grid (Optional[Dict[str, List[Any]]]): Custom grid of parameters for tuning. """ + # Define the outer cross-validation strategy if outer_strategy == 'stratifiedkfold': outer_cv = StratifiedKFold(n_splits=outer_fold, shuffle=True, random_state=session_id) elif outer_strategy == 'kfold': outer_cv = KFold(n_splits=outer_fold, shuffle=True, random_state=session_id) - elif outer_strategy == 'random_sampling': - outer_cv = self.random_sampling_outer_cv(self.dataset.x, self.dataset.y, n_splits=outer_fold, random_state=session_id) else: raise ValueError(f"Unknown outer_strategy: {outer_strategy}") - + results = [] - + # External cross-validation loop - if isinstance(outer_cv, list): - # If outer_cv is a list, iterate directly over it - outer_cv_splits = outer_cv - else: - # Otherwise, generate splits using the split method - outer_cv_splits = outer_cv.split(self.dataset.x, self.dataset.y) - for i, (train_index, test_index) in enumerate(outer_cv_splits): + for i, (train_index, test_index) in enumerate(outer_cv.split(self.dataset.x, self.dataset.y)): print(f"Outer fold {i + 1}/{outer_fold}") - + # Extract the subsets train_data_x = self.dataset.x[train_index] train_data_y = self.dataset.y[train_index] test_data_x = self.dataset.x[test_index] test_data_y = self.dataset.y[test_index] - + # Create DataFrames using specified columns train_df = pd.DataFrame(train_data_x, columns=self.columns) train_df[self.target] = train_data_y - test_df = pd.DataFrame(test_data_x, columns=self.columns) test_df[self.target] = test_data_y - + # Configure PyCaret for the current fold with fixed parameters exp = setup(data=train_df, target=self.target, @@ -122,73 +123,70 @@ def run_experiment(self, fold=fold, fold_strategy=fold_strategy, session_id=self.fixed_params['seed'], # Using the seed for reproducibility - verbose=self.fixed_params['verbosity']) # Control the verbosity level - + verbose=False) # Use verbose=False to reduce output during setup + print(f"Configuring PyCaret for outer fold {i + 1}") + + # Create and tune the specified model + best_model = create_model(model, fold=fold) - # Comparing models or using a specific model - if model: - print(f"Creating model {model} for outer fold {i + 1}") - best_model = create_model(model, fold=fold) - if custom_grid: - print(f"Tuning hyperparameters for model {model} with custom grid") - best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) - else: - if isinstance(optimize, list): - print(f"Comparing models with multiple optimizations for outer fold {i + 1}") - best_model = compare_models(include=model, sort=optimize[0], fold=fold) - for metric in optimize[1:]: - best_model = tune_model(best_model, optimize=metric, fold=fold) - else: - print(f"Comparing models optimizing {optimize} for outer fold {i + 1}") - best_model = compare_models(sort=optimize, fold=fold) - if custom_grid: - best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) - - # Obtain results and predictions - model_results = pull() + if custom_grid: + print(f"Tuning hyperparameters for model {model} with custom grid") + best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) + + # Get the results and predictions + model_results = pull() # Pulls the results after create_model save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{i}")) test_predictions = predict_model(best_model, data=test_df) - - - # Save results + + # Save the results of the fold split_result = { 'fold': i, 'train_results': model_results.to_dict(), 'test_predictions': test_predictions.to_dict() } - results.append(split_result) + results.append(split_result) + + # Clean up memory after each fold + del train_df, test_df, best_model, model_results, test_predictions + gc.collect() + # Save results in a JSON file self.save_results(results, f"{self.experiment_name}_results.json") - + # Collect and compute final metrics after training fold_metrics_list = [] - + for result in results: train_results = result.get('train_results', {}) + if isinstance(train_results, dict): + # Convert the results for each fold into a DataFrame metrics_df = pd.DataFrame(train_results, index=[0]) fold_metrics_list.append(metrics_df) - + if fold_metrics_list: + # Combine the DataFrames from all folds all_fold_metrics = pd.concat(fold_metrics_list, ignore_index=True) - + # Calculate the mean and standard deviation for each metric across all folds final_metrics_mean = all_fold_metrics.mean() final_metrics_std = all_fold_metrics.std() - + # Create a summary table of the final metrics metrics_table = pd.DataFrame({ 'Metric': final_metrics_mean.index, 'Mean': final_metrics_mean.values, 'Std Dev': final_metrics_std.values }) - + print("Final metrics table:") print(metrics_table) - + # Save the final metrics table to a CSV file metrics_table.to_csv(os.path.join(self.filepath, f"{self.experiment_name}_final_metrics.csv"), index=False) + + \ No newline at end of file From 9dd90333301d0e72bc4ce5b3016504d3b5afbf0e Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Mon, 23 Sep 2024 12:30:59 -0400 Subject: [PATCH 11/37] Adding ray --- notebooks/fracture.ipynb | 1812 +++++++++++++-------------- notebooks/lung-lesion.ipynb | 1796 +++++++++++++------------- src/evaluation/pycaret_evaluator.py | 187 +-- 3 files changed, 1902 insertions(+), 1893 deletions(-) diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index fa29e9a..000b195 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -132,7 +132,13 @@ "grid_hps = {'max_depth': [5, 6, 7, 8],\n", " 'n_estimators': [200, 300],\n", " 'learning_rate': [0.3, 0.1, 0.05],\n", - " }" + " }\n", + "# Fixed parameters to pass\n", + "fixed_params = {\n", + " 'seed': 42,\n", + " 'eval_metric': 'logloss',\n", + " 'verbosity': 0\n", + "}" ] }, { @@ -172,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "726c2332", "metadata": {}, "outputs": [ @@ -181,8 +187,7 @@ "output_type": "stream", "text": [ "Outer fold 1/5\n", - "Configuring PyCaret for outer fold 1\n", - "Creating model xgboost for outer fold 1\n" + "Configuring PyCaret for outer fold 1\n" ] }, { @@ -199,21 +204,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -228,80 +233,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.94440.78211.00000.94370.97100.31750.4344
10.94370.69401.00000.94370.97100.00000.0000
20.97180.85071.00000.97100.98530.65370.6968
30.95770.83941.00000.95650.97780.55350.6186
40.94370.54551.00000.94290.97060.31730.4342
Mean0.95230.74231.00000.95150.97510.36840.4368
Std0.01120.11300.00000.01100.00570.22650.241400.97220.71011.00000.97180.98570.48940.5692
10.94370.72121.00000.94290.97060.31730.4342
20.94370.83941.00000.94290.97060.31730.4342
30.95770.91821.00000.95650.97780.55350.6186
40.94370.60911.00000.94290.97060.31730.4342
Mean0.95220.75961.00000.95140.97510.39890.4981
Std0.01140.10780.00000.01150.00600.10200.0797
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -338,21 +343,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -367,80 +372,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97220.87761.00000.97100.98530.73630.7633
10.95770.84701.00000.95710.97810.38620.4892
20.97180.89181.00000.97100.98530.65370.6968
30.95770.93941.00000.95650.97780.55350.6186
40.94370.59701.00000.94290.97060.31730.4342
Mean0.96060.83061.00000.95970.97940.52940.6004
Std0.01060.12050.00000.01050.00550.15770.123400.98610.81641.00000.98570.99280.79310.8106
10.94370.75451.00000.94290.97060.31730.4342
20.94370.93641.00000.94290.97060.31730.4342
30.95770.91821.00000.95650.97780.55350.6186
40.94370.60301.00000.94290.97060.31730.4342
Mean0.95500.80571.00000.95420.97650.45970.5464
Std0.01650.12130.00000.01660.00860.19010.1502
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -460,7 +465,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -469,37 +474,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.93750.70881.00000.93750.96770.00000.00000Extreme Gradient Boosting0.93750.61901.00000.93750.96770.00000.0000
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -510,8 +515,7 @@ "output_type": "stream", "text": [ "Outer fold 2/5\n", - "Configuring PyCaret for outer fold 2\n", - "Creating model xgboost for outer fold 2\n" + "Configuring PyCaret for outer fold 2\n" ] }, { @@ -528,21 +532,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -557,80 +561,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.93060.59701.00000.93060.96400.00000.0000
10.94370.92161.00000.94370.97100.00000.0000
20.94370.77991.00000.94370.97100.00000.0000
30.94370.67161.00000.94370.97100.00000.0000
40.94370.79391.00000.94290.97060.31730.4342
Mean0.94100.75281.00000.94090.96950.06350.0868
Std0.00520.11120.00000.00520.00280.12690.173700.95830.74881.00000.95830.97870.00000.0000
10.91550.74361.00000.91550.95590.00000.0000
20.92960.66061.00000.92960.96350.00000.0000
30.94370.53361.00000.94370.97100.00000.0000
40.95770.88431.00000.95710.97810.38620.4892
Mean0.94100.71421.00000.94080.96940.07720.0978
Std0.01650.11530.00000.01640.00870.15450.1957
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -667,21 +671,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -696,80 +700,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.93060.59701.00000.93060.96400.00000.0000
10.94370.92161.00000.94370.97100.00000.0000
20.94370.77991.00000.94370.97100.00000.0000
30.94370.67161.00000.94370.97100.00000.0000
40.94370.79391.00000.94290.97060.31730.4342
Mean0.94100.75281.00000.94090.96950.06350.0868
Std0.00520.11120.00000.00520.00280.12690.173700.95830.71981.00000.95830.97870.00000.0000
10.91550.73331.00000.91550.95590.00000.0000
20.92960.73031.00000.92960.96350.00000.0000
30.94370.61941.00000.94370.97100.00000.0000
40.95770.88811.00000.95710.97810.38620.4892
Mean0.94100.73821.00000.94080.96940.07720.0978
Std0.01650.08600.00000.01640.00870.15450.1957
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -789,7 +793,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] @@ -799,37 +803,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95540.75121.00000.95410.97650.52700.59820Extreme Gradient Boosting0.95540.70431.00000.95410.97650.52700.5982
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -840,8 +844,7 @@ "output_type": "stream", "text": [ "Outer fold 3/5\n", - "Configuring PyCaret for outer fold 3\n", - "Creating model xgboost for outer fold 3\n" + "Configuring PyCaret for outer fold 3\n" ] }, { @@ -858,21 +861,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -887,80 +890,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.93060.60901.00000.93060.96400.00000.0000
10.97180.73881.00000.97100.98530.65370.6968
20.95770.97391.00000.95710.97810.38620.4892
30.94370.64241.00000.94290.97060.31730.4342
40.95770.77881.00000.95650.97780.55350.6186
Mean0.95230.74861.00000.95160.97520.38210.4478
Std0.01410.12850.00000.01380.00730.22510.242300.95830.69571.00000.95830.97870.00000.0000
10.95770.76971.00000.95650.97780.55350.6186
20.95770.90611.00000.95650.97780.55350.6186
30.92960.58480.98480.94200.96300.25580.2858
40.95770.77581.00000.95650.97780.55350.6186
Mean0.95220.74640.99700.95400.97500.38320.4283
Std0.01130.10540.00610.00600.00600.22360.2499
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -997,21 +1000,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1026,80 +1029,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.93060.60901.00000.93060.96400.00000.0000
10.97180.73881.00000.97100.98530.65370.6968
20.95770.97391.00000.95710.97810.38620.4892
30.94370.64241.00000.94290.97060.31730.4342
40.95770.77881.00000.95650.97780.55350.6186
Mean0.95230.74861.00000.95160.97520.38210.4478
Std0.01410.12850.00000.01380.00730.22510.242300.95830.69081.00000.95830.97870.00000.0000
10.95770.78181.00000.95650.97780.55350.6186
20.95770.86671.00000.95650.97780.55350.6186
30.94370.57271.00000.94290.97060.31730.4342
40.95770.82421.00000.95650.97780.55350.6186
Mean0.95500.74731.00000.95420.97650.39550.4580
Std0.00570.10490.00000.00570.00300.21790.2399
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1119,8 +1122,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -1129,37 +1131,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95500.78161.00000.95410.97650.42840.52210Extreme Gradient Boosting0.95500.79261.00000.95410.97650.42840.5221
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1170,8 +1172,7 @@ "output_type": "stream", "text": [ "Outer fold 4/5\n", - "Configuring PyCaret for outer fold 4\n", - "Creating model xgboost for outer fold 4\n" + "Configuring PyCaret for outer fold 4\n" ] }, { @@ -1188,21 +1189,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1217,80 +1218,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.94440.56421.00000.94370.97100.31750.4344
10.94370.52611.00000.94370.97100.00000.0000
20.97180.80221.00000.97100.98530.65370.6968
30.92960.80001.00000.92960.96350.00000.0000
40.94370.98181.00000.94290.97060.31730.4342
Mean0.94660.73491.00000.94620.97230.25770.3131
Std0.01380.16880.00000.01350.00710.24360.273000.97220.85991.00000.97180.98570.48940.5692
10.94370.74851.00000.94290.97060.31730.4342
20.95770.83031.00000.95650.97780.55350.6186
30.92960.86061.00000.92960.96350.00000.0000
40.94370.95151.00000.94290.97060.31730.4342
Mean0.94940.85021.00000.94870.97360.33550.4112
Std0.01450.06510.00000.01440.00750.19200.2182
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1327,21 +1328,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1356,80 +1357,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.94440.56421.00000.94370.97100.31750.4344
10.94370.52611.00000.94370.97100.00000.0000
20.97180.80221.00000.97100.98530.65370.6968
30.92960.80001.00000.92960.96350.00000.0000
40.94370.98181.00000.94290.97060.31730.4342
Mean0.94660.73491.00000.94620.97230.25770.3131
Std0.01380.16880.00000.01350.00710.24360.273000.98610.85511.00000.98570.99280.79310.8106
10.94370.76671.00000.94290.97060.31730.4342
20.95770.83031.00000.95650.97780.55350.6186
30.94370.84551.00000.94290.97060.31730.4342
40.95770.95761.00000.95650.97780.55350.6186
Mean0.95780.85101.00000.95690.97790.50690.5832
Std0.01550.06160.00000.01570.00810.17780.1404
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1449,8 +1450,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -1459,37 +1459,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.94590.85301.00000.94550.97200.23800.36750Extreme Gradient Boosting0.94590.71021.00000.94550.97200.23800.3675
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1500,8 +1500,7 @@ "output_type": "stream", "text": [ "Outer fold 5/5\n", - "Configuring PyCaret for outer fold 5\n", - "Creating model xgboost for outer fold 5\n" + "Configuring PyCaret for outer fold 5\n" ] }, { @@ -1518,21 +1517,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1547,80 +1546,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.93060.86870.98510.94290.96350.25620.2863
10.95770.85451.00000.95710.97810.38620.4892
20.94370.84701.00000.94370.97100.00000.0000
30.95770.70911.00000.95650.97780.55350.6186
40.94370.74241.00000.94290.97060.31730.4342
Mean0.94670.80430.99700.94860.97220.30260.3657
Std0.01020.06540.00600.00670.00540.18100.211600.97220.95651.00000.97180.98570.48940.5692
10.95770.85451.00000.95650.97780.55350.6186
20.92960.73641.00000.92960.96350.00000.0000
30.95770.70301.00000.95650.97780.55350.6186
40.94370.72731.00000.94290.97060.31730.4342
Mean0.95220.79551.00000.95150.97510.38270.4481
Std0.01450.09600.00000.01430.00750.21000.2340
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1657,21 +1656,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1686,80 +1685,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.94440.83581.00000.94370.97100.31750.4344
10.97180.79851.00000.97100.98530.65370.6968
20.94370.83961.00000.94370.97100.00000.0000
30.95770.67581.00000.95650.97780.55350.6186
40.94370.79091.00000.94290.97060.31730.4342
Mean0.95230.78811.00000.95150.97510.36840.4368
Std0.01120.05940.00000.01100.00570.22650.241400.97220.95651.00000.97180.98570.48940.5692
10.95770.85451.00000.95650.97780.55350.6186
20.92960.73641.00000.92960.96350.00000.0000
30.95770.70301.00000.95650.97780.55350.6186
40.94370.72731.00000.94290.97060.31730.4342
Mean0.95220.79551.00000.95150.97510.38270.4481
Std0.01450.09600.00000.01430.00750.21000.2340
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1779,7 +1778,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -1788,37 +1788,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95500.65521.00000.95410.97650.42840.52210Extreme Gradient Boosting0.95500.79951.00000.95410.97650.42840.5221
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1830,13 +1830,13 @@ "text": [ "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.94444 0.016983\n", - "1 AUC 0.69672 0.147700\n", + "0 Accuracy 0.97220 0.013900\n", + "1 AUC 0.80772 0.107070\n", "2 Recall 1.00000 0.000000\n", - "3 Prec. 0.94392 0.016494\n", - "4 F1 0.97106 0.008696\n", - "5 Kappa 0.27426 0.303174\n", - "6 MCC 0.32642 0.326835\n" + "3 Prec. 0.97196 0.013700\n", + "4 F1 0.98574 0.007050\n", + "5 Kappa 0.41512 0.398718\n", + "6 MCC 0.43808 0.411875\n" ] } ], @@ -1844,26 +1844,26 @@ "# Initialize the PyCaret Evaluator\n", "evaluator = PyCaretEvaluator(dataset=dataset, target=\"Fracture\", experiment_name=\"CP_Fracture\", filepath=\"./results/fracture\")\n", "\n", - "# Model training\n", "evaluator.run_experiment(\n", " train_size=0.8,\n", " fold=5,\n", - " fold_strategy='stratifiedkfold',\n", + " fold_strategy='kfold',\n", " outer_fold=5,\n", " outer_strategy='stratifiedkfold',\n", " session_id=42,\n", " model='xgboost',\n", " optimize='AUC',\n", - " custom_grid=grid_hps\n", + " custom_grid=grid_hps, # Grid d'hyperparamètres\n", + " # Paramètres fixes\n", ")" ] } ], "metadata": { "kernelspec": { - "display_name": "Python (pycaret_env)", + "display_name": "Python 3", "language": "python", - "name": "pycaret_env" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1875,7 +1875,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/notebooks/lung-lesion.ipynb b/notebooks/lung-lesion.ipynb index ef37b06..9428e81 100644 --- a/notebooks/lung-lesion.ipynb +++ b/notebooks/lung-lesion.ipynb @@ -182,8 +182,7 @@ "output_type": "stream", "text": [ "Outer fold 1/5\n", - "Configuring PyCaret for outer fold 1\n", - "Creating model xgboost for outer fold 1\n" + "Configuring PyCaret for outer fold 1\n" ] }, { @@ -200,21 +199,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -229,80 +228,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97480.91401.00000.97440.98700.56090.6243
10.95800.84741.00000.95800.97850.00000.0000
20.95800.86141.00000.95800.97850.00000.0000
30.95800.75091.00000.95800.97850.00000.0000
40.95800.92481.00000.95760.97840.27530.3995
Mean0.96130.85971.00000.96120.98020.16720.2048
Std0.00670.06190.00000.00660.00340.22380.260700.97480.94391.00000.97440.98700.56090.6243
10.95800.85261.00000.95800.97850.00000.0000
20.96640.83161.00000.96610.98280.32390.4396
30.95800.82111.00000.95800.97850.00000.0000
40.94960.95430.99120.95730.97390.23060.2686
Mean0.96130.88070.99820.96270.98020.22310.2665
Std0.00860.05690.00350.00670.00440.21160.2450
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -339,21 +338,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -368,80 +367,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97480.91401.00000.97440.98700.56090.6243
10.95800.84741.00000.95800.97850.00000.0000
20.95800.86141.00000.95800.97850.00000.0000
30.95800.75091.00000.95800.97850.00000.0000
40.95800.92481.00000.95760.97840.27530.3995
Mean0.96130.85971.00000.96120.98020.16720.2048
Std0.00670.06190.00000.00660.00340.22380.260700.97480.94041.00000.97440.98700.56090.6243
10.95800.83161.00000.95800.97850.00000.0000
20.96640.81931.00000.96610.98280.32390.4396
30.95800.77371.00000.95800.97850.00000.0000
40.96640.96171.00000.96580.98260.48710.5674
Mean0.96470.86531.00000.96440.98190.27440.3263
Std0.00630.07290.00000.00610.00320.23680.2730
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -461,8 +460,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -471,37 +469,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96770.78931.00000.96740.98340.38950.49180Extreme Gradient Boosting0.96770.82791.00000.96740.98340.38950.4918
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -512,8 +510,7 @@ "output_type": "stream", "text": [ "Outer fold 2/5\n", - "Configuring PyCaret for outer fold 2\n", - "Creating model xgboost for outer fold 2\n" + "Configuring PyCaret for outer fold 2\n" ] }, { @@ -530,21 +527,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -559,80 +556,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.89651.00000.96610.98280.32390.4396
10.95800.73681.00000.95800.97850.00000.0000
20.96640.72281.00000.96610.98280.32390.4396
30.95800.77891.00000.95800.97850.00000.0000
40.96640.86871.00000.96580.98260.48710.5674
Mean0.96300.80081.00000.96280.98100.22700.2893
Std0.00410.06990.00000.00390.00200.19470.240800.96640.91231.00000.96610.98280.32390.4396
10.96640.78951.00000.96610.98280.32390.4396
20.96640.81051.00000.96610.98280.32390.4396
30.95800.65961.00000.95800.97850.00000.0000
40.96640.88941.00000.96580.98260.48710.5674
Mean0.96470.81231.00000.96440.98190.29170.3772
Std0.00340.08920.00000.00320.00170.15900.1950
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -669,21 +666,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -698,80 +695,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.90181.00000.96610.98280.32390.4396
10.96640.70701.00000.96610.98280.32390.4396
20.96640.75791.00000.96610.98280.32390.4396
30.95800.69121.00000.95800.97850.00000.0000
40.96640.88791.00000.96580.98260.48710.5674
Mean0.96470.78921.00000.96440.98190.29170.3772
Std0.00340.08920.00000.00320.00170.15900.195000.96640.90881.00000.96610.98280.32390.4396
10.97480.77021.00000.97440.98700.56090.6243
20.96640.78251.00000.96610.98280.32390.4396
30.95800.73331.00000.95800.97850.00000.0000
40.96640.90861.00000.96580.98260.48710.5674
Mean0.96640.82071.00000.96610.98270.33910.4142
Std0.00530.07370.00000.00520.00270.19320.2193
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -791,7 +788,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -800,37 +797,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96770.93121.00000.96740.98340.38950.49180Extreme Gradient Boosting0.96770.92631.00000.96740.98340.38950.4918
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -841,8 +838,7 @@ "output_type": "stream", "text": [ "Outer fold 3/5\n", - "Configuring PyCaret for outer fold 3\n", - "Creating model xgboost for outer fold 3\n" + "Configuring PyCaret for outer fold 3\n" ] }, { @@ -859,21 +855,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -888,80 +884,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.75091.00000.96610.98280.32390.4396
10.97480.68251.00000.97440.98700.56090.6243
20.96640.56321.00000.96610.98280.32390.4396
30.95800.71581.00000.95800.97850.00000.0000
40.95800.82741.00000.95760.97840.27530.3995
Mean0.96470.70791.00000.96440.98190.29680.3806
Std0.00630.08690.00000.00620.00320.17880.205700.96640.84741.00000.96610.98280.32390.4396
10.97480.75441.00000.97440.98700.56090.6243
20.96640.60001.00000.96610.98280.32390.4396
30.95800.76841.00000.95800.97850.00000.0000
40.94960.79651.00000.94960.97410.00000.0000
Mean0.96300.75331.00000.96280.98100.24170.3007
Std0.00860.08300.00000.00840.00440.21550.2546
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -998,21 +994,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1027,80 +1023,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.75091.00000.96610.98280.32390.4396
10.97480.68251.00000.97440.98700.56090.6243
20.96640.56321.00000.96610.98280.32390.4396
30.95800.71581.00000.95800.97850.00000.0000
40.95800.82741.00000.95760.97840.27530.3995
Mean0.96470.70791.00000.96440.98190.29680.3806
Std0.00630.08690.00000.00620.00320.17880.205700.96640.81931.00000.96610.98280.32390.4396
10.97480.60001.00000.97440.98700.56090.6243
20.96640.67021.00000.96610.98280.32390.4396
30.95800.77541.00000.95800.97850.00000.0000
40.94960.68581.00000.94960.97410.00000.0000
Mean0.96300.71021.00000.96280.98100.24170.3007
Std0.00860.07810.00000.00840.00440.21550.2546
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1120,7 +1116,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] @@ -1130,37 +1126,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96240.85111.00000.96220.98070.21470.34680Extreme Gradient Boosting0.96240.87291.00000.96220.98070.21470.3468
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1171,8 +1167,7 @@ "output_type": "stream", "text": [ "Outer fold 4/5\n", - "Configuring PyCaret for outer fold 4\n", - "Creating model xgboost for outer fold 4\n" + "Configuring PyCaret for outer fold 4\n" ] }, { @@ -1189,21 +1184,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1218,80 +1213,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97480.99121.00000.97440.98700.56090.6243
10.96640.59821.00000.96610.98280.32390.4396
20.96640.84911.00000.96610.98280.32390.4396
30.96640.67541.00000.96610.98280.32390.4396
40.96640.82301.00000.96580.98260.48710.5674
Mean0.96810.78741.00000.96770.98360.40390.5021
Std0.00340.13780.00000.00330.00170.10080.078600.95800.96671.00000.95800.97850.00000.0000
10.96640.64911.00000.96610.98280.32390.4396
20.96640.66141.00000.96610.98280.32390.4396
30.96640.61401.00000.96610.98280.32390.4396
40.96640.84511.00000.96580.98260.48710.5674
Mean0.96470.74731.00000.96440.98190.29170.3772
Std0.00340.13600.00000.00320.00170.15900.1950
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1328,21 +1323,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1357,80 +1352,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.97480.99121.00000.97440.98700.56090.6243
10.96640.59821.00000.96610.98280.32390.4396
20.96640.84911.00000.96610.98280.32390.4396
30.96640.67541.00000.96610.98280.32390.4396
40.96640.82301.00000.96580.98260.48710.5674
Mean0.96810.78741.00000.96770.98360.40390.5021
Std0.00340.13780.00000.00330.00170.10080.078600.95800.95441.00000.95800.97850.00000.0000
10.97480.68771.00000.97440.98700.56090.6243
20.96640.64391.00000.96610.98280.32390.4396
30.96640.52281.00000.96610.98280.32390.4396
40.96640.85991.00000.96580.98260.48710.5674
Mean0.96640.73371.00000.96610.98270.33910.4142
Std0.00530.15450.00000.00520.00270.19320.2193
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1450,8 +1445,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -1460,37 +1454,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95700.80621.00000.95700.97800.00000.00000Extreme Gradient Boosting0.95700.83081.00000.95700.97800.00000.0000
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1501,8 +1495,7 @@ "output_type": "stream", "text": [ "Outer fold 5/5\n", - "Configuring PyCaret for outer fold 5\n", - "Creating model xgboost for outer fold 5\n" + "Configuring PyCaret for outer fold 5\n" ] }, { @@ -1519,21 +1512,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1548,80 +1541,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.82631.00000.96610.98280.32390.4396
10.96640.76841.00000.96610.98280.32390.4396
20.96640.83681.00000.96610.98280.32390.4396
30.95800.90701.00000.95800.97850.00000.0000
40.95800.93071.00000.95760.97840.27530.3995
Mean0.96300.85391.00000.96280.98100.24940.3436
Std0.00410.05840.00000.00410.00210.12610.172500.96640.88601.00000.96610.98280.32390.4396
10.96640.72111.00000.96610.98280.32390.4396
20.96640.73511.00000.96610.98280.32390.4396
30.96640.89121.00000.96610.98280.32390.4396
40.96640.85401.00000.96580.98260.48710.5674
Mean0.96640.81751.00000.96600.98270.35650.4651
Std0.00000.07420.00000.00010.00010.06530.0511
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1658,21 +1651,21 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1687,80 +1680,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AccuracyAUCRecallPrec.F1KappaMCCAccuracyAUCRecallPrec.F1KappaMCC
Fold
00.96640.80701.00000.96610.98280.32390.4396
10.96640.74041.00000.96610.98280.32390.4396
20.96640.79471.00000.96610.98280.32390.4396
30.96640.93511.00000.96610.98280.32390.4396
40.96640.89091.00000.96580.98260.48710.5674
Mean0.96640.83361.00000.96600.98270.35650.4651
Std0.00000.07000.00000.00010.00010.06530.051100.96640.77891.00000.96610.98280.32390.4396
10.96640.70181.00000.96610.98280.32390.4396
20.96640.71581.00000.96610.98280.32390.4396
30.96640.90701.00000.96610.98280.32390.4396
40.96640.87321.00000.96580.98260.48710.5674
Mean0.96640.79531.00000.96600.98270.35650.4651
Std0.00000.08230.00000.00010.00010.06530.0511
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1780,7 +1773,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", + "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", + "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", "Transformation Pipeline and Model Successfully Saved\n" ] }, @@ -1789,37 +1783,37 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 ModelAccuracyAUCRecallPrec.F1KappaMCCModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96240.80351.00000.96200.98060.35220.46240Extreme Gradient Boosting0.96240.82861.00000.96200.98060.35220.4624
\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1831,13 +1825,13 @@ "text": [ "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.96976 0.004601\n", - "1 AUC 0.87298 0.094533\n", + "0 Accuracy 0.96640 0.005940\n", + "1 AUC 0.88036 0.077327\n", "2 Recall 1.00000 0.000000\n", - "3 Prec. 0.96942 0.004546\n", - "4 F1 0.98448 0.002300\n", - "5 Kappa 0.41870 0.129810\n", - "6 MCC 0.51348 0.101164\n" + "3 Prec. 0.96614 0.005799\n", + "4 F1 0.98278 0.003005\n", + "5 Kappa 0.30652 0.199731\n", + "6 MCC 0.38862 0.231499\n" ] } ], @@ -1862,9 +1856,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python (pycaret_env)", + "display_name": "Python 3", "language": "python", - "name": "pycaret_env" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1876,7 +1870,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.10.6" } }, "nbformat": 4, diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index d8ca6f2..3fbbeb9 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -7,27 +7,24 @@ create_model, setup, pull, save_model, predict_model, tune_model ) -import numpy as np -import pandas as pd -from src.data.dataset import HAIMDataset import gc # Garbage collector to liberate memory after each fold - - +import ray # Import Ray + +# Initialize Ray +ray.init(ignore_reinit_error=True) + class PyCaretEvaluator: """ - Class to evaluate models using PyCaret, optimized for memory management. - """ - - def __init__(self, dataset: HAIMDataset, target: str, experiment_name: Optional[str], filepath: str, columns: Optional[List[str]] = None): + def __init__(self, dataset: Any, target: str, experiment_name: Optional[str], filepath: str, columns: Optional[List[str]] = None): """ Initialize the class parameters. - + Args: - dataset (HAIMDataset): the used dataset for machine learning. + dataset (Any): the used dataset for machine learning. target (str): the target class. experiment_name (Optional[str]): optional name for the experiment. filepath (str): path for saving results. @@ -43,26 +40,80 @@ def __init__(self, dataset: HAIMDataset, target: str, experiment_name: Optional[ if not os.path.exists(self.filepath): os.makedirs(self.filepath) - # Define the fixed params - self.fixed_params = { - 'seed': 42, - 'eval_metric': 'logloss', - 'verbosity': 0 - } - def save_results(self, results: List[Dict], filename: str) -> None: - """ Save the results in a JSON file. - + Args: results (List[Dict]): results to save. filename (str): file name where the results are saved. """ - with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) + @ray.remote # Mark this function to be executed in parallel by Ray + def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params): + """ + Run a single fold in parallel using Ray. + """ + print(f"Outer fold {fold_num}") + + # Extract the subsets (using NumPy array indexing) + train_data_x = self.dataset.x[train_index] + train_data_y = self.dataset.y[train_index] + test_data_x = self.dataset.x[test_index] + test_data_y = self.dataset.y[test_index] + + # PyCaret setup expects a DataFrame, so we convert the NumPy arrays to DataFrames + train_df = pd.DataFrame(train_data_x, columns=self.columns) + train_df[self.target] = train_data_y + test_df = pd.DataFrame(test_data_x, columns=self.columns) + test_df[self.target] = test_data_y + + # Configure PyCaret for the current fold with fixed parameters + exp = setup(data=train_df, + target=self.target, + train_size=train_size, + fold=fold, + fold_strategy=fold_strategy, + session_id=fixed_params['seed'], # Using the seed for reproducibility + verbose=False, # Use verbose=False to reduce output during setup + silent=True) + + print(f"Configuring PyCaret for outer fold {fold_num}") + + # Create and tune the specified model + best_model = create_model(model, fold=fold) + + if custom_grid: + print(f"Tuning hyperparameters for model {model} with custom grid using {search_algorithm} search") + best_model = tune_model( + best_model, + custom_grid=custom_grid, + fold=fold, + optimize=optimize, + search_algorithm=search_algorithm, + verbose=False + ) + + # Get the results and predictions + model_results = pull() # Pulls the results after create_model or tune_model + save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{fold_num}")) + test_predictions = predict_model(best_model, data=test_df) + + # Save the results of the fold + split_result = { + 'fold': fold_num, + 'train_results': model_results.to_dict(), + 'test_predictions': test_predictions.to_dict() + } + + # Clean up memory after each fold + del train_df, test_df, best_model, model_results, test_predictions, exp + gc.collect() + + return split_result + def run_experiment(self, train_size: float = 0.8, fold: int = 5, @@ -72,11 +123,12 @@ def run_experiment(self, session_id: int = 42, model: Optional[str] = 'xgboost', optimize: Union[str, List[str]] = 'AUC', - custom_grid: Optional[Dict[str, List[Any]]] = None) -> None: - + custom_grid: Optional[Dict[str, List[Any]]] = None, + search_algorithm: str = 'grid', + fixed_params: Dict[str, Any] = None) -> None: """ Executes the complete experiment including external cross-validation, training, and model optimization. - + Args: train_size (float): Proportion of the dataset to include in the training split. fold (int): Number of folds for internal cross-validation. @@ -87,8 +139,18 @@ def run_experiment(self, model (Optional[str]): Specific model to use. optimize (Union[str, List[str]]): The metric to optimize. custom_grid (Optional[Dict[str, List[Any]]]): Custom grid of parameters for tuning. + search_algorithm (str): Algorithm to use for hyperparameter tuning ('grid' or 'random'). + fixed_params (Dict[str, Any]): Fixed parameters such as seed and eval_metric. """ + # Use default fixed_params if none are provided + if fixed_params is None: + fixed_params = { + 'seed': 42, + 'eval_metric': 'logloss', + 'verbosity': 0 + } + # Define the outer cross-validation strategy if outer_strategy == 'stratifiedkfold': outer_cv = StratifiedKFold(n_splits=outer_fold, shuffle=True, random_state=session_id) @@ -96,96 +158,49 @@ def run_experiment(self, outer_cv = KFold(n_splits=outer_fold, shuffle=True, random_state=session_id) else: raise ValueError(f"Unknown outer_strategy: {outer_strategy}") - - results = [] - + + ray_tasks = [] # List to store Ray tasks + # External cross-validation loop for i, (train_index, test_index) in enumerate(outer_cv.split(self.dataset.x, self.dataset.y)): - print(f"Outer fold {i + 1}/{outer_fold}") - - # Extract the subsets - train_data_x = self.dataset.x[train_index] - train_data_y = self.dataset.y[train_index] - test_data_x = self.dataset.x[test_index] - test_data_y = self.dataset.y[test_index] - - # Create DataFrames using specified columns - train_df = pd.DataFrame(train_data_x, columns=self.columns) - train_df[self.target] = train_data_y - test_df = pd.DataFrame(test_data_x, columns=self.columns) - test_df[self.target] = test_data_y - - # Configure PyCaret for the current fold with fixed parameters - exp = setup(data=train_df, - target=self.target, - train_size=train_size, - fold=fold, - fold_strategy=fold_strategy, - session_id=self.fixed_params['seed'], # Using the seed for reproducibility - verbose=False) # Use verbose=False to reduce output during setup - - print(f"Configuring PyCaret for outer fold {i + 1}") - - # Create and tune the specified model - best_model = create_model(model, fold=fold) - - if custom_grid: - print(f"Tuning hyperparameters for model {model} with custom grid") - best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold) - - # Get the results and predictions - model_results = pull() # Pulls the results after create_model - save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{i}")) - test_predictions = predict_model(best_model, data=test_df) - - # Save the results of the fold - split_result = { - 'fold': i, - 'train_results': model_results.to_dict(), - 'test_predictions': test_predictions.to_dict() - } + # Launch each fold as a Ray task + ray_task = self.run_fold.remote(self, train_index, test_index, i + 1, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params) + ray_tasks.append(ray_task) + + # Collect all results from Ray tasks + results = ray.get(ray_tasks) - results.append(split_result) - - # Clean up memory after each fold - del train_df, test_df, best_model, model_results, test_predictions - gc.collect() - # Save results in a JSON file self.save_results(results, f"{self.experiment_name}_results.json") - + # Collect and compute final metrics after training fold_metrics_list = [] - + for result in results: train_results = result.get('train_results', {}) if isinstance(train_results, dict): - # Convert the results for each fold into a DataFrame metrics_df = pd.DataFrame(train_results, index=[0]) fold_metrics_list.append(metrics_df) - - if fold_metrics_list: + if fold_metrics_list: # Combine the DataFrames from all folds all_fold_metrics = pd.concat(fold_metrics_list, ignore_index=True) # Calculate the mean and standard deviation for each metric across all folds final_metrics_mean = all_fold_metrics.mean() final_metrics_std = all_fold_metrics.std() - + # Create a summary table of the final metrics metrics_table = pd.DataFrame({ 'Metric': final_metrics_mean.index, 'Mean': final_metrics_mean.values, 'Std Dev': final_metrics_std.values }) - + print("Final metrics table:") print(metrics_table) - + # Save the final metrics table to a CSV file metrics_table.to_csv(os.path.join(self.filepath, f"{self.experiment_name}_final_metrics.csv"), index=False) - - \ No newline at end of file From 55a6783c9ef2c0b6b4a4786c745858cc47e7100e Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Tue, 24 Sep 2024 10:14:46 -0400 Subject: [PATCH 12/37] Changes with ray --- requirements.txt | 3 ++- src/evaluation/pycaret_evaluator.py | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index 0fddd5d..c1a870c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,5 @@ scikit-learn~=1.0.2 matplotlib~=3.5.2 xgboost~=1.7.1 tqdm~=4.64.1 -pycaret~=3.3.1 \ No newline at end of file +pycaret~=3.3.1 +ray[default]~=2.36.0 \ No newline at end of file diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index 3fbbeb9..00aae58 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -3,6 +3,7 @@ from time import strftime from typing import Dict, List, Optional, Union, Any from sklearn.model_selection import StratifiedKFold, KFold +import pandas as pd from pycaret.classification import ( create_model, setup, pull, save_model, predict_model, tune_model ) @@ -10,8 +11,6 @@ import gc # Garbage collector to liberate memory after each fold import ray # Import Ray -# Initialize Ray -ray.init(ignore_reinit_error=True) class PyCaretEvaluator: @@ -77,8 +76,8 @@ def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_str fold=fold, fold_strategy=fold_strategy, session_id=fixed_params['seed'], # Using the seed for reproducibility - verbose=False, # Use verbose=False to reduce output during setup - silent=True) + verbose=False # Use verbose=False to reduce output during setup + ) print(f"Configuring PyCaret for outer fold {fold_num}") @@ -158,6 +157,9 @@ def run_experiment(self, outer_cv = KFold(n_splits=outer_fold, shuffle=True, random_state=session_id) else: raise ValueError(f"Unknown outer_strategy: {outer_strategy}") + + # Initialize Ray + ray.init(ignore_reinit_error=True) ray_tasks = [] # List to store Ray tasks @@ -204,3 +206,5 @@ def run_experiment(self, # Save the final metrics table to a CSV file metrics_table.to_csv(os.path.join(self.filepath, f"{self.experiment_name}_final_metrics.csv"), index=False) + + ray.shutdown() From 8ad00420887d8f82ba99f2b817c5db7977f4ec82 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Thu, 26 Sep 2024 10:10:50 -0400 Subject: [PATCH 13/37] Adjusting the requirements --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index c1a870c..ccb3e09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ pandas~=1.4.4 numpy~=1.23.4 -scikit-learn~=1.0.2 +scikit-learn~=1.4.2 matplotlib~=3.5.2 xgboost~=1.7.1 tqdm~=4.64.1 pycaret~=3.3.1 -ray[default]~=2.36.0 \ No newline at end of file +ray[default]~=2.36.1 \ No newline at end of file From dc71c553628e6efbe639e9e8c8f7163e76bfeed0 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Thu, 26 Sep 2024 10:19:31 -0400 Subject: [PATCH 14/37] Adjusting ray parameters --- src/evaluation/pycaret_evaluator.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index 00aae58..f6cd838 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -50,7 +50,7 @@ def save_results(self, results: List[Dict], filename: str) -> None: with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) - @ray.remote # Mark this function to be executed in parallel by Ray + @ray.remote(memory=6e9) # Mark this function to be executed in parallel by Ray def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params): """ Run a single fold in parallel using Ray. @@ -76,7 +76,8 @@ def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_str fold=fold, fold_strategy=fold_strategy, session_id=fixed_params['seed'], # Using the seed for reproducibility - verbose=False # Use verbose=False to reduce output during setup + verbose=False, + n_jobs=1 ) print(f"Configuring PyCaret for outer fold {fold_num}") @@ -159,7 +160,7 @@ def run_experiment(self, raise ValueError(f"Unknown outer_strategy: {outer_strategy}") # Initialize Ray - ray.init(ignore_reinit_error=True) + ray.init(ignore_reinit_error=True, num_cpus=128) ray_tasks = [] # List to store Ray tasks From de5bed62907393143ee720fc93df8be36f16dc9f Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Thu, 26 Sep 2024 10:20:48 -0400 Subject: [PATCH 15/37] Training of the edema and fracture tasks --- notebooks/edema.ipynb | 399 +++++---- notebooks/fracture.ipynb | 1676 +------------------------------------- 2 files changed, 278 insertions(+), 1797 deletions(-) diff --git a/notebooks/edema.ipynb b/notebooks/edema.ipynb index 68d40de..2f1e083 100644 --- a/notebooks/edema.ipynb +++ b/notebooks/edema.ipynb @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "id": "8d254fef", "metadata": {}, "outputs": [], @@ -173,10 +173,258 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-24 16:07:16,490\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=121391)\u001b[0m Outer fold 1\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(raylet)\u001b[0m Spilled 2750 MiB, 3 objects, write throughput 586 MiB/s. Set RAY_verbose_spill_logs=0 to disable this message.\n", + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0011 +- 0.00120.0222 +- 0.0129
test_metrics0.8084 +- 0.01480.8244 +- 0.00530.8208 +- 0.0070.7594 +- 0.04590.8895 +- 0.0380.9147 +- 0.00720.1151 +- 0.00590.383 +- 0.0182
HAIM----------0.917----
NON_HAIM----------0.912----
\n", - "" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.8084 +- 0.0148 0.8244 +- 0.0053 0.8208 +- 0.007 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.7594 +- 0.0459 0.8895 +- 0.038 0.9147 +- 0.0072 \n", - "HAIM -- -- 0.917 \n", - "NON_HAIM -- -- 0.912 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0011 +- 0.0012 0.0222 +- 0.0129 \n", - "test_metrics 0.1151 +- 0.0059 0.383 +- 0.0182 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/CP_Edema', constants.EDEMA)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ce87c55", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "haim" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -347,7 +460,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index 000b195..f922e81 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -178,1665 +178,33 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "726c2332", "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 1/5\n", - "Configuring PyCaret for outer fold 1\n" + "2024-09-24 15:09:27,214\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8266 \u001b[39m\u001b[22m\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97220.71011.00000.97180.98570.48940.5692
10.94370.72121.00000.94290.97060.31730.4342
20.94370.83941.00000.94290.97060.31730.4342
30.95770.91821.00000.95650.97780.55350.6186
40.94370.60911.00000.94290.97060.31730.4342
Mean0.95220.75961.00000.95140.97510.39890.4981
Std0.01140.10780.00000.01150.00600.10200.0797
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.98610.81641.00000.98570.99280.79310.8106
10.94370.75451.00000.94290.97060.31730.4342
20.94370.93641.00000.94290.97060.31730.4342
30.95770.91821.00000.95650.97780.55350.6186
40.94370.60301.00000.94290.97060.31730.4342
Mean0.95500.80571.00000.95420.97650.45970.5464
Std0.01650.12130.00000.01660.00860.19010.1502
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.93750.61901.00000.93750.96770.00000.0000
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 2/5\n", - "Configuring PyCaret for outer fold 2\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.74881.00000.95830.97870.00000.0000
10.91550.74361.00000.91550.95590.00000.0000
20.92960.66061.00000.92960.96350.00000.0000
30.94370.53361.00000.94370.97100.00000.0000
40.95770.88431.00000.95710.97810.38620.4892
Mean0.94100.71421.00000.94080.96940.07720.0978
Std0.01650.11530.00000.01640.00870.15450.1957
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.71981.00000.95830.97870.00000.0000
10.91550.73331.00000.91550.95590.00000.0000
20.92960.73031.00000.92960.96350.00000.0000
30.94370.61941.00000.94370.97100.00000.0000
40.95770.88811.00000.95710.97810.38620.4892
Mean0.94100.73821.00000.94080.96940.07720.0978
Std0.01650.08600.00000.01640.00870.15450.1957
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95540.70431.00000.95410.97650.52700.5982
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 3/5\n", - "Configuring PyCaret for outer fold 3\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.69571.00000.95830.97870.00000.0000
10.95770.76971.00000.95650.97780.55350.6186
20.95770.90611.00000.95650.97780.55350.6186
30.92960.58480.98480.94200.96300.25580.2858
40.95770.77581.00000.95650.97780.55350.6186
Mean0.95220.74640.99700.95400.97500.38320.4283
Std0.01130.10540.00610.00600.00600.22360.2499
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95830.69081.00000.95830.97870.00000.0000
10.95770.78181.00000.95650.97780.55350.6186
20.95770.86671.00000.95650.97780.55350.6186
30.94370.57271.00000.94290.97060.31730.4342
40.95770.82421.00000.95650.97780.55350.6186
Mean0.95500.74731.00000.95420.97650.39550.4580
Std0.00570.10490.00000.00570.00300.21790.2399
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95500.79261.00000.95410.97650.42840.5221
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 4/5\n", - "Configuring PyCaret for outer fold 4\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97220.85991.00000.97180.98570.48940.5692
10.94370.74851.00000.94290.97060.31730.4342
20.95770.83031.00000.95650.97780.55350.6186
30.92960.86061.00000.92960.96350.00000.0000
40.94370.95151.00000.94290.97060.31730.4342
Mean0.94940.85021.00000.94870.97360.33550.4112
Std0.01450.06510.00000.01440.00750.19200.2182
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.98610.85511.00000.98570.99280.79310.8106
10.94370.76671.00000.94290.97060.31730.4342
20.95770.83031.00000.95650.97780.55350.6186
30.94370.84551.00000.94290.97060.31730.4342
40.95770.95761.00000.95650.97780.55350.6186
Mean0.95780.85101.00000.95690.97790.50690.5832
Std0.01550.06160.00000.01570.00810.17780.1404
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.94590.71021.00000.94550.97200.23800.3675
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 5/5\n", - "Configuring PyCaret for outer fold 5\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97220.95651.00000.97180.98570.48940.5692
10.95770.85451.00000.95650.97780.55350.6186
20.92960.73641.00000.92960.96350.00000.0000
30.95770.70301.00000.95650.97780.55350.6186
40.94370.72731.00000.94290.97060.31730.4342
Mean0.95220.79551.00000.95150.97510.38270.4481
Std0.01450.09600.00000.01430.00750.21000.2340
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97220.95651.00000.97180.98570.48940.5692
10.95770.85451.00000.95650.97780.55350.6186
20.92960.73641.00000.92960.96350.00000.0000
30.95770.70301.00000.95650.97780.55350.6186
40.94370.72731.00000.94290.97060.31730.4342
Mean0.95220.79551.00000.95150.97510.38270.4481
Std0.01450.09600.00000.01430.00750.21000.2340
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95500.79951.00000.95410.97650.42840.5221
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Final metrics table:\n", - " Metric Mean Std Dev\n", - "0 Accuracy 0.97220 0.013900\n", - "1 AUC 0.80772 0.107070\n", - "2 Recall 1.00000 0.000000\n", - "3 Prec. 0.97196 0.013700\n", - "4 F1 0.98574 0.007050\n", - "5 Kappa 0.41512 0.398718\n", - "6 MCC 0.43808 0.411875\n" + "ename": "TypeError", + "evalue": "missing a required argument: 'fixed_params'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Initialize the PyCaret Evaluator\u001b[39;00m\n\u001b[1;32m 2\u001b[0m evaluator \u001b[38;5;241m=\u001b[39m PyCaretEvaluator(dataset\u001b[38;5;241m=\u001b[39mdataset, target\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFracture\u001b[39m\u001b[38;5;124m\"\u001b[39m, experiment_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCP_Fracture\u001b[39m\u001b[38;5;124m\"\u001b[39m, filepath\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./results/fracture\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m evaluator\u001b[38;5;241m.\u001b[39mrun_experiment(\n\u001b[1;32m 5\u001b[0m train_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.8\u001b[39m,\n\u001b[1;32m 6\u001b[0m fold\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m 7\u001b[0m fold_strategy\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mkfold\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 8\u001b[0m outer_fold\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m 9\u001b[0m outer_strategy\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstratifiedkfold\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 10\u001b[0m session_id\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m42\u001b[39m,\n\u001b[1;32m 11\u001b[0m model\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mxgboost\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 12\u001b[0m optimize\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mAUC\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 13\u001b[0m custom_grid\u001b[38;5;241m=\u001b[39mgrid_hps, \u001b[38;5;66;03m# Grid d'hyperparamètres\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;66;03m# Paramètres fixes\u001b[39;00m\n\u001b[1;32m 15\u001b[0m )\n", + "File \u001b[0;32m~/HAIM-PyCaret1/HAIM_PyCaret/src/evaluation/pycaret_evaluator.py:122\u001b[0m, in \u001b[0;36mPyCaretEvaluator.run_experiment\u001b[0;34m(self, train_size, fold, fold_strategy, outer_fold, outer_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params)\u001b[0m\n\u001b[1;32m 119\u001b[0m ray_tasks \u001b[38;5;241m=\u001b[39m [] \u001b[38;5;66;03m# List to store Ray tasks\u001b[39;00m\n\u001b[1;32m 121\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, (train_index, test_index) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(outer_cv\u001b[38;5;241m.\u001b[39msplit(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;241m.\u001b[39mx, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;241m.\u001b[39my)):\n\u001b[0;32m--> 122\u001b[0m ray_task \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun_fold\u001b[38;5;241m.\u001b[39mremote(train_index, test_index, i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params)\n\u001b[1;32m 123\u001b[0m ray_tasks\u001b[38;5;241m.\u001b[39mappend(ray_task)\n\u001b[1;32m 125\u001b[0m \u001b[38;5;66;03m# Collect all results from Ray tasks\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/remote_function.py:139\u001b[0m, in \u001b[0;36mRemoteFunction.__init__.._remote_proxy\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 137\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(function)\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_remote_proxy\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m--> 139\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_remote(args\u001b[38;5;241m=\u001b[39margs, kwargs\u001b[38;5;241m=\u001b[39mkwargs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_default_options)\n", + "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/_private/auto_init_hook.py:21\u001b[0m, in \u001b[0;36mwrap_auto_init..auto_init_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(fn)\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mauto_init_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 20\u001b[0m auto_init_ray()\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/util/tracing/tracing_helper.py:310\u001b[0m, in \u001b[0;36m_tracing_task_invocation.._invocation_remote_span\u001b[0;34m(self, args, kwargs, *_args, **_kwargs)\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 309\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_ray_trace_ctx\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m kwargs\n\u001b[0;32m--> 310\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m method(\u001b[38;5;28mself\u001b[39m, args, kwargs, \u001b[38;5;241m*\u001b[39m_args, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m_kwargs)\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_ray_trace_ctx\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m kwargs\n\u001b[1;32m 313\u001b[0m tracer \u001b[38;5;241m=\u001b[39m _opentelemetry\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mget_tracer(\u001b[38;5;18m__name__\u001b[39m)\n", + "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/remote_function.py:468\u001b[0m, in \u001b[0;36mRemoteFunction._remote\u001b[0;34m(self, args, kwargs, **task_options)\u001b[0m\n\u001b[1;32m 465\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_decorator \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 466\u001b[0m invocation \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_decorator(invocation)\n\u001b[0;32m--> 468\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m invocation(args, kwargs)\n", + "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/remote_function.py:427\u001b[0m, in \u001b[0;36mRemoteFunction._remote..invocation\u001b[0;34m(args, kwargs)\u001b[0m\n\u001b[1;32m 425\u001b[0m list_args \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 426\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 427\u001b[0m list_args \u001b[38;5;241m=\u001b[39m ray\u001b[38;5;241m.\u001b[39m_private\u001b[38;5;241m.\u001b[39msignature\u001b[38;5;241m.\u001b[39mflatten_args(\n\u001b[1;32m 428\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_function_signature, args, kwargs\n\u001b[1;32m 429\u001b[0m )\n\u001b[1;32m 431\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m worker\u001b[38;5;241m.\u001b[39mmode \u001b[38;5;241m==\u001b[39m ray\u001b[38;5;241m.\u001b[39m_private\u001b[38;5;241m.\u001b[39mworker\u001b[38;5;241m.\u001b[39mLOCAL_MODE:\n\u001b[1;32m 432\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m (\n\u001b[1;32m 433\u001b[0m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_cross_language\n\u001b[1;32m 434\u001b[0m ), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCross language remote function cannot be executed locally.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/_private/signature.py:110\u001b[0m, in \u001b[0;36mflatten_args\u001b[0;34m(signature_parameters, args, kwargs)\u001b[0m\n\u001b[1;32m 108\u001b[0m reconstructed_signature\u001b[38;5;241m.\u001b[39mbind(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 109\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc: \u001b[38;5;66;03m# capture a friendlier stacktrace\u001b[39;00m\n\u001b[0;32m--> 110\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;28mstr\u001b[39m(exc)) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 111\u001b[0m list_args \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m arg \u001b[38;5;129;01min\u001b[39;00m args:\n", + "\u001b[0;31mTypeError\u001b[0m: missing a required argument: 'fixed_params'" ] } ], @@ -1854,16 +222,16 @@ " model='xgboost',\n", " optimize='AUC',\n", " custom_grid=grid_hps, # Grid d'hyperparamètres\n", - " # Paramètres fixes\n", + " fixed_params=fixed_params # Paramètres fixes\n", ")" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -1875,7 +243,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, From 3668b4e94cc5bcce3549d800e8db6fbc2fe18f38 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Thu, 26 Sep 2024 11:16:11 -0400 Subject: [PATCH 16/37] Training of the lung lesion task --- notebooks/lung-lesion.ipynb | 1699 ++--------------------------------- 1 file changed, 97 insertions(+), 1602 deletions(-) diff --git a/notebooks/lung-lesion.ipynb b/notebooks/lung-lesion.ipynb index 9428e81..1b43aa1 100644 --- a/notebooks/lung-lesion.ipynb +++ b/notebooks/lung-lesion.ipynb @@ -178,1660 +178,155 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 1/5\n", - "Configuring PyCaret for outer fold 1\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97480.94391.00000.97440.98700.56090.6243
10.95800.85261.00000.95800.97850.00000.0000
20.96640.83161.00000.96610.98280.32390.4396
30.95800.82111.00000.95800.97850.00000.0000
40.94960.95430.99120.95730.97390.23060.2686
Mean0.96130.88070.99820.96270.98020.22310.2665
Std0.00860.05690.00350.00670.00440.21160.2450
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "2024-09-26 10:03:33,478\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97480.94041.00000.97440.98700.56090.6243
10.95800.83161.00000.95800.97850.00000.0000
20.96640.81931.00000.96610.98280.32390.4396
30.95800.77371.00000.95800.97850.00000.0000
40.96640.96171.00000.96580.98260.48710.5674
Mean0.96470.86531.00000.96440.98190.27440.3263
Std0.00630.07290.00000.00610.00320.23680.2730
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=396015)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Configuring PyCaret for outer fold 1\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m Outer fold 2\u001b[32m [repeated 3x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)\u001b[0m\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96770.82791.00000.96740.98340.38950.4918
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 2/5\n", - "Configuring PyCaret for outer fold 2\n" + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.91231.00000.96610.98280.32390.4396
10.96640.78951.00000.96610.98280.32390.4396
20.96640.81051.00000.96610.98280.32390.4396
30.95800.65961.00000.95800.97850.00000.0000
40.96640.88941.00000.96580.98260.48710.5674
Mean0.96470.81231.00000.96440.98190.29170.3772
Std0.00340.08920.00000.00320.00170.15900.1950
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=396014)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=396014)\u001b[0m 0 0.9748 0.9912 1.0 0.9744 0.9870 0.5609 0.6243\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m 1 0.9664 0.5982 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m 2 0.9664 0.8491 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m 3 0.9664 0.6754 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m 4 0.9664 0.8230 1.0 0.9658 0.9826 0.4871 0.5674\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m Mean 0.9681 0.7874 1.0 0.9677 0.9836 0.4039 0.5021\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m Std 0.0034 0.1378 0.0 0.0033 0.0017 0.1008 0.0786\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m Configuring PyCaret for outer fold 2\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 0 0.9748 0.9140 1.0 0.9744 0.9870 0.5609 0.6243\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 1 0.9580 0.8474 1.0 0.9580 0.9785 0.0000 0.0000\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 2 0.9580 0.8614 1.0 0.9580 0.9785 0.0000 0.0000\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 3 0.9580 0.7509 1.0 0.9580 0.9785 0.0000 0.0000\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 4 0.9580 0.9248 1.0 0.9576 0.9784 0.2753 0.3995\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m 0 0.9664 0.8965 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m 1 0.9580 0.7368 1.0 0.9580 0.9785 0.0000 0.0000\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m 2 0.9664 0.7228 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m 3 0.9580 0.7789 1.0 0.9580 0.9785 0.0000 0.0000\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m 4 0.9664 0.8687 1.0 0.9658 0.9826 0.4871 0.5674\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m 0 0.9664 0.7509 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m 1 0.9748 0.6825 1.0 0.9744 0.9870 0.5609 0.6243\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m 2 0.9664 0.5632 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m 3 0.9580 0.7158 1.0 0.9580 0.9785 0.0000 0.0000\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m 4 0.9580 0.8274 1.0 0.9576 0.9784 0.2753 0.3995\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m Fold \u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m Mean 0.9647 0.7079 1.0 0.9644 0.9819 0.2968 0.3806\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m Std 0.0063 0.0869 0.0 0.0062 0.0032 0.1788 0.2057\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 0 Extreme Gradient Boosting 0.9677 0.7893 ... 0.9834 0.3895 0.4918\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m \n", + "\u001b[36m(run_fold pid=396015)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Outer fold 5\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Configuring PyCaret for outer fold 5\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.90881.00000.96610.98280.32390.4396
10.97480.77021.00000.97440.98700.56090.6243
20.96640.78251.00000.96610.98280.32390.4396
30.95800.73331.00000.95800.97850.00000.0000
40.96640.90861.00000.96580.98260.48710.5674
Mean0.96640.82071.00000.96610.98270.33910.4142
Std0.00530.07370.00000.00520.00270.19320.2193
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96770.92631.00000.96740.98340.38950.4918
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Outer fold 3/5\n", - "Configuring PyCaret for outer fold 3\n" + "\u001b[36m(run_fold pid=396014)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m 0 Extreme Gradient Boosting 0.957 0.7781 ... 0.978 0.0 0.0\n", + "\u001b[36m(run_fold pid=396014)\u001b[0m \n", + "\u001b[36m(run_fold pid=396014)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m 0 Extreme Gradient Boosting 0.9677 0.9256 ... 0.9834 0.3895 0.4918\n", + "\u001b[36m(run_fold pid=396009)\u001b[0m \n", + "\u001b[36m(run_fold pid=396009)\u001b[0m [1 rows x 8 columns]\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.84741.00000.96610.98280.32390.4396
10.97480.75441.00000.97440.98700.56090.6243
20.96640.60001.00000.96610.98280.32390.4396
30.95800.76841.00000.95800.97850.00000.0000
40.94960.79651.00000.94960.97410.00000.0000
Mean0.96300.75331.00000.96280.98100.24170.3007
Std0.00860.08300.00000.00840.00440.21550.2546
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "Processing: 75%|███████▌ | 3/4 [00:26<00:09, 9.83s/it]\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.81931.00000.96610.98280.32390.4396
10.97480.60001.00000.97440.98700.56090.6243
20.96640.67021.00000.96610.98280.32390.4396
30.95800.77541.00000.95800.97850.00000.0000
40.94960.68581.00000.94960.97410.00000.0000
Mean0.96300.71021.00000.96280.98100.24170.3007
Std0.00860.07810.00000.00840.00440.21550.2546
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=396015)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 0 0.9664 0.8263 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 1 0.9664 0.7684 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 2 0.9664 0.8368 1.0 0.9661 0.9828 0.3239 0.4396\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 3 0.9580 0.9070 1.0 0.9580 0.9785 0.0000 0.0000\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 4 0.9580 0.9307 1.0 0.9576 0.9784 0.2753 0.3995\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Mean 0.9630 0.8539 1.0 0.9628 0.9810 0.2494 0.3436\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Std 0.0041 0.0584 0.0 0.0041 0.0021 0.1261 0.1725\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96240.87291.00000.96220.98070.21470.3468
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 4/5\n", - "Configuring PyCaret for outer fold 4\n" + " \n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.96671.00000.95800.97850.00000.0000
10.96640.64911.00000.96610.98280.32390.4396
20.96640.66141.00000.96610.98280.32390.4396
30.96640.61401.00000.96610.98280.32390.4396
40.96640.84511.00000.96580.98260.48710.5674
Mean0.96470.74731.00000.96440.98190.29170.3772
Std0.00340.13600.00000.00320.00170.15900.1950
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.95800.95441.00000.95800.97850.00000.0000
10.97480.68771.00000.97440.98700.56090.6243
20.96640.64391.00000.96610.98280.32390.4396
30.96640.52281.00000.96610.98280.32390.4396
40.96640.85991.00000.96580.98260.48710.5674
Mean0.96640.73371.00000.96610.98270.33910.4142
Std0.00530.15450.00000.00520.00270.19320.2193
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.95700.83081.00000.95700.97800.00000.0000
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 5/5\n", - "Configuring PyCaret for outer fold 5\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.88601.00000.96610.98280.32390.4396
10.96640.72111.00000.96610.98280.32390.4396
20.96640.73511.00000.96610.98280.32390.4396
30.96640.89121.00000.96610.98280.32390.4396
40.96640.85401.00000.96580.98260.48710.5674
Mean0.96640.81751.00000.96600.98270.35650.4651
Std0.00000.07420.00000.00010.00010.06530.0511
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.96640.77891.00000.96610.98280.32390.4396
10.96640.70181.00000.96610.98280.32390.4396
20.96640.71581.00000.96610.98280.32390.4396
30.96640.90701.00000.96610.98280.32390.4396
40.96640.87321.00000.96580.98260.48710.5674
Mean0.96640.79531.00000.96600.98270.35650.4651
Std0.00000.08230.00000.00010.00010.06530.0511
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n", - "Original model was better than the tuned model, hence it will be returned. NOTE: The display metrics are for the tuned model (not the original one).\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.96240.82861.00000.96200.98060.35220.4624
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ + "\u001b[36m(run_fold pid=396012)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m 0 Extreme Gradient Boosting 0.9624 0.8729 ... 0.9807 0.2147 0.3468\n", + "\u001b[36m(run_fold pid=396012)\u001b[0m \n", + "\u001b[36m(run_fold pid=396012)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m 0 Extreme Gradient Boosting 0.9624 0.7866 ... 0.9806 0.3522 0.4624\n", + "\u001b[36m(run_fold pid=396015)\u001b[0m \n", + "\u001b[36m(run_fold pid=396015)\u001b[0m [1 rows x 8 columns]\n", "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.96640 0.005940\n", - "1 AUC 0.88036 0.077327\n", + "0 Accuracy 0.96976 0.004601\n", + "1 AUC 0.88772 0.069591\n", "2 Recall 1.00000 0.000000\n", - "3 Prec. 0.96614 0.005799\n", - "4 F1 0.98278 0.003005\n", - "5 Kappa 0.30652 0.199731\n", - "6 MCC 0.38862 0.231499\n" + "3 Prec. 0.96942 0.004546\n", + "4 F1 0.98448 0.002300\n", + "5 Kappa 0.41870 0.129810\n", + "6 MCC 0.51348 0.101164\n" ] } ], @@ -1856,9 +351,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -1870,7 +365,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, From d4e17bda86f5fbaa7ecf96b0bdd42131fc1be9e4 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Fri, 27 Sep 2024 09:49:06 -0400 Subject: [PATCH 17/37] Training of the consolidation and enlarged cardiomediastinum tasks --- notebooks/consolidation.ipynb | 1692 ++----------------- notebooks/enlarged-cardiomediastinum.ipynb | 1698 ++------------------ 2 files changed, 222 insertions(+), 3168 deletions(-) diff --git a/notebooks/consolidation.ipynb b/notebooks/consolidation.ipynb index 85eec1e..81e0c7b 100644 --- a/notebooks/consolidation.ipynb +++ b/notebooks/consolidation.ipynb @@ -178,1663 +178,225 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 1/5\n", - "Configuring PyCaret for outer fold 1\n", - "Creating model xgboost for outer fold 1\n" + "2024-09-26 15:25:14,862\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8266 \u001b[39m\u001b[22m\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.87940.88120.95480.90240.92790.56070.5692
10.89340.92330.97200.90400.93680.59890.6154
20.89670.91690.96560.91260.93830.62100.6305
30.91240.95160.97410.92240.94760.68280.6923
40.90190.92890.97200.91300.94150.63900.6513
Mean0.89680.92040.96770.91090.93840.62050.6317
Std0.01080.02280.00700.00720.00640.04070.0406
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=469104)\u001b[0m Outer fold 2\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Configuring PyCaret for outer fold 2\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Outer fold 1\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.88460.88830.96130.90300.93120.57470.5858
10.90210.92400.97420.91150.94180.63620.6504
20.90720.93070.97420.91700.94470.65680.6687
30.91590.95620.97410.92620.94960.69790.7060
40.90890.93740.97840.91530.94580.66210.6769
Mean0.90380.92730.97250.91460.94260.64550.6576
Std0.01050.02230.00580.00760.00620.04060.0401
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.88580.91660.95740.90740.93170.58390.5919
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Outer fold 2/5\n", - "Configuring PyCaret for outer fold 2\n", - "Creating model xgboost for outer fold 2\n" + "\u001b[36m(run_fold pid=469104)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 0 0.8986 0.8979 0.9699 0.9111 0.9396 0.6263 0.6383\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 1 0.8899 0.9118 0.9720 0.9004 0.9349 0.5823 0.6006\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 2 0.9335 0.9586 0.9763 0.9439 0.9598 0.7663 0.7700\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 3 0.9037 0.9242 0.9763 0.9116 0.9429 0.6379 0.6535\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 4 0.8914 0.8882 0.9591 0.9119 0.9349 0.6098 0.6169\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Mean 0.9034 0.9161 0.9707 0.9158 0.9424 0.6445 0.6559\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Std 0.0158 0.0245 0.0064 0.0147 0.0092 0.0637 0.0599\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Configuring PyCaret for outer fold 1\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.89860.89790.96990.91110.93960.62630.6383
10.88990.91180.97200.90040.93490.58230.6006
20.93350.95860.97630.94390.95980.76630.7700
30.90370.92420.97630.91160.94290.63790.6535
40.89140.88820.95910.91190.93490.60980.6169
Mean0.90340.91610.97070.91580.94240.64450.6559
Std0.01580.02450.00640.01470.00920.06370.0599
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + " \n", + "Processing: 75%|███████▌ | 3/4 [02:48<01:02, 62.39s/it]\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90380.89930.97200.91500.94260.64700.6585
10.88810.90930.96340.90510.93330.58760.5989
20.93870.96370.97420.95170.96280.78880.7906
30.91770.92610.98710.91800.95130.68800.7074
40.90370.89100.97840.90980.94290.63820.6558
Mean0.91040.91790.97500.91990.94660.66990.6822
Std0.01700.02570.00780.01650.00990.06750.0641
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=469091)\u001b[0m 0 0.8794 0.8812 0.9548 0.9024 0.9279 0.5607 0.5692\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 1 0.8934 0.9233 0.9720 0.9040 0.9368 0.5989 0.6154\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 2 0.8967 0.9169 0.9656 0.9126 0.9383 0.6210 0.6305\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 3 0.9124 0.9516 0.9741 0.9224 0.9476 0.6828 0.6923\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 4 0.9019 0.9289 0.9720 0.9130 0.9415 0.6390 0.6513\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Mean 0.8968 0.9204 0.9677 0.9109 0.9384 0.6205 0.6317\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Std 0.0108 0.0228 0.0070 0.0072 0.0064 0.0407 0.0406\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 0 Extreme Gradient Boosting 0.8914 0.9072 ... 0.9353 0.5994 0.611\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m \n", + "\u001b[36m(run_fold pid=469104)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Outer fold 3\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Configuring PyCaret for outer fold 3\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.87790.90130.96140.89600.92760.54270.5566
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 3/5\n", - "Configuring PyCaret for outer fold 3\n", - "Creating model xgboost for outer fold 3\n" + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.88640.90670.96130.90490.93220.58280.5932
10.91260.92440.96990.92610.94750.68790.6945
20.88090.90050.96990.89310.92990.53900.5600
30.91770.94380.98280.92140.95110.69310.7078
40.90540.92210.98060.91000.94400.64330.6623
Mean0.90060.91950.97290.91110.94090.62920.6435
Std0.01450.01510.00790.01180.00840.06000.0576
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=469091)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 0 Extreme Gradient Boosting 0.888 0.9128 ... 0.933 0.5942 0.6014\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m \n", + "\u001b[36m(run_fold pid=469091)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Outer fold 4\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Configuring PyCaret for outer fold 4\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.89690.91580.97420.90600.93890.61200.6289
10.91080.92250.97850.91730.94690.67000.6839
20.88440.90860.96990.89660.93180.55630.5754
30.92120.95390.98280.92510.95310.70860.7214
40.91240.91720.98060.91730.94790.67510.6902
Mean0.90510.92360.97720.91250.94370.64440.6600
Std0.01300.01580.00460.01000.00750.05390.0517
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.91710.94370.97660.92560.95040.69980.7092
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Outer fold 4/5\n", - "Configuring PyCaret for outer fold 4\n", - "Creating model xgboost for outer fold 4\n" + "\u001b[36m(run_fold pid=469104)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 0 0.8864 0.9067 0.9613 0.9049 0.9322 0.5828 0.5932\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 1 0.9126 0.9244 0.9699 0.9261 0.9475 0.6879 0.6945\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 2 0.8809 0.9005 0.9699 0.8931 0.9299 0.5390 0.5600\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 3 0.9177 0.9438 0.9828 0.9214 0.9511 0.6931 0.7078\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 4 0.9054 0.9221 0.9806 0.9100 0.9440 0.6433 0.6623\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Mean 0.9006 0.9195 0.9729 0.9111 0.9409 0.6292 0.6435\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Std 0.0145 0.0151 0.0079 0.0118 0.0084 0.0600 0.0576\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90380.92650.97200.91500.94260.64700.6585
10.88990.90600.97630.89720.93510.57520.5985
20.89670.92560.97200.90760.93870.61160.6265
30.91940.92820.97850.92670.95190.70570.7157
40.88790.88970.95910.90820.93290.59400.6023
Mean0.89950.91520.97160.91090.94030.62670.6403
Std0.01140.01510.00680.00970.00670.04600.0433
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + " \n", + "Processing: 75%|███████▌ | 3/4 [02:28<00:54, 54.91s/it]\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90730.92970.96990.92040.94450.66520.6737
10.88990.90530.98280.89260.93550.56420.5966
20.91590.93160.98490.91780.95020.68270.7006
30.91770.93130.98060.92310.95100.69560.7082
40.89320.90630.96120.91210.93600.61460.6224
Mean0.90480.92080.97590.91320.94340.64450.6603
Std0.01140.01230.00900.01090.00670.04870.0438
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=469091)\u001b[0m 0 0.9038 0.9265 0.9720 0.9150 0.9426 0.6470 0.6585\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 1 0.8899 0.9060 0.9763 0.8972 0.9351 0.5752 0.5985\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 2 0.8967 0.9256 0.9720 0.9076 0.9387 0.6116 0.6265\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 3 0.9194 0.9282 0.9785 0.9267 0.9519 0.7057 0.7157\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 4 0.8879 0.8897 0.9591 0.9082 0.9329 0.5940 0.6023\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Mean 0.8995 0.9152 0.9716 0.9109 0.9403 0.6267 0.6403\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Std 0.0114 0.0151 0.0068 0.0097 0.0067 0.0460 0.0433\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.91150.93540.98210.91530.94750.66860.6857
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 5/5\n", - "Configuring PyCaret for outer fold 5\n", - "Creating model xgboost for outer fold 5\n" + " \n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.89340.89450.96560.90890.93640.60850.6193
10.90910.92060.97420.91890.94570.66760.6786
20.90540.90670.97200.91680.94360.65170.6626
30.91070.93080.98060.91570.94700.66420.6805
40.89140.88670.97200.90200.93570.59050.6079
Mean0.90200.90790.97290.91250.94170.63650.6498
Std0.00810.01620.00480.00620.00470.03120.0304
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=469104)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 0 Extreme Gradient Boosting 0.9104 0.9406 ... 0.946 0.6835 0.6884\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m \n", + "\u001b[36m(run_fold pid=469104)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Outer fold 5\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Configuring PyCaret for outer fold 5\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.90730.90280.98280.91040.94520.64860.6690
10.91260.92090.97850.91920.94790.67780.6908
20.90020.91420.97630.90800.94090.62160.6391
30.90890.93730.97630.91720.94580.66190.6748
40.90020.88850.97630.90780.94080.62500.6423
Mean0.90580.91270.97810.91250.94410.64700.6632
Std0.00490.01650.00250.00480.00280.02140.0198
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.90820.94800.97800.91490.94540.65870.6734
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + " \n" + ] }, { "name": "stdout", "output_type": "stream", "text": [ + "\u001b[36m(run_fold pid=469091)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m 0 Extreme Gradient Boosting 0.9071 0.9376 ... 0.945 0.6481 0.6679\n", + "\u001b[36m(run_fold pid=469091)\u001b[0m \n", + "\u001b[36m(run_fold pid=469091)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m 0 Extreme Gradient Boosting 0.9093 0.9518 ... 0.9462 0.6602 0.6771\n", + "\u001b[36m(run_fold pid=469104)\u001b[0m \n", + "\u001b[36m(run_fold pid=469104)\u001b[0m [1 rows x 8 columns]\n", "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.89998 0.009589\n", - "1 AUC 0.90718 0.015962\n", - "2 Recall 0.97204 0.007752\n", - "3 Prec. 0.91096 0.006959\n", - "4 F1 0.94048 0.005735\n", - "5 Kappa 0.62950 0.036245\n", - "6 MCC 0.64318 0.036501\n" + "0 Accuracy 0.89718 0.006071\n", + "1 AUC 0.91178 0.015454\n", + "2 Recall 0.97072 0.009087\n", + "3 Prec. 0.90902 0.004655\n", + "4 F1 0.93884 0.003827\n", + "5 Kappa 0.61870 0.019738\n", + "6 MCC 0.63286 0.021338\n" ] } ], diff --git a/notebooks/enlarged-cardiomediastinum.ipynb b/notebooks/enlarged-cardiomediastinum.ipynb index 5330d78..5e2368d 100644 --- a/notebooks/enlarged-cardiomediastinum.ipynb +++ b/notebooks/enlarged-cardiomediastinum.ipynb @@ -179,1663 +179,155 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 1/5\n", - "Configuring PyCaret for outer fold 1\n", - "Creating model xgboost for outer fold 1\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.86370.89280.96080.86980.91300.60200.6182
10.82930.86230.92790.85500.88990.51230.5209
20.86340.88870.94100.88310.91110.61770.6235
30.87070.87230.97060.87100.91810.61590.6367
40.86340.88020.97710.85920.91440.58380.6145
Mean0.85810.87930.95550.86760.90930.58630.6028
Std0.01470.01110.01840.00990.01000.03900.0416
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "2024-09-26 11:11:21,998\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85890.89580.95420.86900.90970.59060.6043
10.82930.86660.92130.85930.88920.51890.5249
20.86100.88860.93440.88510.90910.61470.6188
30.87800.87460.97390.87650.92260.63900.6591
40.86830.88540.98040.86210.91740.59870.6301
Mean0.85910.88220.95280.87040.90960.59240.6075
Std0.01640.01040.02250.00950.01140.04030.0450
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=409777)\u001b[0m Outer fold 2\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m Configuring PyCaret for outer fold 2\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m Outer fold 4\u001b[32m [repeated 3x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)\u001b[0m\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.85510.90390.95400.86530.90750.57770.5926
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 2/5\n", - "Configuring PyCaret for outer fold 2\n", - "Creating model xgboost for outer fold 2\n" + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.82970.85040.93460.85120.89100.50590.5177
10.86620.90810.97060.86590.91530.60220.6250
20.83900.86270.93770.85890.89660.53700.5477
30.84150.89960.93770.86140.89800.54560.5556
40.84630.86050.98370.83840.90530.51210.5616
Mean0.84450.87620.95290.85520.90120.54060.5615
Std0.01210.02310.02030.00960.00840.03420.0351
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=409766)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=409766)\u001b[0m 0 0.8370 0.8827 0.9379 0.8567 0.8955 0.5287 0.5401\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m 1 0.8394 0.8575 0.9608 0.8448 0.8991 0.5140 0.5405\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m 2 0.8537 0.8810 0.9443 0.8701 0.9057 0.5820 0.5918\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m 3 0.8415 0.8587 0.9216 0.8731 0.8967 0.5574 0.5612\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m 4 0.8366 0.8807 0.9379 0.8567 0.8955 0.5247 0.5361\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m Mean 0.8416 0.8721 0.9405 0.8603 0.8985 0.5414 0.5539\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m Std 0.0063 0.0115 0.0126 0.0102 0.0038 0.0249 0.0208\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Configuring PyCaret for outer fold 1\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.83210.84890.93790.85160.89270.51130.5241
10.86860.91750.97390.86630.91690.60800.6326
20.85370.85620.95080.86570.90620.57620.5896
30.85120.90370.94750.86530.90450.57060.5829
40.86100.87460.98690.85070.91380.56520.6094
Mean0.85330.88020.95940.85990.90680.56630.5877
Std0.01220.02660.01810.00720.00840.03130.0362
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + " \n", + "Processing: 75%|███████▌ | 3/4 [02:46<01:01, 61.57s/it]\u001b[32m [repeated 3x across cluster]\u001b[0m\n" ] }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.87050.91480.95610.88050.91680.62770.6386
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Outer fold 3/5\n", - "Configuring PyCaret for outer fold 3\n", - "Creating model xgboost for outer fold 3\n" + "\u001b[36m(run_fold pid=409770)\u001b[0m 0 0.8491 0.8723 0.9608 0.8547 0.9046 0.5500 0.5722\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m 1 0.8394 0.8769 0.9444 0.8550 0.8975 0.5309 0.5452\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m 2 0.8341 0.8788 0.9410 0.8516 0.8941 0.5164 0.5303\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m 3 0.8366 0.8694 0.9443 0.8521 0.8958 0.5218 0.5369\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m 4 0.8341 0.8473 0.9346 0.8563 0.8938 0.5192 0.5297\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m 0 0.8297 0.8504 0.9346 0.8512 0.8910 0.5059 0.5177\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m 1 0.8662 0.9081 0.9706 0.8659 0.9153 0.6022 0.6250\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m 2 0.8390 0.8627 0.9377 0.8589 0.8966 0.5370 0.5477\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m 3 0.8415 0.8996 0.9377 0.8614 0.8980 0.5456 0.5556\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m 4 0.8463 0.8605 0.9837 0.8384 0.9053 0.5121 0.5616\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 0 0.8637 0.8928 0.9608 0.8698 0.9130 0.6020 0.6182\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 1 0.8293 0.8623 0.9279 0.8550 0.8899 0.5123 0.5209\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 2 0.8634 0.8887 0.9410 0.8831 0.9111 0.6177 0.6235\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 3 0.8707 0.8723 0.9706 0.8710 0.9181 0.6159 0.6367\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 4 0.8634 0.8802 0.9771 0.8592 0.9144 0.5838 0.6145\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Fold \u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Mean 0.8581 0.8793 0.9555 0.8676 0.9093 0.5863 0.6028\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Std 0.0147 0.0111 0.0184 0.0099 0.0100 0.0390 0.0416\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\u001b[32m [repeated 3x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 0 Extreme Gradient Boosting 0.8551 0.9127 ... 0.9078 0.574 0.5917\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m \n", + "\u001b[36m(run_fold pid=409778)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Outer fold 5\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Configuring PyCaret for outer fold 5\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.84910.87230.96080.85470.90460.55000.5722
10.83940.87690.94440.85500.89750.53090.5452
20.83410.87880.94100.85160.89410.51640.5303
30.83660.86940.94430.85210.89580.52180.5369
40.83410.84730.93460.85630.89380.51920.5297
Mean0.83870.86890.94500.85390.89720.52770.5429
Std0.00560.01130.00860.00180.00400.01220.0157
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85890.88300.96080.86470.91020.58490.6030
10.82970.86820.95750.83710.89330.48080.5087
20.84630.89560.95080.85800.90200.55040.5663
30.84150.86730.95740.84880.89980.52620.5489
40.83410.86470.93460.85630.89380.51920.5297
Mean0.84210.87580.95220.85300.89980.53230.5513
Std0.01020.01180.00940.00940.00620.03450.0322
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=409777)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m 0 Extreme Gradient Boosting 0.8658 0.9142 ... 0.9143 0.6082 0.6233\n", + "\u001b[36m(run_fold pid=409777)\u001b[0m \n", + "\u001b[36m(run_fold pid=409777)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m 0 Extreme Gradient Boosting 0.8471 0.8904 ... 0.9016 0.5617 0.5718\n", + "\u001b[36m(run_fold pid=409766)\u001b[0m \n", + "\u001b[36m(run_fold pid=409766)\u001b[0m [1 rows x 8 columns]\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.87990.90380.96440.88480.92290.65310.6657
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 4/5\n", - "Configuring PyCaret for outer fold 4\n", - "Creating model xgboost for outer fold 4\n" + "Processing: 75%|███████▌ | 3/4 [02:33<00:56, 56.59s/it]\n", + " \n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.83700.88270.93790.85670.89550.52870.5401
10.83940.85750.96080.84480.89910.51400.5405
20.85370.88100.94430.87010.90570.58200.5918
30.84150.85870.92160.87310.89670.55740.5612
40.83660.88070.93790.85670.89550.52470.5361
Mean0.84160.87210.94050.86030.89850.54140.5539
Std0.00630.01150.01260.01020.00380.02490.0208
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85890.88880.95100.87130.90940.59340.6052
10.84180.86780.96410.84530.90080.51970.5481
20.84390.86860.94430.85970.90000.54800.5607
30.86100.86160.95100.87390.91080.59840.6095
40.82440.90040.94440.84010.88920.47260.4920
Mean0.84600.87750.95090.85800.90200.54640.5631
Std0.01330.01470.00720.01350.00780.04710.0429
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.84090.88760.94340.85710.89820.53770.5509
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outer fold 5/5\n", - "Configuring PyCaret for outer fold 5\n", - "Creating model xgboost for outer fold 5\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.85400.88600.94440.87050.90600.58230.5921
10.85160.87580.93460.87460.90360.58240.5885
20.85610.87560.93770.87730.90650.59580.6021
30.85370.89070.93140.87960.90480.59010.5946
40.83900.88290.93460.86140.89660.53660.5458
Mean0.85090.88220.93660.87270.90350.57740.5846
Std0.00610.00580.00440.00640.00360.02100.0199
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" - ] - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.87350.89600.96410.87800.91900.63300.6477
10.86620.89530.95100.87920.91370.61840.6279
20.84390.86520.93110.86850.89870.56010.5666
30.86340.89110.94440.88110.91170.61220.6194
40.84150.89250.93460.86400.89800.54520.5537
Mean0.85770.88800.94510.87420.90820.59380.6031
Std0.01270.01160.01180.00670.00840.03460.0364
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.84400.85450.95180.85500.90080.54070.5581
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ + "\u001b[36m(run_fold pid=409778)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 0 0.8540 0.8860 0.9444 0.8705 0.9060 0.5823 0.5921\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 1 0.8516 0.8758 0.9346 0.8746 0.9036 0.5824 0.5885\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 2 0.8561 0.8756 0.9377 0.8773 0.9065 0.5958 0.6021\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 3 0.8537 0.8907 0.9314 0.8796 0.9048 0.5901 0.5946\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 4 0.8390 0.8829 0.9346 0.8614 0.8966 0.5366 0.5458\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Mean 0.8509 0.8822 0.9366 0.8727 0.9035 0.5774 0.5846\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Std 0.0061 0.0058 0.0044 0.0064 0.0036 0.0210 0.0199\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m 0 Extreme Gradient Boosting 0.8768 0.9039 ... 0.9212 0.6409 0.6561\n", + "\u001b[36m(run_fold pid=409770)\u001b[0m \n", + "\u001b[36m(run_fold pid=409770)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m 0 Extreme Gradient Boosting 0.844 0.8559 ... 0.901 0.5386 0.5575\n", + "\u001b[36m(run_fold pid=409778)\u001b[0m \n", + "\u001b[36m(run_fold pid=409778)\u001b[0m [1 rows x 8 columns]\n", "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.85646 0.015014\n", - "1 AUC 0.88250 0.019545\n", - "2 Recall 0.95360 0.010194\n", - "3 Prec. 0.86692 0.009822\n", - "4 F1 0.90820 0.009547\n", - "5 Kappa 0.58264 0.044186\n", - "6 MCC 0.59686 0.044837\n" + "0 Accuracy 0.84914 0.014792\n", + "1 AUC 0.88818 0.019344\n", + "2 Recall 0.95358 0.007442\n", + "3 Prec. 0.85932 0.011658\n", + "4 F1 0.90398 0.009124\n", + "5 Kappa 0.55656 0.046711\n", + "6 MCC 0.57342 0.045301\n" ] } ], From a1f4f0246175829068422d7b6deaeacb3a3ecec4 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Mon, 30 Sep 2024 11:48:03 -0400 Subject: [PATCH 18/37] Training of the pneumothorax task --- notebooks/fracture.ipynb | 138 ++++++++++++++-- notebooks/pneumothorax.ipynb | 239 +++++++++++++++++++++++++++- src/evaluation/pycaret_evaluator.py | 2 +- 3 files changed, 354 insertions(+), 25 deletions(-) diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index f922e81..6df1d1a 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -186,25 +186,131 @@ "name": "stderr", "output_type": "stream", "text": [ - "2024-09-24 15:09:27,214\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8266 \u001b[39m\u001b[22m\n" + "2024-09-24 15:22:48,738\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8266 \u001b[39m\u001b[22m\n" ] }, { - "ename": "TypeError", - "evalue": "missing a required argument: 'fixed_params'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[5], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Initialize the PyCaret Evaluator\u001b[39;00m\n\u001b[1;32m 2\u001b[0m evaluator \u001b[38;5;241m=\u001b[39m PyCaretEvaluator(dataset\u001b[38;5;241m=\u001b[39mdataset, target\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFracture\u001b[39m\u001b[38;5;124m\"\u001b[39m, experiment_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCP_Fracture\u001b[39m\u001b[38;5;124m\"\u001b[39m, filepath\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./results/fracture\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m evaluator\u001b[38;5;241m.\u001b[39mrun_experiment(\n\u001b[1;32m 5\u001b[0m train_size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.8\u001b[39m,\n\u001b[1;32m 6\u001b[0m fold\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m 7\u001b[0m fold_strategy\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mkfold\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 8\u001b[0m outer_fold\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m 9\u001b[0m outer_strategy\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstratifiedkfold\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 10\u001b[0m session_id\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m42\u001b[39m,\n\u001b[1;32m 11\u001b[0m model\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mxgboost\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 12\u001b[0m optimize\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mAUC\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 13\u001b[0m custom_grid\u001b[38;5;241m=\u001b[39mgrid_hps, \u001b[38;5;66;03m# Grid d'hyperparamètres\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;66;03m# Paramètres fixes\u001b[39;00m\n\u001b[1;32m 15\u001b[0m )\n", - "File \u001b[0;32m~/HAIM-PyCaret1/HAIM_PyCaret/src/evaluation/pycaret_evaluator.py:122\u001b[0m, in \u001b[0;36mPyCaretEvaluator.run_experiment\u001b[0;34m(self, train_size, fold, fold_strategy, outer_fold, outer_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params)\u001b[0m\n\u001b[1;32m 119\u001b[0m ray_tasks \u001b[38;5;241m=\u001b[39m [] \u001b[38;5;66;03m# List to store Ray tasks\u001b[39;00m\n\u001b[1;32m 121\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, (train_index, test_index) \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(outer_cv\u001b[38;5;241m.\u001b[39msplit(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;241m.\u001b[39mx, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;241m.\u001b[39my)):\n\u001b[0;32m--> 122\u001b[0m ray_task \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun_fold\u001b[38;5;241m.\u001b[39mremote(train_index, test_index, i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params)\n\u001b[1;32m 123\u001b[0m ray_tasks\u001b[38;5;241m.\u001b[39mappend(ray_task)\n\u001b[1;32m 125\u001b[0m \u001b[38;5;66;03m# Collect all results from Ray tasks\u001b[39;00m\n", - "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/remote_function.py:139\u001b[0m, in \u001b[0;36mRemoteFunction.__init__.._remote_proxy\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 137\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(function)\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_remote_proxy\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m--> 139\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_remote(args\u001b[38;5;241m=\u001b[39margs, kwargs\u001b[38;5;241m=\u001b[39mkwargs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_default_options)\n", - "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/_private/auto_init_hook.py:21\u001b[0m, in \u001b[0;36mwrap_auto_init..auto_init_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(fn)\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mauto_init_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 20\u001b[0m auto_init_ray()\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fn(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/util/tracing/tracing_helper.py:310\u001b[0m, in \u001b[0;36m_tracing_task_invocation.._invocation_remote_span\u001b[0;34m(self, args, kwargs, *_args, **_kwargs)\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 309\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_ray_trace_ctx\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m kwargs\n\u001b[0;32m--> 310\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m method(\u001b[38;5;28mself\u001b[39m, args, kwargs, \u001b[38;5;241m*\u001b[39m_args, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m_kwargs)\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_ray_trace_ctx\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m kwargs\n\u001b[1;32m 313\u001b[0m tracer \u001b[38;5;241m=\u001b[39m _opentelemetry\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mget_tracer(\u001b[38;5;18m__name__\u001b[39m)\n", - "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/remote_function.py:468\u001b[0m, in \u001b[0;36mRemoteFunction._remote\u001b[0;34m(self, args, kwargs, **task_options)\u001b[0m\n\u001b[1;32m 465\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_decorator \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 466\u001b[0m invocation \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_decorator(invocation)\n\u001b[0;32m--> 468\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m invocation(args, kwargs)\n", - "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/remote_function.py:427\u001b[0m, in \u001b[0;36mRemoteFunction._remote..invocation\u001b[0;34m(args, kwargs)\u001b[0m\n\u001b[1;32m 425\u001b[0m list_args \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 426\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 427\u001b[0m list_args \u001b[38;5;241m=\u001b[39m ray\u001b[38;5;241m.\u001b[39m_private\u001b[38;5;241m.\u001b[39msignature\u001b[38;5;241m.\u001b[39mflatten_args(\n\u001b[1;32m 428\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_function_signature, args, kwargs\n\u001b[1;32m 429\u001b[0m )\n\u001b[1;32m 431\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m worker\u001b[38;5;241m.\u001b[39mmode \u001b[38;5;241m==\u001b[39m ray\u001b[38;5;241m.\u001b[39m_private\u001b[38;5;241m.\u001b[39mworker\u001b[38;5;241m.\u001b[39mLOCAL_MODE:\n\u001b[1;32m 432\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m (\n\u001b[1;32m 433\u001b[0m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_cross_language\n\u001b[1;32m 434\u001b[0m ), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCross language remote function cannot be executed locally.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", - "File \u001b[0;32m~/miniconda3/envs/pycaret_env/lib/python3.11/site-packages/ray/_private/signature.py:110\u001b[0m, in \u001b[0;36mflatten_args\u001b[0;34m(signature_parameters, args, kwargs)\u001b[0m\n\u001b[1;32m 108\u001b[0m reconstructed_signature\u001b[38;5;241m.\u001b[39mbind(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 109\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc: \u001b[38;5;66;03m# capture a friendlier stacktrace\u001b[39;00m\n\u001b[0;32m--> 110\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;28mstr\u001b[39m(exc)) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 111\u001b[0m list_args \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m arg \u001b[38;5;129;01min\u001b[39;00m args:\n", - "\u001b[0;31mTypeError\u001b[0m: missing a required argument: 'fixed_params'" + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=95326)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=95324)\u001b[0m Configuring PyCaret for outer fold 4\n", + "\u001b[36m(run_fold pid=95336)\u001b[0m Outer fold 3\u001b[32m [repeated 4x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing: 0%| | 0/4 [00:00 None: with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) - @ray.remote(memory=6e9) # Mark this function to be executed in parallel by Ray + @ray.remote(memory=8e9) # Mark this function to be executed in parallel by Ray def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params): """ Run a single fold in parallel using Ray. From b74f75331e9cb33ac7e7e14c38039fdd0ac8b91f Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Mon, 7 Oct 2024 11:31:54 -0400 Subject: [PATCH 19/37] Training of the 48 mortality, atelectasis, lung opacity and pneumonia tasks --- notebooks/48h-mortality.ipynb | 283 +++++- notebooks/atelectasis.ipynb | 169 +++- notebooks/lung-opacity.ipynb | 410 +++----- notebooks/pneumonia.ipynb | 1687 +++------------------------------ 4 files changed, 714 insertions(+), 1835 deletions(-) diff --git a/notebooks/48h-mortality.ipynb b/notebooks/48h-mortality.ipynb index 1f26653..60b81c9 100644 --- a/notebooks/48h-mortality.ipynb +++ b/notebooks/48h-mortality.ipynb @@ -68,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -117,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "id": "8d6cb174", "metadata": {}, "outputs": [], @@ -166,10 +166,277 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-10-04 13:54:33,961\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=631326)\u001b[0m Outer fold 1\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(raylet)\u001b[0m Spilled 3869 MiB, 2 objects, write throughput 589 MiB/s. Set RAY_verbose_spill_logs=0 to disable this message.\n", + "\u001b[36m(raylet)\u001b[0m Spilled 7738 MiB, 4 objects, write throughput 583 MiB/s.\n", + "\u001b[36m(raylet)\u001b[0m Spilled 11607 MiB, 5 objects, write throughput 579 MiB/s.\n", + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing: 0%| | 0/4 [00:00\n", - "#T_6904d_row5_col0, #T_6904d_row5_col1, #T_6904d_row5_col2, #T_6904d_row5_col3, #T_6904d_row5_col4, #T_6904d_row5_col5, #T_6904d_row5_col6 {\n", - " background: yellow;\n", - "}\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.97510.80001.00000.97480.98720.49590.5742
10.96960.79801.00000.96930.98440.38580.4889
20.97070.80051.00000.97040.98500.39490.4960
30.98010.79341.00000.97990.98990.47830.5606
40.97680.84471.00000.97650.98810.46650.5515
Mean0.97450.80731.00000.97420.98690.44430.5342
Std0.00390.01880.00000.00390.00200.04510.0350
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=289351)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 0 0.9718 0.8716 0.9994 0.9721 0.9855 0.4294 0.5134\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 1 0.9685 0.8389 0.9988 0.9693 0.9838 0.3763 0.4619\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 2 0.9701 0.7959 0.9988 0.9709 0.9847 0.4023 0.4830\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 3 0.9807 0.8101 1.0000 0.9805 0.9901 0.4996 0.5770\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 4 0.9751 0.8785 0.9994 0.9754 0.9873 0.4215 0.5058\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Mean 0.9733 0.8390 0.9993 0.9736 0.9863 0.4258 0.5082\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Std 0.0043 0.0326 0.0004 0.0040 0.0022 0.0412 0.0389\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Configuring PyCaret for outer fold 2\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" + ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + " \n", + "Processing: 75%|███████▌ | 3/4 [04:24<01:37, 97.68s/it]\u001b[32m [repeated 2x across cluster]\u001b[0m\n" + ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=289341)\u001b[0m 0 0.9740 0.8263 0.9983 0.9753 0.9867 0.4945 0.5509\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m 1 0.9701 0.8035 1.0000 0.9698 0.9847 0.4031 0.5024\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m 2 0.9707 0.7984 1.0000 0.9704 0.9850 0.3949 0.4960\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m 3 0.9807 0.7942 1.0000 0.9805 0.9901 0.4996 0.5770\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m 4 0.9768 0.8552 1.0000 0.9765 0.9881 0.4665 0.5515\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 0 0.9729 0.8507 1.0000 0.9726 0.9861 0.4274 0.5213\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 1 0.9663 0.8095 1.0000 0.9661 0.9827 0.2741 0.3985\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 2 0.9679 0.7880 1.0000 0.9677 0.9836 0.3010 0.4209\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 3 0.9779 0.8334 0.9994 0.9783 0.9887 0.4041 0.4902\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 4 0.9751 0.7801 1.0000 0.9749 0.9873 0.3919 0.4937\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Fold \u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Mean 0.9720 0.8123 0.9999 0.9719 0.9857 0.3597 0.4649\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Std 0.0043 0.0267 0.0002 0.0045 0.0022 0.0606 0.0469\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\u001b[32m [repeated 2x across cluster]\u001b[0m\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 0 Extreme Gradient Boosting 0.9749 0.8544 ... 0.9872 0.3851 0.4883\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m \n", + "\u001b[36m(run_fold pid=289351)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Outer fold 4\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Configuring PyCaret for outer fold 4\n" ] }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Initiated. . . . . . . . . . . . . . . . . .10:59:22
Status. . . . . . . . . . . . . . . . . .Searching Hyperparameters
Estimator. . . . . . . . . . . . . . . . . .Extreme Gradient Boosting
\n", - "
" - ], - "text/plain": [ - " \n", - " \n", - "Initiated . . . . . . . . . . . . . . . . . . 10:59:22\n", - "Status . . . . . . . . . . . . . . . . . . Searching Hyperparameters\n", - "Estimator . . . . . . . . . . . . . . . . . . Extreme Gradient Boosting" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=289351)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 0 0.9751 0.8365 1.0000 0.9748 0.9873 0.4850 0.5658\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 1 0.9751 0.8507 1.0000 0.9748 0.9872 0.5354 0.6046\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 2 0.9713 0.8627 0.9988 0.9720 0.9853 0.4241 0.5007\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 3 0.9790 0.8569 1.0000 0.9788 0.9893 0.4339 0.5263\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 4 0.9746 0.8181 0.9983 0.9760 0.9870 0.3854 0.4560\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Mean 0.9750 0.8450 0.9994 0.9753 0.9872 0.4527 0.5307\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Std 0.0025 0.0160 0.0007 0.0022 0.0013 0.0521 0.0514\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=289332)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 0 Extreme Gradient Boosting 0.9784 0.8641 ... 0.9889 0.5458 0.6076\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m \n", + "\u001b[36m(run_fold pid=289332)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Outer fold 5\n" + ] }, { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "fe2a56a7fd9746aca1821a657e1efc84", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Processing: 0%| | 0/7 [00:00\n from pycaret.utils.generic import get_all_object_vars_and_properties, variable_return\n File \"c:\\Python310\\lib\\site-packages\\pycaret\\utils\\generic.py\", line 11, in \n import pandas as pd\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\__init__.py\", line 22, in \n from pandas.compat import is_numpy_dev as _is_numpy_dev\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\compat\\__init__.py\", line 15, in \n from pandas.compat.numpy import (\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\compat\\numpy\\__init__.py\", line 4, in \n from pandas.util.version import Version\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\util\\__init__.py\", line 1, in \n from pandas.util._decorators import ( # noqa:F401\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\util\\_decorators.py\", line 14, in \n from pandas._libs.properties import cache_readonly # noqa:F401\n File \"C:\\Users\\user\\AppData\\Roaming\\Python\\Python310\\site-packages\\pandas\\_libs\\__init__.py\", line 13, in \n from pandas._libs.interval import Interval\nImportError: DLL load failed while importing interval: Le fichier de pagination est insuffisant pour terminer cette opération.\n\"\"\"", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[1;31mBrokenProcessPool\u001b[0m Traceback (most recent call last)", - "Input \u001b[1;32mIn [5]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m evaluator \u001b[38;5;241m=\u001b[39m PyCaretEvaluator(dataset\u001b[38;5;241m=\u001b[39mdataset, target\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLungOpacity\u001b[39m\u001b[38;5;124m\"\u001b[39m, experiment_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCP_LungOpacity\u001b[39m\u001b[38;5;124m\"\u001b[39m, filepath\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m./results/lungopacity\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 4\u001b[0m \u001b[38;5;66;03m# Model training and results evaluation\u001b[39;00m\n\u001b[1;32m----> 5\u001b[0m \u001b[43mevaluator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_experiment\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.8\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mfold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mfold_strategy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mkfold\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mouter_fold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mouter_strategy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mkfold\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43msession_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m42\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mxgboost\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43moptimize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mAccuracy\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mcustom_grid\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgrid_hps\u001b[49m\n\u001b[0;32m 15\u001b[0m \u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\user\\Downloads\\HAIM-PyCaret-vf\\HAIM_PyCaret\\src\\evaluation\\pycaret_evaluator.py:135\u001b[0m, in \u001b[0;36mPyCaretEvaluator.run_experiment\u001b[1;34m(self, train_size, fold, fold_strategy, outer_fold, outer_strategy, session_id, model, optimize, custom_grid)\u001b[0m\n\u001b[0;32m 133\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m custom_grid:\n\u001b[0;32m 134\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTuning hyperparameters for model \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with custom grid\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m--> 135\u001b[0m best_model \u001b[38;5;241m=\u001b[39m \u001b[43mtune_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbest_model\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcustom_grid\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcustom_grid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfold\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 136\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 137\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(optimize, \u001b[38;5;28mlist\u001b[39m):\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\utils\\generic.py:964\u001b[0m, in \u001b[0;36mcheck_if_global_is_not_none..decorator..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 962\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m globals_d[name] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 963\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(message)\n\u001b[1;32m--> 964\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\classification\\functional.py:1208\u001b[0m, in \u001b[0;36mtune_model\u001b[1;34m(estimator, fold, round, n_iter, custom_grid, optimize, custom_scorer, search_library, search_algorithm, early_stopping, early_stopping_max_iters, choose_better, fit_kwargs, groups, return_tuner, verbose, tuner_verbose, return_train_score, **kwargs)\u001b[0m\n\u001b[0;32m 1017\u001b[0m \u001b[38;5;129m@check_if_global_is_not_none\u001b[39m(\u001b[38;5;28mglobals\u001b[39m(), _CURRENT_EXPERIMENT_DECORATOR_DICT)\n\u001b[0;32m 1018\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtune_model\u001b[39m(\n\u001b[0;32m 1019\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1037\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1038\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m 1039\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 1040\u001b[0m \u001b[38;5;124;03m This function tunes the hyperparameters of a given estimator. The output of\u001b[39;00m\n\u001b[0;32m 1041\u001b[0m \u001b[38;5;124;03m this function is a score grid with CV scores by fold of the best selected\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1205\u001b[0m \n\u001b[0;32m 1206\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 1208\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m _CURRENT_EXPERIMENT\u001b[38;5;241m.\u001b[39mtune_model(\n\u001b[0;32m 1209\u001b[0m estimator\u001b[38;5;241m=\u001b[39mestimator,\n\u001b[0;32m 1210\u001b[0m fold\u001b[38;5;241m=\u001b[39mfold,\n\u001b[0;32m 1211\u001b[0m \u001b[38;5;28mround\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mround\u001b[39m,\n\u001b[0;32m 1212\u001b[0m n_iter\u001b[38;5;241m=\u001b[39mn_iter,\n\u001b[0;32m 1213\u001b[0m custom_grid\u001b[38;5;241m=\u001b[39mcustom_grid,\n\u001b[0;32m 1214\u001b[0m optimize\u001b[38;5;241m=\u001b[39moptimize,\n\u001b[0;32m 1215\u001b[0m custom_scorer\u001b[38;5;241m=\u001b[39mcustom_scorer,\n\u001b[0;32m 1216\u001b[0m search_library\u001b[38;5;241m=\u001b[39msearch_library,\n\u001b[0;32m 1217\u001b[0m search_algorithm\u001b[38;5;241m=\u001b[39msearch_algorithm,\n\u001b[0;32m 1218\u001b[0m early_stopping\u001b[38;5;241m=\u001b[39mearly_stopping,\n\u001b[0;32m 1219\u001b[0m early_stopping_max_iters\u001b[38;5;241m=\u001b[39mearly_stopping_max_iters,\n\u001b[0;32m 1220\u001b[0m choose_better\u001b[38;5;241m=\u001b[39mchoose_better,\n\u001b[0;32m 1221\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 1222\u001b[0m groups\u001b[38;5;241m=\u001b[39mgroups,\n\u001b[0;32m 1223\u001b[0m return_tuner\u001b[38;5;241m=\u001b[39mreturn_tuner,\n\u001b[0;32m 1224\u001b[0m verbose\u001b[38;5;241m=\u001b[39mverbose,\n\u001b[0;32m 1225\u001b[0m tuner_verbose\u001b[38;5;241m=\u001b[39mtuner_verbose,\n\u001b[0;32m 1226\u001b[0m return_train_score\u001b[38;5;241m=\u001b[39mreturn_train_score,\n\u001b[0;32m 1227\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1228\u001b[0m )\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\classification\\oop.py:1558\u001b[0m, in \u001b[0;36mClassificationExperiment.tune_model\u001b[1;34m(self, estimator, fold, round, n_iter, custom_grid, optimize, custom_scorer, search_library, search_algorithm, early_stopping, early_stopping_max_iters, choose_better, fit_kwargs, groups, return_tuner, verbose, tuner_verbose, return_train_score, **kwargs)\u001b[0m\n\u001b[0;32m 1367\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtune_model\u001b[39m(\n\u001b[0;32m 1368\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1369\u001b[0m estimator,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1387\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1388\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m 1389\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 1390\u001b[0m \u001b[38;5;124;03m This function tunes the hyperparameters of a given estimator. The output of\u001b[39;00m\n\u001b[0;32m 1391\u001b[0m \u001b[38;5;124;03m this function is a score grid with CV scores by fold of the best selected\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1555\u001b[0m \n\u001b[0;32m 1556\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m-> 1558\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mtune_model(\n\u001b[0;32m 1559\u001b[0m estimator\u001b[38;5;241m=\u001b[39mestimator,\n\u001b[0;32m 1560\u001b[0m fold\u001b[38;5;241m=\u001b[39mfold,\n\u001b[0;32m 1561\u001b[0m \u001b[38;5;28mround\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mround\u001b[39m,\n\u001b[0;32m 1562\u001b[0m n_iter\u001b[38;5;241m=\u001b[39mn_iter,\n\u001b[0;32m 1563\u001b[0m custom_grid\u001b[38;5;241m=\u001b[39mcustom_grid,\n\u001b[0;32m 1564\u001b[0m optimize\u001b[38;5;241m=\u001b[39moptimize,\n\u001b[0;32m 1565\u001b[0m custom_scorer\u001b[38;5;241m=\u001b[39mcustom_scorer,\n\u001b[0;32m 1566\u001b[0m search_library\u001b[38;5;241m=\u001b[39msearch_library,\n\u001b[0;32m 1567\u001b[0m search_algorithm\u001b[38;5;241m=\u001b[39msearch_algorithm,\n\u001b[0;32m 1568\u001b[0m early_stopping\u001b[38;5;241m=\u001b[39mearly_stopping,\n\u001b[0;32m 1569\u001b[0m early_stopping_max_iters\u001b[38;5;241m=\u001b[39mearly_stopping_max_iters,\n\u001b[0;32m 1570\u001b[0m choose_better\u001b[38;5;241m=\u001b[39mchoose_better,\n\u001b[0;32m 1571\u001b[0m fit_kwargs\u001b[38;5;241m=\u001b[39mfit_kwargs,\n\u001b[0;32m 1572\u001b[0m groups\u001b[38;5;241m=\u001b[39mgroups,\n\u001b[0;32m 1573\u001b[0m return_tuner\u001b[38;5;241m=\u001b[39mreturn_tuner,\n\u001b[0;32m 1574\u001b[0m verbose\u001b[38;5;241m=\u001b[39mverbose,\n\u001b[0;32m 1575\u001b[0m tuner_verbose\u001b[38;5;241m=\u001b[39mtuner_verbose,\n\u001b[0;32m 1576\u001b[0m return_train_score\u001b[38;5;241m=\u001b[39mreturn_train_score,\n\u001b[0;32m 1577\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 1578\u001b[0m )\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\pycaret\\internal\\pycaret_experiment\\supervised_experiment.py:2680\u001b[0m, in \u001b[0;36m_SupervisedExperiment.tune_model\u001b[1;34m(self, estimator, fold, round, n_iter, custom_grid, optimize, custom_scorer, search_library, search_algorithm, early_stopping, early_stopping_max_iters, choose_better, fit_kwargs, groups, return_tuner, verbose, tuner_verbose, return_train_score, **kwargs)\u001b[0m\n\u001b[0;32m 2672\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m patch(\n\u001b[0;32m 2673\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msklearn.model_selection._search.sample_without_replacement\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 2674\u001b[0m pycaret\u001b[38;5;241m.\u001b[39minternal\u001b[38;5;241m.\u001b[39mpatches\u001b[38;5;241m.\u001b[39msklearn\u001b[38;5;241m.\u001b[39m_mp_sample_without_replacement,\n\u001b[0;32m 2675\u001b[0m ):\n\u001b[0;32m 2676\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m patch(\n\u001b[0;32m 2677\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msklearn.model_selection._search.ParameterGrid.__getitem__\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 2678\u001b[0m pycaret\u001b[38;5;241m.\u001b[39minternal\u001b[38;5;241m.\u001b[39mpatches\u001b[38;5;241m.\u001b[39msklearn\u001b[38;5;241m.\u001b[39m_mp_ParameterGrid_getitem,\n\u001b[0;32m 2679\u001b[0m ):\n\u001b[1;32m-> 2680\u001b[0m model_grid\u001b[38;5;241m.\u001b[39mfit(data_X, data_y, groups\u001b[38;5;241m=\u001b[39mgroups, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_kwargs)\n\u001b[0;32m 2681\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 2682\u001b[0m model_grid\u001b[38;5;241m.\u001b[39mfit(data_X, data_y, groups\u001b[38;5;241m=\u001b[39mgroups, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mfit_kwargs)\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\base.py:1474\u001b[0m, in \u001b[0;36m_fit_context..decorator..wrapper\u001b[1;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1467\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[0;32m 1469\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[0;32m 1470\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[0;32m 1471\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[0;32m 1472\u001b[0m )\n\u001b[0;32m 1473\u001b[0m ):\n\u001b[1;32m-> 1474\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m fit_method(estimator, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\model_selection\\_search.py:970\u001b[0m, in \u001b[0;36mBaseSearchCV.fit\u001b[1;34m(self, X, y, **params)\u001b[0m\n\u001b[0;32m 964\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_format_results(\n\u001b[0;32m 965\u001b[0m all_candidate_params, n_splits, all_out, all_more_results\n\u001b[0;32m 966\u001b[0m )\n\u001b[0;32m 968\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results\n\u001b[1;32m--> 970\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_search\u001b[49m\u001b[43m(\u001b[49m\u001b[43mevaluate_candidates\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 972\u001b[0m \u001b[38;5;66;03m# multimetric is determined here because in the case of a callable\u001b[39;00m\n\u001b[0;32m 973\u001b[0m \u001b[38;5;66;03m# self.scoring the return type is only known after calling\u001b[39;00m\n\u001b[0;32m 974\u001b[0m first_test_score \u001b[38;5;241m=\u001b[39m all_out[\u001b[38;5;241m0\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest_scores\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\model_selection\\_search.py:1914\u001b[0m, in \u001b[0;36mRandomizedSearchCV._run_search\u001b[1;34m(self, evaluate_candidates)\u001b[0m\n\u001b[0;32m 1912\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run_search\u001b[39m(\u001b[38;5;28mself\u001b[39m, evaluate_candidates):\n\u001b[0;32m 1913\u001b[0m \u001b[38;5;124;03m\"\"\"Search n_iter candidates from param_distributions\"\"\"\u001b[39;00m\n\u001b[1;32m-> 1914\u001b[0m \u001b[43mevaluate_candidates\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1915\u001b[0m \u001b[43m \u001b[49m\u001b[43mParameterSampler\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1916\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparam_distributions\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mn_iter\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrandom_state\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrandom_state\u001b[49m\n\u001b[0;32m 1917\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1918\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\model_selection\\_search.py:916\u001b[0m, in \u001b[0;36mBaseSearchCV.fit..evaluate_candidates\u001b[1;34m(candidate_params, cv, more_results)\u001b[0m\n\u001b[0;32m 908\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m 909\u001b[0m \u001b[38;5;28mprint\u001b[39m(\n\u001b[0;32m 910\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFitting \u001b[39m\u001b[38;5;132;01m{0}\u001b[39;00m\u001b[38;5;124m folds for each of \u001b[39m\u001b[38;5;132;01m{1}\u001b[39;00m\u001b[38;5;124m candidates,\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 911\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m totalling \u001b[39m\u001b[38;5;132;01m{2}\u001b[39;00m\u001b[38;5;124m fits\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\n\u001b[0;32m 912\u001b[0m n_splits, n_candidates, n_candidates \u001b[38;5;241m*\u001b[39m n_splits\n\u001b[0;32m 913\u001b[0m )\n\u001b[0;32m 914\u001b[0m )\n\u001b[1;32m--> 916\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mparallel\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mdelayed\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_fit_and_score\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mclone\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbase_estimator\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 920\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 921\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 922\u001b[0m \u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 923\u001b[0m \u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 924\u001b[0m \u001b[43m \u001b[49m\u001b[43msplit_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_splits\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 925\u001b[0m \u001b[43m \u001b[49m\u001b[43mcandidate_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_candidates\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 926\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfit_and_score_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 927\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 928\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mproduct\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 929\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcandidate_params\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 930\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcv\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mrouted_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplitter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 931\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 932\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 934\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(out) \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m 935\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[0;32m 936\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo fits were performed. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 937\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWas the CV iterator empty? \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 938\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWere there no candidates?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 939\u001b[0m )\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\sklearn\\utils\\parallel.py:67\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m 62\u001b[0m config \u001b[38;5;241m=\u001b[39m get_config()\n\u001b[0;32m 63\u001b[0m iterable_with_config \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 64\u001b[0m (_with_config(delayed_func, config), args, kwargs)\n\u001b[0;32m 65\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m delayed_func, args, kwargs \u001b[38;5;129;01min\u001b[39;00m iterable\n\u001b[0;32m 66\u001b[0m )\n\u001b[1;32m---> 67\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__call__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43miterable_with_config\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1952\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[1;34m(self, iterable)\u001b[0m\n\u001b[0;32m 1946\u001b[0m \u001b[38;5;66;03m# The first item from the output is blank, but it makes the interpreter\u001b[39;00m\n\u001b[0;32m 1947\u001b[0m \u001b[38;5;66;03m# progress until it enters the Try/Except block of the generator and\u001b[39;00m\n\u001b[0;32m 1948\u001b[0m \u001b[38;5;66;03m# reach the first `yield` statement. This starts the aynchronous\u001b[39;00m\n\u001b[0;32m 1949\u001b[0m \u001b[38;5;66;03m# dispatch of the tasks to the workers.\u001b[39;00m\n\u001b[0;32m 1950\u001b[0m \u001b[38;5;28mnext\u001b[39m(output)\n\u001b[1;32m-> 1952\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m output \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreturn_generator \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43moutput\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1595\u001b[0m, in \u001b[0;36mParallel._get_outputs\u001b[1;34m(self, iterator, pre_dispatch)\u001b[0m\n\u001b[0;32m 1592\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[0;32m 1594\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backend\u001b[38;5;241m.\u001b[39mretrieval_context():\n\u001b[1;32m-> 1595\u001b[0m \u001b[38;5;28;01myield from\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_retrieve()\n\u001b[0;32m 1597\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mGeneratorExit\u001b[39;00m:\n\u001b[0;32m 1598\u001b[0m \u001b[38;5;66;03m# The generator has been garbage collected before being fully\u001b[39;00m\n\u001b[0;32m 1599\u001b[0m \u001b[38;5;66;03m# consumed. This aborts the remaining tasks if possible and warn\u001b[39;00m\n\u001b[0;32m 1600\u001b[0m \u001b[38;5;66;03m# the user if necessary.\u001b[39;00m\n\u001b[0;32m 1601\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1699\u001b[0m, in \u001b[0;36mParallel._retrieve\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1692\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_wait_retrieval():\n\u001b[0;32m 1693\u001b[0m \n\u001b[0;32m 1694\u001b[0m \u001b[38;5;66;03m# If the callback thread of a worker has signaled that its task\u001b[39;00m\n\u001b[0;32m 1695\u001b[0m \u001b[38;5;66;03m# triggered an exception, or if the retrieval loop has raised an\u001b[39;00m\n\u001b[0;32m 1696\u001b[0m \u001b[38;5;66;03m# exception (e.g. `GeneratorExit`), exit the loop and surface the\u001b[39;00m\n\u001b[0;32m 1697\u001b[0m \u001b[38;5;66;03m# worker traceback.\u001b[39;00m\n\u001b[0;32m 1698\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_aborting:\n\u001b[1;32m-> 1699\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_raise_error_fast\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1700\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[0;32m 1702\u001b[0m \u001b[38;5;66;03m# If the next job is not ready for retrieval yet, we just wait for\u001b[39;00m\n\u001b[0;32m 1703\u001b[0m \u001b[38;5;66;03m# async callbacks to progress.\u001b[39;00m\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:1734\u001b[0m, in \u001b[0;36mParallel._raise_error_fast\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1730\u001b[0m \u001b[38;5;66;03m# If this error job exists, immediatly raise the error by\u001b[39;00m\n\u001b[0;32m 1731\u001b[0m \u001b[38;5;66;03m# calling get_result. This job might not exists if abort has been\u001b[39;00m\n\u001b[0;32m 1732\u001b[0m \u001b[38;5;66;03m# called directly or if the generator is gc'ed.\u001b[39;00m\n\u001b[0;32m 1733\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m error_job \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m-> 1734\u001b[0m \u001b[43merror_job\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_result\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:736\u001b[0m, in \u001b[0;36mBatchCompletionCallBack.get_result\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 730\u001b[0m backend \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparallel\u001b[38;5;241m.\u001b[39m_backend\n\u001b[0;32m 732\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m backend\u001b[38;5;241m.\u001b[39msupports_retrieve_callback:\n\u001b[0;32m 733\u001b[0m \u001b[38;5;66;03m# We assume that the result has already been retrieved by the\u001b[39;00m\n\u001b[0;32m 734\u001b[0m \u001b[38;5;66;03m# callback thread, and is stored internally. It's just waiting to\u001b[39;00m\n\u001b[0;32m 735\u001b[0m \u001b[38;5;66;03m# be returned.\u001b[39;00m\n\u001b[1;32m--> 736\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_return_or_raise\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 738\u001b[0m \u001b[38;5;66;03m# For other backends, the main thread needs to run the retrieval step.\u001b[39;00m\n\u001b[0;32m 739\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", - "File \u001b[1;32mc:\\Python310\\lib\\site-packages\\joblib\\parallel.py:754\u001b[0m, in \u001b[0;36mBatchCompletionCallBack._return_or_raise\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 752\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 753\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstatus \u001b[38;5;241m==\u001b[39m TASK_ERROR:\n\u001b[1;32m--> 754\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n\u001b[0;32m 755\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n\u001b[0;32m 756\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", - "\u001b[1;31mBrokenProcessPool\u001b[0m: A task has failed to un-serialize. Please ensure that the arguments of the function are all picklable." + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=289332)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 0 0.9724 0.8050 1.0000 0.9721 0.9859 0.3957 0.4966\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 1 0.9724 0.8414 1.0000 0.9721 0.9858 0.4466 0.5362\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 2 0.9701 0.8477 1.0000 0.9699 0.9847 0.3483 0.4592\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 3 0.9779 0.8070 0.9994 0.9783 0.9887 0.3865 0.4756\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 4 0.9751 0.8065 0.9994 0.9755 0.9873 0.3210 0.4218\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Mean 0.9736 0.8215 0.9998 0.9736 0.9865 0.3796 0.4779\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Std 0.0027 0.0189 0.0003 0.0030 0.0014 0.0429 0.0381\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m 0 Extreme Gradient Boosting 0.9745 0.8832 ... 0.987 0.3917 0.4935\n", + "\u001b[36m(run_fold pid=289341)\u001b[0m \n", + "\u001b[36m(run_fold pid=289341)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m 0 Extreme Gradient Boosting 0.9724 0.8321 ... 0.9858 0.4557 0.5432\n", + "\u001b[36m(run_fold pid=289332)\u001b[0m \n", + "\u001b[36m(run_fold pid=289332)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m 0 Extreme Gradient Boosting 0.9724 0.8465 ... 0.9859 0.391 0.493\n", + "\u001b[36m(run_fold pid=289351)\u001b[0m \n", + "\u001b[36m(run_fold pid=289351)\u001b[0m [1 rows x 8 columns]\n", + "Final metrics table:\n", + " Metric Mean Std Dev\n", + "0 Accuracy 0.97282 0.001687\n", + "1 AUC 0.85898 0.021586\n", + "2 Recall 0.99966 0.000498\n", + "3 Prec. 0.97284 0.001358\n", + "4 F1 0.98608 0.000850\n", + "5 Kappa 0.43024 0.046487\n", + "6 MCC 0.51752 0.040894\n" ] } ], @@ -495,9 +387,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "python3" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -509,7 +401,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/notebooks/pneumonia.ipynb b/notebooks/pneumonia.ipynb index 66f63d8..68df631 100644 --- a/notebooks/pneumonia.ipynb +++ b/notebooks/pneumonia.ipynb @@ -177,1658 +177,225 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 1/5\n", - "Configuring PyCaret for outer fold 1\n" + "2024-09-27 17:42:40,522\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78700.86350.81410.80310.80860.56860.5687
10.78490.87500.79230.80040.79630.56840.5684
20.77950.85780.82330.75790.78930.55880.5609
30.76970.86760.80610.77330.78930.53570.5362
40.75760.84980.78720.78120.78420.50770.5077
Mean0.77570.86270.80460.78320.79350.54780.5484
Std0.01090.00860.01340.01690.00840.02340.0236
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=678263)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Configuring PyCaret for outer fold 1\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Outer fold 2\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79890.87140.82580.81310.81940.59260.5927
10.81840.89070.81670.83720.82680.63600.6362
20.78270.87630.82760.76040.79260.56530.5675
30.79140.87830.81010.80200.80600.58030.5803
40.76950.86210.81430.78250.79810.52980.5303
Mean0.79220.87570.81890.79900.80860.58080.5814
Std0.01640.00930.00670.02620.01280.03470.0344
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.80000.89040.82290.79840.81050.59890.5992
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Outer fold 2/5\n", - "Configuring PyCaret for outer fold 2\n" + "\u001b[36m(run_fold pid=678258)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 0 0.7535 0.8412 0.7789 0.7634 0.7711 0.5042 0.5043\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 1 0.7968 0.8702 0.8357 0.7938 0.8142 0.5902 0.5912\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 2 0.8076 0.8898 0.8215 0.8182 0.8198 0.6133 0.6133\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 3 0.8065 0.8876 0.8089 0.8240 0.8164 0.6119 0.6120\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 4 0.7987 0.8789 0.8435 0.7920 0.8169 0.5939 0.5953\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Mean 0.7926 0.8735 0.8177 0.7983 0.8077 0.5827 0.5832\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Std 0.0200 0.0176 0.0227 0.0216 0.0184 0.0403 0.0404\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Configuring PyCaret for outer fold 2\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.77300.85440.82210.77610.79850.53910.5402
10.77730.86760.79550.78250.78890.55330.5534
20.78270.87680.81960.76160.78950.56560.5672
30.76320.85880.76630.78380.77490.52530.5254
40.76730.85220.78260.79040.78650.53090.5309
Mean0.77270.86200.79720.77890.78770.54280.5434
Std0.00690.00910.02140.00980.00760.01480.0152
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + " \n", + "Processing: 75%|███████▌ | 3/4 [05:02<01:51, 111.85s/it]\n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78490.86560.82020.79350.80660.56440.5648
10.77840.87570.79550.78410.78970.55550.5555
20.81620.88580.86520.78660.82400.63260.6358
30.78590.87030.77640.81280.79420.57140.5721
40.77710.86450.78660.80240.79440.55100.5511
Mean0.78850.87240.80880.79590.80180.57500.5759
Std0.01430.00780.03170.01060.01240.02970.0308
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=678263)\u001b[0m 0 0.7892 0.8759 0.7931 0.8079 0.8004 0.5771 0.5772\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 1 0.7741 0.8655 0.7830 0.7910 0.7870 0.5465 0.5465\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 2 0.7676 0.8514 0.7992 0.7725 0.7856 0.5320 0.5323\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 3 0.7762 0.8740 0.8089 0.7789 0.7936 0.5494 0.5499\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 4 0.7630 0.8413 0.8008 0.7650 0.7825 0.5224 0.5231\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Mean 0.7740 0.8616 0.7970 0.7831 0.7898 0.5455 0.5458\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Std 0.0089 0.0134 0.0087 0.0150 0.0064 0.0186 0.0184\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 0 Extreme Gradient Boosting 0.7972 0.8831 ... 0.8113 0.5922 0.5924\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m \n", + "\u001b[36m(run_fold pid=678258)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Outer fold 3\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Configuring PyCaret for outer fold 3\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.83600.91730.84010.85640.84820.66990.6700
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 3/5\n", - "Configuring PyCaret for outer fold 3\n" + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78700.87380.80000.80800.80400.57090.5709
10.76540.86710.81540.76140.78750.52640.5279
20.76650.85770.78510.75210.76820.53320.5337
30.77080.86430.77060.79630.78320.54020.5406
40.75320.84680.75640.78730.77150.50350.5040
Mean0.76860.86190.78550.78100.78290.53480.5354
Std0.01090.00920.02090.02110.01270.02180.0216
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=678258)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 0 0.8097 0.8857 0.8398 0.8102 0.8247 0.6168 0.6173\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 1 0.7827 0.8684 0.8053 0.7908 0.7980 0.5629 0.5631\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 2 0.7903 0.8739 0.8354 0.7844 0.8091 0.5770 0.5784\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 3 0.7946 0.8708 0.8232 0.7972 0.8100 0.5866 0.5870\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 4 0.7706 0.8686 0.7785 0.7881 0.7832 0.5396 0.5396\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Mean 0.7896 0.8735 0.8164 0.7941 0.8050 0.5766 0.5771\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Std 0.0130 0.0064 0.0224 0.0091 0.0138 0.0256 0.0258\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79890.88680.80790.82090.81440.59510.5952
10.78700.87240.83160.78240.80630.57030.5716
20.80220.87660.82020.78740.80340.60450.6050
30.78050.87390.79070.79880.79470.55900.5590
40.76410.86690.78000.78930.78460.52380.5239
Mean0.78650.87530.80610.79580.80070.57050.5709
Std0.01370.00660.01880.01370.01020.02850.0286
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + " \n" ] }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.79240.88520.83700.78810.81180.58080.5821
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Outer fold 4/5\n", - "Configuring PyCaret for outer fold 4\n" + "\u001b[36m(run_fold pid=678263)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 0 Extreme Gradient Boosting 0.8166 0.9027 ... 0.8278 0.6317 0.6317\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m \n", + "\u001b[36m(run_fold pid=678263)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Outer fold 4\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Configuring PyCaret for outer fold 4\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79030.86530.77560.82520.79960.58010.5813
10.79240.87280.82760.79220.80950.58170.5824
20.75780.85720.81240.73690.77280.51490.5177
30.77950.86380.79120.79760.79440.55660.5566
40.78350.86780.79060.81290.80160.56360.5639
Mean0.78070.86530.79950.79300.79560.55940.5604
Std0.01230.00510.01830.03030.01240.02420.0235
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "Processing: 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.79680.88320.81160.81160.81160.59100.5910
10.79570.88390.82760.79690.81190.58840.5890
20.76760.85750.83160.74140.78390.53420.5384
30.78270.87120.79520.80000.79760.56300.5631
40.80300.88300.82190.82190.82190.60160.6016
Mean0.78910.87580.81760.79440.80540.57570.5766
Std0.01270.01030.01300.02790.01320.02430.0229
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Fitting 5 folds for each of 10 candidates, totalling 50 fits\n", - "Transformation Pipeline and Model Successfully Saved\n" + "\u001b[36m(run_fold pid=678263)\u001b[0m Accuracy AUC Recall Prec. F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Fold \n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 0 0.8000 0.8672 0.8337 0.7996 0.8163 0.5970 0.5977\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 1 0.7795 0.8587 0.7911 0.7943 0.7927 0.5571 0.5571\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 2 0.7892 0.8676 0.8211 0.7906 0.8056 0.5755 0.5760\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 3 0.7870 0.8728 0.8069 0.7956 0.8012 0.5719 0.5720\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 4 0.7933 0.8766 0.8232 0.7957 0.8092 0.5838 0.5842\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Mean 0.7898 0.8686 0.8152 0.7952 0.8050 0.5771 0.5774\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Std 0.0068 0.0060 0.0148 0.0029 0.0079 0.0132 0.0134\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Tuning hyperparameters for model xgboost with custom grid using grid search\n" ] }, { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.80480.89370.84080.79880.81920.60750.6084
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Outer fold 5/5\n", - "Configuring PyCaret for outer fold 5\n" + " \n" ] }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.77510.86530.79140.78500.78820.54860.5486
10.78920.86120.81670.79920.80790.57440.5746
20.76650.86850.81600.74210.77730.53300.5357
30.76970.85810.81580.76760.79100.53520.5364
40.79330.87910.80230.82000.81110.58290.5831
Mean0.77880.86640.80850.78280.79510.55480.5557
Std0.01060.00720.01010.02660.01260.02040.0197
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Tuning hyperparameters for model xgboost with custom grid\n" + "\u001b[36m(run_fold pid=678258)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 0 Extreme Gradient Boosting 0.8194 0.8958 ... 0.8326 0.6366 0.6368\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m \n", + "\u001b[36m(run_fold pid=678258)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Outer fold 5\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Configuring PyCaret for outer fold 5\n" ] }, { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 AccuracyAUCRecallPrec.F1KappaMCC
Fold       
00.78590.87890.79750.79750.79750.57050.5705
10.79140.87190.81670.80230.80950.57890.5790
20.78920.87580.82900.76750.79710.57840.5803
30.80760.88360.85430.79920.82580.61140.6131
40.82250.89120.83950.83950.83950.64100.6410
Mean0.79930.88030.82740.80120.81390.59600.5968
Std0.01380.00670.01940.02290.01650.02650.0265
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 ModelAccuracyAUCRecallPrec.F1KappaMCC
0Extreme Gradient Boosting0.81250.89530.84020.81600.82790.62190.6223
\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stderr", + "output_type": "stream", + "text": [ + " \n" + ] }, { "name": "stdout", "output_type": "stream", "text": [ + "\u001b[36m(run_fold pid=678263)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m 0 Extreme Gradient Boosting 0.8048 0.8925 ... 0.8224 0.6063 0.6076\n", + "\u001b[36m(run_fold pid=678263)\u001b[0m \n", + "\u001b[36m(run_fold pid=678263)\u001b[0m [1 rows x 8 columns]\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Transformation Pipeline and Model Successfully Saved\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m Model Accuracy AUC ... F1 Kappa MCC\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m 0 Extreme Gradient Boosting 0.7979 0.8916 ... 0.8119 0.5936 0.5937\n", + "\u001b[36m(run_fold pid=678258)\u001b[0m \n", + "\u001b[36m(run_fold pid=678258)\u001b[0m [1 rows x 8 columns]\n", "Final metrics table:\n", " Metric Mean Std Dev\n", - "0 Accuracy 0.79308 0.007072\n", - "1 AUC 0.87718 0.008649\n", - "2 Recall 0.81260 0.010990\n", - "3 Prec. 0.80732 0.011441\n", - "4 F1 0.80990 0.008337\n", - "5 Kappa 0.58272 0.014181\n", - "6 MCC 0.58284 0.014092\n" + "0 Accuracy 0.79220 0.014893\n", + "1 AUC 0.87688 0.012199\n", + "2 Recall 0.81380 0.016299\n", + "3 Prec. 0.79992 0.014935\n", + "4 F1 0.80676 0.013924\n", + "5 Kappa 0.58210 0.029971\n", + "6 MCC 0.58230 0.029977\n" ] } ], From 068d783cdfb1bb0a767ad68997a45a943af57cc4 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Wed, 9 Oct 2024 15:42:38 -0400 Subject: [PATCH 20/37] Training of the cardiomegaly task --- notebooks/cardiomegaly.ipynb | 234 +++++++++++++++++++++++++++++++++-- 1 file changed, 226 insertions(+), 8 deletions(-) diff --git a/notebooks/cardiomegaly.ipynb b/notebooks/cardiomegaly.ipynb index 07025a2..206f1a6 100644 --- a/notebooks/cardiomegaly.ipynb +++ b/notebooks/cardiomegaly.ipynb @@ -76,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -102,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "id": "9ba42585", "metadata": {}, "outputs": [], @@ -174,10 +174,228 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-10-07 11:30:51,125\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=1153833)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=1153847)\u001b[0m Configuring PyCaret for outer fold 2\n", + "\u001b[36m(run_fold pid=1153841)\u001b[0m Outer fold 3\u001b[32m [repeated 2x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing: 0%| | 0/4 [00:00 Date: Sat, 19 Oct 2024 13:29:04 -0400 Subject: [PATCH 21/37] Changes on the readme file --- README.md | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index ff1fc18..8cf83e3 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,16 @@ It uses the [HAIM multimodal dataset](https://physionet.org/content/haim-multimo (tabular, time-series, text and images) and 11 unique sources to perform 12 predictive tasks (10 chest pathologies, length-of-stay and 48 h mortality predictions). -This package is our own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). +The first package is our own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). +This package is an adaptation of the adapted [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM) using PyCaret for model management and training and Ray for distributed computation. + +## 2. How to use the package? +The dataset used to replicate this study is publicly available on [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). To run this package: ## 2. How to use the package ? The dataset used to replicate this study is publicly available in [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). To run this package: - Download the dataset and move the file ``cxr_ic_fusion_1103.csv`` to [csvs](csvs). -- Install the requirements under **Python 3.9.13** as following: +- Install the requirements under **Python 3.11** as following: ``` $ pip install -r requirements.txt ``` @@ -106,20 +110,20 @@ Below are the ``AUC`` values reported from our experiments compared to those rep -Task | AUC from our experiment | AUC from the paper | ----------| -----------| ----------- | -Fracture | 0.828 +- 0.110 | 0.838 | -Pneumothorax| 0.811 +- 0.021 | 0.836 | -Pneumonia | 0.871 +- 0.013 | 0.883 | -Lung opacity | 0.797 +- 0.015 | 0.816 | -Lung lesion | 0.829 +- 0.053 | 0.844 | -Enlarged Cardiomediastinum | 0.877 +- 0.035 | 0.876 | -Edema | 0.915 +- 0.007 |0.917 | -Consolidation | 0.918 +- 0.018 | 0.929 | -Cardiomegaly | 0.908 +- 0.004 | 0.914 | -Atelectasis | 0.765 +- 0.013 | 0.779 | -Length of stay | 0.932 +- 0.012 | 0.939| -48 hours mortality | 0.907 +- 0.007 | 0.912 | +Task AUC from our 2nd experiment | AUC from our 1st experiment | AUC from the paper | +---------| -----------| -----------| ----------- | +Fracture | 0.837 +-0.1 | 0.828 +- 0.110 | 0.838 | +Pneumothorax| 0.896 +-0.007 | 0.811 +- 0.021 | 0.836 | +Pneumonia | 0.877 +-0.012 | 0.871 +- 0.013 | 0.883 | +Lung opacity | 0.859 +-0.022 | 0.797 +- 0.015 | 0.816 | +Lung lesion | 0.888 +-0.069 | 0.829 +- 0.053 | 0.844 | +Enlarged Cardiomediastinum | 0.888 +-0.019 | 0.877 +- 0.035 | 0.876 | +Edema | 0.915+-0.005 | 0.915 +- 0.007 |0.917 | +Consolidation | 0.912 +-0.015 | 0.918 +- 0.018 | 0.929 | +Cardiomegaly | 0.922 +-0.006 | 0.908 +- 0.004 | 0.914 | +Atelectasis | 0.823 +-0.042 | 0.765 +- 0.013 | 0.779 | +Length of stay | 0.959+-0.003 | 0.932 +- 0.012 | 0.939| +48 hours mortality | 0.96 +-0.004 | 0.907 +- 0.007 | 0.912 | More statistics and metrics are reported from each of the 12 experiments above and can be found in the ``experiments`` directory. Each experiment directory is named after the task on which the prediction model was evaluated. @@ -132,9 +136,9 @@ More statistics and metrics are reported from each of the 12 experiments above a We tried to reproduce the HAIM experiment and used all the 1023 possible sources combinations to predict the presence or absence of a fracture in a patient and select the one resulting in the best ``AUC``. Below the ``AUC`` value reported from our experiments compared to the one reported in the HAIM paper. - AUC from our experiment | AUC from the paper | + AUC from our experiment with PyCaret | AUC from our experiment | AUC from the paper | -----------| ----------- | -0.862 +- 0.112 | 0.838 | +0.837 +-0.1 | 0.862 +- 0.112 | 0.838 | The above experiment can be performed using the following command @@ -155,10 +159,8 @@ The next step of our package is to regenerate the embeddings for each source typ │   ├── data │   │   ├── constants.py <- Constants related to the HAIM study │   │   ├── datasets.py <- Custom dataset implementation for the HAIM study -│   │   └── sampling.py <- Samples the dataset to test, train and validation │   ├── evaluation -│   │   ├── tuning.py <- Hyper-parameters optimizations using different optimizers -│   │   └── evaluating.py <- Skeleton of each experiment process +│   │   └── pycaret_evaluator.py <- Skeleton of each experiment process │   └── utils │   │   └── metric_scores.py <- Custom metrics implementations and wrappers ├── requirements.txt <- All the requirements to install to run the project From ea004541ef4456b7f9bc3be8511db52e39387382 Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Sat, 19 Oct 2024 13:32:49 -0400 Subject: [PATCH 22/37] Update readme --- README.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 8cf83e3..0ee3e86 100644 --- a/README.md +++ b/README.md @@ -110,20 +110,21 @@ Below are the ``AUC`` values reported from our experiments compared to those rep -Task AUC from our 2nd experiment | AUC from our 1st experiment | AUC from the paper | ----------| -----------| -----------| ----------- | -Fracture | 0.837 +-0.1 | 0.828 +- 0.110 | 0.838 | -Pneumothorax| 0.896 +-0.007 | 0.811 +- 0.021 | 0.836 | -Pneumonia | 0.877 +-0.012 | 0.871 +- 0.013 | 0.883 | -Lung opacity | 0.859 +-0.022 | 0.797 +- 0.015 | 0.816 | -Lung lesion | 0.888 +-0.069 | 0.829 +- 0.053 | 0.844 | -Enlarged Cardiomediastinum | 0.888 +-0.019 | 0.877 +- 0.035 | 0.876 | -Edema | 0.915+-0.005 | 0.915 +- 0.007 |0.917 | -Consolidation | 0.912 +-0.015 | 0.918 +- 0.018 | 0.929 | -Cardiomegaly | 0.922 +-0.006 | 0.908 +- 0.004 | 0.914 | -Atelectasis | 0.823 +-0.042 | 0.765 +- 0.013 | 0.779 | -Length of stay | 0.959+-0.003 | 0.932 +- 0.012 | 0.939| -48 hours mortality | 0.96 +-0.004 | 0.907 +- 0.007 | 0.912 | +| Task | AUC from our 2nd experiment | AUC from our 1st experiment | AUC from the paper | +|-------------------------|-----------------------------|-----------------------------|--------------------| +| Fracture | 0.837 +- 0.1 | 0.828 +- 0.110 | 0.838 | +| Pneumothorax | 0.896 +- 0.007 | 0.811 +- 0.021 | 0.836 | +| Pneumonia | 0.877 +- 0.012 | 0.871 +- 0.013 | 0.883 | +| Lung opacity | 0.859 +- 0.022 | 0.797 +- 0.015 | 0.816 | +| Lung lesion | 0.888 +- 0.069 | 0.829 +- 0.053 | 0.844 | +| Enlarged Cardiomediastinum | 0.888 +- 0.019 | 0.877 +- 0.035 | 0.876 | +| Edema | 0.915 +- 0.005 | 0.915 +- 0.007 | 0.917 | +| Consolidation | 0.912 +- 0.015 | 0.918 +- 0.018 | 0.929 | +| Cardiomegaly | 0.922 +- 0.006 | 0.908 +- 0.004 | 0.914 | +| Atelectasis | 0.823 +- 0.042 | 0.765 +- 0.013 | 0.779 | +| Length of stay | 0.959 +- 0.003 | 0.932 +- 0.012 | 0.939 | +| 48 hours mortality | 0.960 +- 0.004 | 0.907 +- 0.007 | 0.912 | + More statistics and metrics are reported from each of the 12 experiments above and can be found in the ``experiments`` directory. Each experiment directory is named after the task on which the prediction model was evaluated. From a3f83b8f025e9eaca187271901898ac70beef4bf Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Sun, 20 Oct 2024 14:44:44 -0400 Subject: [PATCH 23/37] Updates --- README.md | 29 ++++++++++++---- run_experiments.py | 85 ++++++++++++++++++++++++---------------------- 2 files changed, 67 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 0ee3e86..da5960b 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,29 @@ This package is an adaptation of the adapted [HAIM GitHub package](https://githu ## 2. How to use the package? The dataset used to replicate this study is publicly available on [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). To run this package: -## 2. How to use the package ? -The dataset used to replicate this study is publicly available in [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). To run this package: -- Download the dataset and move the file ``cxr_ic_fusion_1103.csv`` to [csvs](csvs). -- Install the requirements under **Python 3.11** as following: -``` -$ pip install -r requirements.txt +How to set up the environment using Conda? + +To run this package on **Python 3.10 or 3.11**, you need to set up a Conda environment to manage dependencies. + +### 2.1 Creating and Activating a Conda Environment + +1. **Create the environment** with the required Python version: + + - For **Python 3.10**: + ```bash + conda create --name haim_env python=3.10 + ``` + + - For **Python 3.11**: + ```bash + conda create --name haim_env python=3.11 + ``` + +2. **Activate the Conda environment**: + + ```bash + conda activate haim_env + ``` The package can be used with different sources combinations to predict one of the 12 predictive tasks defined above. Here is a code snippet which uses one combination of sources to predict patient's length-of-stay: diff --git a/run_experiments.py b/run_experiments.py index eac6ea3..eaf06ba 100644 --- a/run_experiments.py +++ b/run_experiments.py @@ -1,10 +1,10 @@ """ Filename: run_experiments.py -Author : Hakima Laribi +Author : Hakima Laribi, Mariem Kallel Description: This file is used to perform all the HAIM experiments presented - in the paper: https://doi.org/10.1038/s41746-022-00689-4 + in the paper: https://doi.org/10.1038/s41746-022-00689-4 Date of last modification : 2023/02/07 """ @@ -12,28 +12,24 @@ import argparse from itertools import combinations from tqdm import tqdm -from typing import List, Callable, Optional +from typing import List, Optional from numpy import unique from pandas import read_csv, DataFrame -from xgboost import XGBClassifier from src.data import constants -from src.data.dataset import Task, HAIMDataset -from src.data.sampling import Sampler +from src.data.dataset import HAIMDataset from src.evaluation.pycaret_evaluator import PyCaretEvaluator -from src.evaluation.tuning import SklearnTuner -from src.utils.metric_scores import * def get_all_sources_combinations(sources: List[str]) -> List[List[str]]: """ - Function to extract all possible combinations of sources + Function to extract all possible combinations of sources - Args: - sources(List[str]): list of sources types + Args: + sources(List[str]): list of sources types - Returns: list of combinations + Returns: list of combinations """ comb = [] for i in range(len(sources)): @@ -50,14 +46,14 @@ def run_single_experiment(prediction_task: str, dataset: Optional[DataFrame] = None, evaluation_name: Optional[str] = None) -> None: """ - Function to perform one single experiment - - Args: - prediction_task(task): task label, must be a HAIM prediction task - sources_predictors(List[str]): predictors to use for prediction, each source has one or more predictors - sources_modalities(List[str]): the modalities of the sources used for prediction - dataset(Optional[DataFrame]): HAIM dataframe - evaluation_name(Optional[str]): name of the experiment + Function to perform one single experiment + + Args: + prediction_task(task): task label, must be a HAIM prediction task + sources_predictors(List[str]): predictors to use for prediction, each source has one or more predictors + sources_modalities(List[str]): the modalities of the sources used for prediction + dataset(Optional[DataFrame]): HAIM dataframe + evaluation_name(Optional[str]): name of the experiment """ dataset = read_csv(constants.FILE_DF, nrows=constants.N_DATA) if dataset is None else dataset @@ -72,26 +68,27 @@ def run_single_experiment(prediction_task: str, # Define the grid of hyper-parameters for the tuning grid_hps = {'max_depth': [5, 6, 7, 8], 'n_estimators': [200, 300], - 'learning_rate': [0.3, 0.1, 0.05], - } - + 'learning_rate': [0.3, 0.1, 0.05]} # Initialize the PyCaret Evaluator - evaluator = PyCaretEvaluator(dataset=dataset, experiment_name= evaluation_name, filepath="constants.EXPERIMENT_PATH") + evaluator = PyCaretEvaluator(dataset=dataset, + target=prediction_task, # Ajout de l'argument target ici + experiment_name=evaluation_name, + filepath="constants.EXPERIMENT_PATH") # Model training and results evaluation evaluator.run_experiment( - train_size=0.8, - fold=5, - fold_strategy='kfold', - outer_fold=5, - outer_strategy='kfold', - session_id=42, - model='xgboost', - optimize='AUC', - custom_grid=grid_hps - ) - + train_size=0.8, + fold=5, + fold_strategy='kfold', + outer_fold=5, + outer_strategy='kfold', + session_id=42, + model='xgboost', + optimize='AUC', + custom_grid=grid_hps + ) + if __name__ == '__main__': # Get arguments passed @@ -103,25 +100,31 @@ def run_single_experiment(prediction_task: str, # Load the dataframe from disk df = read_csv(constants.FILE_DF, nrows=constants.N_DATA) - all_tasks = Task() if args.task is None else [args.task] + # Handle all tasks if none specified + all_tasks = [args.task] if args.task else Task() for task in all_tasks: - print("#"*23, f"{task} experiment", "#"*23) + print("#" * 23, f"{task} experiment", "#" * 23) + # Get all possible combinations of sources for the current task sources_comb = get_all_sources_combinations(constants.SOURCES) if task in [constants.MORTALITY, constants.LOS] \ else get_all_sources_combinations(constants.CHEST_SOURCES) with tqdm(total=len(sources_comb)) as bar: for count, combination in enumerate(sources_comb): - # Get all predictors and modalities for each source predictors = [] for c in combination: - predictors = predictors + c.sources + predictors.extend(c.sources) # Collect all predictors modalities = unique([c.modality for c in combination]) - run_single_experiment(prediction_task=task, sources_predictors=predictors, sources_modalities=modalities, - dataset=df, evaluation_name=task + '_' + str(count)) + # Run the single experiment + run_single_experiment(prediction_task=task, + sources_predictors=predictors, + sources_modalities=modalities, + dataset=df, + evaluation_name=task + '_' + str(count)) bar.update() + # Optionally, collect the best experiments PyCaretEvaluator.get_best_of_experiments(task, constants.EXPERIMENT_PATH, count) From e8f487596bd86496ec4f8a2d04aff1ea076fc0c7 Mon Sep 17 00:00:00 2001 From: kalm7073 Date: Sun, 20 Oct 2024 14:46:13 -0400 Subject: [PATCH 24/37] Deleting files --- src/evaluation/evaluating.py | 439 ----------------------------------- src/evaluation/tuning.py | 159 ------------- 2 files changed, 598 deletions(-) delete mode 100644 src/evaluation/evaluating.py delete mode 100644 src/evaluation/tuning.py diff --git a/src/evaluation/evaluating.py b/src/evaluation/evaluating.py deleted file mode 100644 index a463919..0000000 --- a/src/evaluation/evaluating.py +++ /dev/null @@ -1,439 +0,0 @@ -""" -Filename: evaluating.py - -Author : Hakima Laribi - -Description: This file is used to store Evaluator object which performs different evaluations on the dataset - -Date of last modification : 2023/02/07 - -""" -import json -from os import makedirs, path -from re import search -import shutil -from time import strftime -from typing import Any, Callable, Dict, Union, List, Optional - -from src.data.dataset import HAIMDataset -from src.evaluation.tuning import SklearnHpsOptimizer - -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd -from sklearn.metrics import roc_curve - -from src.data import constants -from src.utils.metric_scores import Metric - - -class Evaluator: - """ - Object used to perform models evaluations - """ - - def __init__(self, - dataset: HAIMDataset, - masks: Dict[int, Dict[str, List[int]]], - metrics: List[Callable], - model: Callable, - tuner: Callable, - tuning_metric: Metric, - hps: Dict[str, Union[List[Any], Any]], - n_tuning_splits: int, - fixed_params: Dict[str, Any], - filepath: str, - model_selector: str = SklearnHpsOptimizer.GS, - parallel_tuning: bool = True, - weight: Optional[str] = None, - evaluation_name: Optional[str] = None, - stratified_sampling: bool = False): - """ - Sets protected attributes of the Evaluator - - Args: - dataset(HAIMDataset): custom HAIM dataset - masks(Dict[int, Dict[str, List[int]]]): dictionary with train, test and valid set at each split - metrics(List[Callable]): list of metrics to report at the end of the experiment - model(Callable): model to evaluate - tuner(Callable): tuner which perform hyper-parameter tuning - tuning_metric(Metric): metric to optimize (maximize/minimize) during the hyper-parameter tuning - n_tuning_splits(int): number of inner data splits, used in the tuning - hps(Dict[str, Union[List[Any], Any]]): each hyper-parameter with its search space - fixed_params(Dict[str, Any]): model's fixed parameters - filepath(str): path to the directory where to store the experiment - model_selector(str): hyper-parameter optimizer - parallel_tuning(hps): boolean to specify if the tuning would be in parallel - weight(str): weight parameter - evaluation_name(str): name of current evaluation - stratified_sampling(bool): if the sampling performed was stratified - - """ - - if evaluation_name is not None: - if path.exists(path.join(filepath, evaluation_name)): - raise ValueError("evaluation with this name already exists") - else: - makedirs(filepath, exist_ok=True) - evaluation_name = f"{strftime('%Y%m%d-%H%M%S')}" - - # Set protected attributes - self._dataset = dataset - self._masks = masks - self._metrics = metrics - self._model = model - self._tuner = tuner(tuning_metric, hps, n_tuning_splits, model_selector, parallel_tuning) - self._inner_splits = n_tuning_splits - self._fixed_params = fixed_params - self._weighted_param = weight - self._filepath = path.join(filepath, evaluation_name) - self._stratified_sampling = stratified_sampling - - # Set public attributes - self.evaluation_name = evaluation_name - - def evaluate(self) -> None: - """ - Performs nested evaluation and saves the result of each experiment in a json file - """ - # Perform the evaluation over all the splits of the dataset - for i, mask in self._masks.items(): - # Extract masks - train, test, valid = mask['train'], mask['test'], mask['valid'] - # Get data and targets for each mask - x, y = {}, {} - for (mask_, idx) in [('train', train), ('test', test), ('valid', valid)]: - if idx is not None: - x[mask_], y[mask_] = self._dataset[idx] - else: - x[mask_], y[mask_] = None, None - - if self._weighted_param is not None: - # Compute weights to assign to the positive class - positive_weight = (len(y['train']) - sum(y['train'])) / sum(y['train']) - # Update the fixed parameters of the model - self._fixed_params[self._weighted_param] = positive_weight - if self._inner_splits > 0: - # Perform the tuning to extract the model with the best hyper-pramaters - best_model = self._tuner.tune(self._model(**self._fixed_params), x['train'], y['train']) - best_hps = self._tuner.get_best_hps() - - else: - best_model = self._model(**self._fixed_params) - best_hps = self._fixed_params - - # Get probabilities predicted for each mask - y_proba = {} - for mask_ in ['train', 'test', 'valid']: - y_proba[mask_] = best_model.predict_proba(x[mask_])[:, 1] if x[mask_] is not None else None - - # Get predictions on the training set and compute the optimal threshold on the training set - threshold = self.optimize_j_statistic(y['train'], y_proba['train']) - - # Save the experiment of the current split in a json file - self.record_experiment(y_proba, y, threshold, mask, i, best_hps) - - # Summarize experiment over all the splits - self.summarize_experiment(i + 1) - - @staticmethod - def optimize_j_statistic(targets: List[int], - pred: List[float]) -> float: - """ - Finds the optimal threshold from ROC curve that separates the negative and positive classes - by optimizing the Youden's J statistics - J = TruePositiveRate – FalsePositiveRate - - Args: - targets(List[int]): ground truth labels - pred(List[float]): predicted probabilities to belong to the positive class - - Returns a float representing the optimal threshold - """ - # Calculate roc curves - fpr, tpr, thresholds = roc_curve(targets, pred, pos_label=1) - - # Get the best threshold - J = tpr - fpr - threshold = thresholds[np.argmax(J)] - - return threshold - - def record_experiment(self, - predictions: Dict[str, List[float]], - targets: Dict[str, List[int]], - threshold: float, - masks: Dict[str, List[int]], - split: int, - hps: Dict[str, Any] - ) -> None: - """ - Records the results of one single experiment on the test, train and valid sets in a json file - - Args: - predictions(Dict[str, List[float]]): probabilities predicted on all the sets - targets(Dict[str, List[int]]): ground truth labels of observation in each set - threshold(float): prediction threshold - masks(Dict[str, List[int]]): train, test and valid masks - split(int): index of the current split - hps(Dict[str, Any]): best hyper-parameters selected after the tuning - - """ - # Create the saving directory - saving_path = self._filepath + '/split_' + str(split) - makedirs(saving_path) - - # Initialize the file structure - summary = {'split': str(split), - 'sources': str(self._dataset.sources), - 'task': self._dataset.task, - 'threshold': str(threshold), - 'hyper-parameters': hps} - # Save statistics of each set - for mask, idx in masks.items(): - if idx is not None: - # Save number of elements in current set - summary['N_' + mask + 'ed'] = len(idx) - - # If observations has a global_id according to which the sampling was performed - if (self._dataset.global_ids is not None) and (not self._stratified_sampling): - summary['N_' + mask + 'ed_global_ids'] = len(self._dataset.get_global_ids(idx)) - - summary[f"proportion_positive_class_{mask}ed"] = '' - - # Initialize the metrics recorded - summary[mask + '_metrics'] = {} - - # Get metrics and prediction values for each mask - for mask, idx in masks.items(): - if idx is not None: - - # Get predicted probabilities and ground truth labels and predicted classes - y_proba, target = predictions[mask], targets[mask] - y_pred = (y_proba >= threshold).astype(float) - - # Save proportion of classes - summary[f"proportion_positive_class_{mask}ed"] = f"{round(np.sum(target) / len(target), 4) * 100} %" - - # Save metrics for current mask - for metric in self._metrics: - summary[mask + '_metrics'][metric.name] = str(metric(y_proba, target, threshold)) - - # Initialize the predictions recorded - summary[mask + '_predictions'] = {} - - # Save predictions for each element - if (self._dataset.global_ids is not None) and (not self._stratified_sampling): - # Map indexes to global ids - map_idx_global_ids = self._dataset.map_idx_to_global_ids() - - # Get the global_ids of the indexes present in the current set - global_ids = self._dataset.get_global_ids(idx) - - # Map indexes to their position in the current mask - map_idx_positions = {index: i for i, index in enumerate(idx)} - - # Map each index to its id in the dataset - map_idx_to_ids = self.reverse_map(self._dataset.map_idx_to_ids()) - - # Save predictions for each global id - for global_id in global_ids: - summary[mask + '_predictions'][str(global_id)] = {} - - # Initialize the information structure for each global_id - summary[mask + '_predictions'][str(global_id)] = {} - - # Get the indexes of the observations present in the global id - indexes = [i for i in map_idx_global_ids[global_id] if i in idx] - - # Save predictions for each observation - for index in indexes: - summary[mask + '_predictions'][str(global_id)][str(index)] = { - 'id': str(map_idx_to_ids[index]), - 'prediction': str(y_pred[map_idx_positions[index]]), - 'probability': str(y_proba[map_idx_positions[index]]), - 'target': str(target[map_idx_positions[index]]) - } - else: - # Map each index to its id in the dataset - map_idx_to_ids = self.reverse_map(self._dataset.map_idx_to_ids()) - - # Save predictions of each observation independently - for i, index in enumerate(idx): - summary[mask + '_predictions'][str(index)] = { - 'index': str(index), - 'id': str(map_idx_to_ids[index]), - 'prediction': str(y_pred[i]), - 'probability': str(y_proba[i]), - 'target': str(target[i]) - } - - # Generate ROC curve - self.plot_roc_curve(saving_path, target, y_proba, mask) - - # Generate the Json file of the split - with open(path.join(saving_path, 'records.json'), "w") as file: - json.dump(summary, file, indent=True) - - def summarize_experiment(self, - n_splits: int - ) -> None: - """ - Summarizes an experiment performed on different splits of the dataset ans saves it in a json file. - The mean, standard deviation, min and max are computed for each metric. - - Args: - n_splits(int): number of splits the model was evaluated on - """ - metrics_values = {} - # Get the folders where each split evaluation was saved - folders = [path.join(self._filepath, 'split_' + str(i)) for i in range(n_splits)] - - for folder in folders: - with open(path.join(folder, 'records.json'), "r") as read_file: - split_data = json.load(read_file) - - # Get metric values over all the splits - for section, data in split_data.items(): - # Get the sections where the metrics are saved - if search("(metric)", section): - # For each split, get the value of the metric - for metric, value in data.items(): - try: - metrics_values[section][metric].append(float(value)) - except KeyError: - try: - metrics_values[section][metric] = [float(value)] - except KeyError: - metrics_values[section] = {metric: [float(value)]} - - # Save statistics on the metrics - recap = {} - for section, data in metrics_values.items(): - recap[section] = {} - for metric, values in data.items(): - values = np.array(values) - mean_scores, std_scores = round(np.mean(values), 4), round(np.std(values), 4) - med_scores = round(np.median(values), 4) - min_scores, max_scores = round(np.min(values), 4), round(np.max(values), 4) - recap[section][metric] = { - 'info': f"{mean_scores} +- {std_scores} [{med_scores}; {min_scores}-{max_scores}]", - 'mean': mean_scores, - 'std': std_scores, - } - - # Save the file in disk - with open(path.join(self._filepath, 'recap.json'), "w") as file: - json.dump(recap, file, indent=True) - - @staticmethod - def visualize_results(file_path: str, - task: str, - recap_file: str = None, - ) -> pd.DataFrame: - """ - Saves metrics scores regrouped in the recap json file in a dataframe and prints it - - Args: - file_path(str): directory where the experiment is saved - task(str): prediction task - recap_file(str): recap json file of the experiment - """ - recap_file = 'recap.json' if recap_file is None else recap_file - with open(path.join(file_path, recap_file), "r") as file: - recap = json.load(file) - - metrics = {} - # Get the mean and std for each metric in all the sets (train, test and valid) - for _set, values in recap.items(): - for metric, stats in values.items(): - try: - metrics[metric][_set] = str(stats['mean']) + ' +- ' + str(stats['std']) - except KeyError: - metrics[metric] = {_set: str(stats['mean']) + ' +- ' + str(stats['std'])} - - for _set in ['HAIM', 'NON_HAIM']: - for metric in metrics.keys(): - if metric == 'AUC': - metrics[metric][_set] = str(constants.AUC[_set][task]) - else: - metrics[metric][_set] = '--' - - # Transform the dictionary to a dataframe - df_metrics = pd.DataFrame(metrics) - - return df_metrics - - @staticmethod - def get_best_of_experiments(task: str, - path_file: str, - n_experiments: int, - metric: str = 'AUC') -> None: - """ - Gets the experiment with the best metric value from a set of saved experiments - - Args: - task(str): file name format of the experiments - path_file(str): path to directory where the experiments are saved - n_experiments(int): number of experiments to compare - metric(str): metric name - """ - metric_values = [] - # Get the folders where each recap evaluation was saved - folders = [path.join(path_file, task + '_' + str(i)) for i in range(n_experiments)] - - for folder in folders: - with open(path.join(folder, 'recap.json'), "r") as read_file: - recap_data = json.load(read_file) - # Get AUC values of all experiments - infos = recap_data["test_metrics"][metric] - metric_values.append(float(infos['mean'])) - - best_experiment = np.argmax(np.array(metric_values)) - - # Copy the files of the best experiment to the directory file_format_best_experiment - shutil.copytree(folders[best_experiment], path.join(path_file, task + '_best_experiment')) - - @staticmethod - def reverse_map(map_: Dict[Any, Any]) -> Dict[Any, Any]: - """ - Reverses the keys and values of a dictionary - - Args: - map_(Dict[Any, Any]): dictionary - - Returns: a dictionary - """ - reversed_map = {} - for k, v in map_.items(): - for value in v: - reversed_map[value] = k - return reversed_map - - @staticmethod - def plot_roc_curve( - saving_path: str, - targets: np.array, - y_proba: np.array, - mask: str) -> None: - - """ - Plots the Area Under AUC curve and saves it - - Args: - saving_path(str): path where to save the figure - targets(np.array): ground truth labels - y_proba(np.array): probabilities predicted - mask(str): label of the current mask - """ - - fpr, tpr, _ = roc_curve(targets, y_proba, pos_label=1) - - # create ROC curve - plt.clf() - plt.plot(fpr, tpr) - plt.ylabel('True Positive Rate') - plt.xlabel('False Positive Rate') - - # Save the figure in the disk - plt.savefig(path.join(saving_path, 'roc_curve_' + mask + '.png')) diff --git a/src/evaluation/tuning.py b/src/evaluation/tuning.py deleted file mode 100644 index 6851b48..0000000 --- a/src/evaluation/tuning.py +++ /dev/null @@ -1,159 +0,0 @@ -""" -Filename: Tuning.py - -Author : Hakima Laribi - -Description: This file is used to store objects used for tuning - -Date of last modification : 2023/02/06 - -""" -from abc import abstractmethod, ABC -from typing import Callable, Dict, List, Any, Union - -from numpy import array -from sklearn.base import BaseEstimator -from sklearn.metrics import make_scorer -from sklearn.model_selection import GridSearchCV, RandomizedSearchCV - -from src.utils.metric_scores import Metric - - -class SklearnHpsOptimizer: - """ - Object used to store Scikit-learn hyper-parameter optimizers labels - """ - - GS = 'grid_search' - RS = 'random_search' - - def __iter__(self): - return iter([self.GS, self.RS]) - - def __getitem__(self, item: str) -> Union[Callable, None]: - if item == self.GS: - return GridSearchCV - elif item == self.RS: - return RandomizedSearchCV - else: - raise ValueError(f"{item}: hyper-parameters optimizer not supported") - - -class Tuner(ABC): - """ - Abstract class used to define tuner skeleton - """ - - def __init__(self, - metric: Metric, - hps: Dict[str, List[Any]], - n_splits: int, - parallel: bool = True): - """ - Sets protected attributes - - Args: - metric(Metric): callable function to optimize - hps(Dict[str, List[Any]]): dictionary with the hyper-parameters to optimize and the corresponding values - to explore - n_splits(int): number of inner splits on which test each combination of hyper-parameters - parallel(bool): whether to run the tuning in parallel or not - """ - # Set protected attributes - self._metric = metric - self._hps = hps - self._n_splits = n_splits - self._n_cpus = -1 if parallel else 1 # Use all cpus for parallel tuning or a single one only - - @abstractmethod - def tune(self, - model: Any, - x: array, - y: array): - """ - Performs the tuning of a model on specific data - - Args: - model(Any): the model to which find the best combination of hyper-parameters - x(array): (N, D) array where N is the number of observations and D the number of predictors - y(array): (N, 1) ground truth labels - """ - raise NotImplementedError - - @abstractmethod - def get_best_hps(self): - """ - Returns the combination of hyper-parameters which optimized the metric value - """ - raise NotImplementedError - - -class SklearnTuner(Tuner): - """ - Object used to perform hyper-parameter tuning using Scikit-learn optimizers - """ - - def __init__(self, - metric: Metric, - hps: Dict[str, List[Any]], - n_splits: int, - model_selector: str = SklearnHpsOptimizer.GS, - parallel: bool = True): - """ - Sets protected attributes - - Args: - metric(Metric): callable function to optimize - hps(Dict[str, List[Any]]): dictionary with the hyper-parameters to optimize and the corresponding values - to explore - n_splits(int): number of inner splits on which test each combination of hyper-parameters - model_selector(str): sckit-learn hyper-parameters optimizer - parallel(bool): whether to run the tuning in parallel or not - - """ - # Validation of inputs - if model_selector not in SklearnHpsOptimizer(): - raise ValueError(f"{model_selector}: unsupported hyper-parameters optimizer in Scikit-Learn") - - # Create a custom scikit-learn score metric - metric = make_scorer(metric, greater_is_better=(metric.direction == 'maximize')) - - # Call parent constructor - super().__init__(metric, hps, n_splits, parallel) - - # Get the Hyper-parameter optimizer in Scikit-learn - self._hps_optimizer = SklearnHpsOptimizer()[model_selector] - self._optimizer = None - - def tune(self, - model: BaseEstimator, - x: array, - y: array) -> BaseEstimator: - """ - Performs the tuning of a model on specific data using a Scikit-learn Hyper-parameters optimizer - - Args: - model(Any): the model to which find the best combination of hyper-parameters - x(array): (N, D) array where N is the number of observations and D the number of predictors - y(array): (N, 1) ground truth labels - - Returns: - Scikit-Learn optimized model - """ - if not isinstance(model, BaseEstimator): - raise ValueError(f"{model} is not a Scikit-Learn estimator, cannot perform tuning with SKlearnTuner") - - # instantiate the hyper-parameter Sklearn optimizer - self._optimizer = self._hps_optimizer(model, self._hps, scoring=self._metric, cv=self._n_splits, - n_jobs=self._n_cpus, refit=True, verbose=0) - # Launch the hyper-parameter optimization - self._optimizer.fit(x, y) - - # return the model with best hyper-parameters - return self._optimizer.best_estimator_ - - def get_best_hps(self) -> Dict[str, Any]: - """ - Returns the combination of hyper-parameters which optimized the metric value - """ - return self._optimizer.best_params_ From 1054b324df675736f4ba32db6820b7f6492e9e0f Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Sun, 20 Oct 2024 17:02:48 -0400 Subject: [PATCH 25/37] Correcting the pycaret evaluator --- src/evaluation/pycaret_evaluator.py | 151 ++++++++++++++++------------ 1 file changed, 84 insertions(+), 67 deletions(-) diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index 23beb5a..1ab8d3e 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -1,19 +1,19 @@ -import os +import gc # Garbage collector to free memory after each fold import json +import os from time import strftime -from typing import Dict, List, Optional, Union, Any -from sklearn.model_selection import StratifiedKFold, KFold +from typing import Any, Dict, List, Optional, Union + +import numpy as np import pandas as pd -from pycaret.classification import ( - create_model, setup, pull, save_model, predict_model, tune_model -) +from sklearn.model_selection import StratifiedKFold, KFold -import gc # Garbage collector to liberate memory after each fold import ray # Import Ray +from pycaret.classification import (create_model, predict_model, pull, save_model, + setup, tune_model) class PyCaretEvaluator: - """ Class to evaluate models using PyCaret, optimized for memory management. """ @@ -29,7 +29,6 @@ def __init__(self, dataset: Any, target: str, experiment_name: Optional[str], fi filepath (str): path for saving results. columns (Optional[List[str]]): optional list of column names. """ - self.dataset = dataset self.target = target self.experiment_name = experiment_name if experiment_name else f"experiment_{strftime('%Y%m%d-%H%M%S')}" @@ -50,14 +49,43 @@ def save_results(self, results: List[Dict], filename: str) -> None: with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) - @ray.remote(memory=8e9) # Mark this function to be executed in parallel by Ray - def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params): + @ray.remote(memory=6e9) # Mark this function to be executed in parallel by Ray + def run_fold(self, + train_index: np.ndarray, + test_index: np.ndarray, + fold_num: int, + train_size: float, + fold: int, + fold_strategy: str, + session_id: int, + model: str, + optimize: Union[str, List[str]], + custom_grid: Optional[Dict[str, List[Any]]], + search_algorithm: str, + fixed_params: Dict[str, Any]) -> Dict[str, Any]: """ Run a single fold in parallel using Ray. + + Args: + train_index (np.ndarray): Array of training indices for the fold. + test_index (np.ndarray): Array of testing indices for the fold. + fold_num (int): The current fold number. + train_size (float): Proportion of data to use for training within the fold. + fold (int): Number of folds for inner cross-validation. + fold_strategy (str): Strategy for inner cross-validation (e.g., 'kfold', 'stratifiedkfold'). + session_id (int): Random seed for reproducibility. + model (str): Name of the model to be created (e.g., 'xgboost', 'lightgbm'). + optimize (Union[str, List[str]]): Metric(s) to optimize during model tuning (e.g., 'AUC', 'Accuracy'). + custom_grid (Optional[Dict[str, List[Any]]]): Custom hyperparameter grid for tuning the model. + search_algorithm (str): Hyperparameter search algorithm to use ('grid' or 'random'). + fixed_params (Dict[str, Any]): Dictionary of fixed parameters for model setup (e.g., seed, eval_metric). + + Returns: + Dict[str, Any]: A dictionary containing training results, test predictions, and the best hyperparameters for the fold. """ print(f"Outer fold {fold_num}") - # Extract the subsets (using NumPy array indexing) + # Extract the subsets using the given indices from StratifiedKFold train_data_x = self.dataset.x[train_index] train_data_y = self.dataset.y[train_index] test_data_x = self.dataset.x[test_index] @@ -69,16 +97,18 @@ def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_str test_df = pd.DataFrame(test_data_x, columns=self.columns) test_df[self.target] = test_data_y - # Configure PyCaret for the current fold with fixed parameters + print(f"Train indices: {train_index}") + print(f"Test indices: {test_index}") + + # Configure PyCaret for the current fold exp = setup(data=train_df, target=self.target, train_size=train_size, fold=fold, - fold_strategy=fold_strategy, - session_id=fixed_params['seed'], # Using the seed for reproducibility + fold_strategy=fold_strategy, # Directly using StratifiedKFold internally if needed + session_id=fixed_params['seed'], verbose=False, - n_jobs=1 - ) + n_jobs=1) print(f"Configuring PyCaret for outer fold {fold_num}") @@ -87,17 +117,15 @@ def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_str if custom_grid: print(f"Tuning hyperparameters for model {model} with custom grid using {search_algorithm} search") - best_model = tune_model( - best_model, - custom_grid=custom_grid, - fold=fold, - optimize=optimize, - search_algorithm=search_algorithm, - verbose=False - ) + best_model = tune_model(best_model, custom_grid=custom_grid, fold=fold, optimize=optimize, search_algorithm=search_algorithm, verbose=False) + + # Extract the best hyperparameters after tuning + best_hyperparams = best_model.get_params() + else: + best_hyperparams = best_model.get_params() # Default parameters if no tuning # Get the results and predictions - model_results = pull() # Pulls the results after create_model or tune_model + model_results = pull() # Pull the results after create_model or tune_model save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{fold_num}")) test_predictions = predict_model(best_model, data=test_df) @@ -105,7 +133,8 @@ def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_str split_result = { 'fold': fold_num, 'train_results': model_results.to_dict(), - 'test_predictions': test_predictions.to_dict() + 'test_predictions': test_predictions.to_dict(), + 'best_hyperparams': best_hyperparams # Save best hyperparameters for this fold } # Clean up memory after each fold @@ -114,17 +143,17 @@ def run_fold(self, train_index, test_index, fold_num, train_size, fold, fold_str return split_result - def run_experiment(self, - train_size: float = 0.8, - fold: int = 5, - fold_strategy: str = 'kfold', - outer_fold: int = 5, + def run_experiment(self, + train_size: float = 0.8, + fold: int = 5, + fold_strategy: str = 'kfold', + outer_fold: int = 5, outer_strategy: str = 'stratifiedkfold', - session_id: int = 42, - model: Optional[str] = 'xgboost', - optimize: Union[str, List[str]] = 'AUC', + session_id: int = 42, + model: Optional[str] = 'xgboost', + optimize: Union[str, List[str]] = 'AUC', custom_grid: Optional[Dict[str, List[Any]]] = None, - search_algorithm: str = 'grid', + search_algorithm: str = 'grid', fixed_params: Dict[str, Any] = None) -> None: """ Executes the complete experiment including external cross-validation, training, and model optimization. @@ -142,14 +171,8 @@ def run_experiment(self, search_algorithm (str): Algorithm to use for hyperparameter tuning ('grid' or 'random'). fixed_params (Dict[str, Any]): Fixed parameters such as seed and eval_metric. """ - - # Use default fixed_params if none are provided if fixed_params is None: - fixed_params = { - 'seed': 42, - 'eval_metric': 'logloss', - 'verbosity': 0 - } + fixed_params = {'seed': 42, 'eval_metric': 'logloss', 'verbosity': 0} # Define the outer cross-validation strategy if outer_strategy == 'stratifiedkfold': @@ -159,53 +182,47 @@ def run_experiment(self, else: raise ValueError(f"Unknown outer_strategy: {outer_strategy}") - # Initialize Ray - ray.init(ignore_reinit_error=True, num_cpus=128) - + ray.init(ignore_reinit_error=True, num_cpus=os.cpu_count()) ray_tasks = [] # List to store Ray tasks - # External cross-validation loop for i, (train_index, test_index) in enumerate(outer_cv.split(self.dataset.x, self.dataset.y)): - # Launch each fold as a Ray task - ray_task = self.run_fold.remote(self, train_index, test_index, i + 1, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params) + ray_task = self.run_fold.remote(self, train_index, test_index, i + 1, train_size, fold, fold_strategy, session_id, model, + optimize, custom_grid, search_algorithm, fixed_params) ray_tasks.append(ray_task) - # Collect all results from Ray tasks results = ray.get(ray_tasks) - - # Save results in a JSON file self.save_results(results, f"{self.experiment_name}_results.json") # Collect and compute final metrics after training fold_metrics_list = [] + best_hyperparams_list = [] for result in results: train_results = result.get('train_results', {}) - + best_hyperparams = result.get('best_hyperparams', {}) if isinstance(train_results, dict): - # Convert the results for each fold into a DataFrame metrics_df = pd.DataFrame(train_results, index=[0]) fold_metrics_list.append(metrics_df) + if best_hyperparams: + best_hyperparams_list.append(best_hyperparams) if fold_metrics_list: - # Combine the DataFrames from all folds all_fold_metrics = pd.concat(fold_metrics_list, ignore_index=True) - - # Calculate the mean and standard deviation for each metric across all folds final_metrics_mean = all_fold_metrics.mean() final_metrics_std = all_fold_metrics.std() - # Create a summary table of the final metrics - metrics_table = pd.DataFrame({ - 'Metric': final_metrics_mean.index, - 'Mean': final_metrics_mean.values, - 'Std Dev': final_metrics_std.values - }) - + metrics_table = pd.DataFrame({'Metric': final_metrics_mean.index, 'Mean': final_metrics_mean.values, + 'Std Dev': final_metrics_std.values}) print("Final metrics table:") print(metrics_table) - # Save the final metrics table to a CSV file metrics_table.to_csv(os.path.join(self.filepath, f"{self.experiment_name}_final_metrics.csv"), index=False) - - ray.shutdown() + + # Selecting the best hyperparameters based on the fold results + if best_hyperparams_list: + # You can either calculate the most frequent hyperparameters or take an average depending on the nature + best_hyperparams_df = pd.DataFrame(best_hyperparams_list) + most_common_hyperparams = best_hyperparams_df.mode().iloc[0] # Most frequent hyperparameters across folds + print(f"Best hyperparameters across all folds: {most_common_hyperparams}") + + ray.shutdown() From 841bdeac1e35a0ff830f9915b1a8b1b96b1711e9 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Mon, 21 Oct 2024 16:37:26 -0400 Subject: [PATCH 26/37] Correcion on the fracture task --- notebooks/fracture.ipynb | 340 ++++++++++++++++++++++------ src/evaluation/pycaret_evaluator.py | 2 + 2 files changed, 277 insertions(+), 65 deletions(-) diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index 6df1d1a..658b2b2 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -186,42 +186,208 @@ "name": "stderr", "output_type": "stream", "text": [ - "2024-09-24 15:22:48,738\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8266 \u001b[39m\u001b[22m\n" + "2024-10-20 17:14:14,195\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[36m(run_fold pid=95326)\u001b[0m Outer fold 1\n", - "\u001b[36m(run_fold pid=95324)\u001b[0m Configuring PyCaret for outer fold 4\n", - "\u001b[36m(run_fold pid=95336)\u001b[0m Outer fold 3\u001b[32m [repeated 4x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)\u001b[0m\n" + "\u001b[36m(run_fold pid=189451)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m Train indices: [ 0 1 2 3 4 6 8 9 10 11 12 13 14 15 17 18 19 20\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 23 24 25 26 27 28 29 32 33 34 36 37 38 39 40 42 43 44\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 45 46 47 48 49 50 51 53 54 55 56 57 59 60 61 62 65 66\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 85 86\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 87 88 89 90 91 92 93 94 96 97 98 99 100 102 104 105 106 107\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 108 109 110 111 114 115 116 117 119 120 122 123 125 126 127 128 129 130\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 131 132 133 135 136 137 138 139 141 142 143 144 145 147 150 151 153 154\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 155 156 158 159 160 161 162 163 164 166 167 168 169 170 172 173 174 175\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 176 178 179 181 182 183 184 185 186 187 188 189 190 191 193 194 195 197\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 198 199 200 201 202 203 204 205 206 207 208 210 211 212 216 218 219 221\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 222 223 224 225 227 228 229 230 231 232 233 234 235 238 239 240 241 242\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 243 244 247 248 249 251 252 254 255 256 257 258 259 261 262 263 264 266\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 267 268 269 270 272 273 274 275 276 277 278 279 280 282 284 285 286 288\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 289 291 292 294 296 297 299 300 301 303 304 306 307 308 309 311 313 314\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 315 316 318 319 320 321 322 323 326 328 329 332 333 334 337 339 340 342\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 343 344 345 346 347 348 350 351 353 354 355 356 357 359 360 361 362 363\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 364 365 366 367 369 370 371 372 373 374 377 378 379 380 381 384 385 386\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 407 408 409 411 412 413 414 416 417 419 420 422 423 424 425 426 427 428\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 430 431 432 433 434 435 437 438 439 441 442 443 445 446 447 448 449 450\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 451 452 453 454 456 457 458 459 460 462 463 464 465 466 468 469 470 471\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 472 473 474 475 476 477 478 479 481 483 484 486 487 488 490 492 493 495\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 496 497 498 499 501 502 504 505 506 507 508 509 511 512 513 514 515 516\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 517 518 519 521 522 523 525 526 527 528 529 531 532 533 535 537 538 539\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 540 541 543 545 546 548 549 550 551 552 553 554 555 556]\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m Test indices: [ 5 7 16 21 22 30 31 35 41 52 58 63 64 79 84 95 101 103\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 112 113 118 121 124 134 140 146 148 149 152 157 165 171 177 180 192 196\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 209 213 214 215 217 220 226 236 237 245 246 250 253 260 265 271 281 283\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 287 290 293 295 298 302 305 310 312 317 324 325 327 330 331 335 336 338\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 341 349 352 358 368 375 376 382 383 387 390 410 415 418 421 429 436 440\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 444 455 461 467 480 482 485 489 491 494 500 503 510 520 524 530 534 536\n", + "\u001b[36m(run_fold pid=189455)\u001b[0m 542 544 547]\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 22 23 24 25 28 29 30 31 33 34 35 36 37 38 39 40 41 42\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 43 44 45 46 47 48 50 51 52 53 54 55 58 59 60 61 62 63\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 64 65 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 84 85 86 89 90 91 92 93 95 96 98 100 101 103 104 105 109 110\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 111 112 113 115 116 118 119 120 121 123 124 125 126 127 128 129 131 133\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 134 135 136 137 138 140 141 142 143 145 146 147 148 149 150 151 152 153\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 154 155 157 158 159 160 161 163 165 166 167 169 170 171 173 174 175 176\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 177 178 179 180 181 182 183 184 185 186 187 188 189 192 193 194 195 196\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 197 198 199 200 201 202 203 204 206 207 208 209 210 211 212 213 214 215\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 217 218 219 220 221 223 224 226 227 228 229 230 231 232 233 234 235 236\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 237 238 239 240 241 242 243 244 245 246 247 248 249 250 253 254 257 260\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 262 263 264 265 267 268 269 270 271 272 274 275 277 278 280 281 282 283\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 284 286 287 288 290 291 292 293 294 295 297 298 299 300 302 303 305 306\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 307 308 310 311 312 314 316 317 319 321 322 324 325 327 330 331 332 333\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 334 335 336 337 338 340 341 342 343 344 347 348 349 351 352 353 355 356\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 357 358 359 360 361 362 363 365 367 368 369 370 371 372 373 374 375 376\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 378 379 381 382 383 384 385 386 387 388 390 392 393 395 396 398 401 402\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 403 406 407 408 410 411 412 413 414 415 418 420 421 422 423 424 425 426\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 427 428 429 430 431 433 434 435 436 437 438 440 442 443 444 446 449 450\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 452 453 455 457 458 459 461 462 465 466 467 468 469 470 471 472 473 474\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 475 476 478 479 480 481 482 483 484 485 488 489 490 491 493 494 495 496\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 497 499 500 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 517 518 519 520 523 524 525 526 528 529 530 531 533 534 535 536 539 540\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 541 542 543 544 545 546 547 549 550 551 552 553 555 556]\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 106 107 108 114 117 122 130 132 139 144 156 162 164 168 172 190 191 205\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 216 222 225 251 252 255 256 258 259 261 266 273 276 279 285 289 296 301\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 304 309 313 315 318 320 323 326 328 329 339 345 346 350 354 364 366 377\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 380 389 391 394 397 399 400 404 405 409 416 417 419 432 439 441 445 447\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 448 451 454 456 460 463 464 477 486 487 492 498 501 521 522 527 532 537\n", + "\u001b[36m(run_fold pid=189456)\u001b[0m 538 548 554]\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 23 24 25 26 27 28 29 30 31 32 34 35 36 38 39 40 41 42\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 43 44 45 48 49 50 52 53 54 55 56 57 58 59 60 61 62 63\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 64 66 67 68 69 70 72 73 74 75 76 77 78 79 82 84 85 86\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 87 88 90 92 94 95 97 99 101 102 103 104 106 107 108 110 112 113\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 114 115 117 118 121 122 124 125 126 127 129 130 131 132 133 134 135 136\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 138 139 140 142 143 144 145 146 148 149 151 152 153 154 156 157 158 160\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 161 162 163 164 165 166 167 168 170 171 172 174 175 176 177 178 180 181\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 183 184 185 188 189 190 191 192 193 194 195 196 197 200 201 202 204 205\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 206 208 209 211 212 213 214 215 216 217 219 220 221 222 223 224 225 226\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 228 229 230 232 233 234 236 237 238 239 240 241 242 244 245 246 248 249\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 250 251 252 253 255 256 258 259 260 261 262 263 264 265 266 267 269 270\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 271 273 274 276 278 279 281 282 283 284 285 286 287 288 289 290 291 292\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 312 313 315 316 317 318 320 321 323 324 325 326 327 328 329 330 331 332\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 333 335 336 338 339 341 342 343 344 345 346 347 348 349 350 352 353 354\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 356 358 359 361 363 364 365 366 367 368 369 370 371 372 373 374 375 376\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 377 378 379 380 382 383 384 385 387 388 389 390 391 393 394 396 397 399\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 400 402 403 404 405 406 407 408 409 410 411 412 414 415 416 417 418 419\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 420 421 423 424 425 426 428 429 431 432 433 434 435 436 439 440 441 444\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 445 446 447 448 449 451 454 455 456 457 458 459 460 461 462 463 464 465\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 466 467 468 471 473 474 475 477 480 481 482 484 485 486 487 488 489 490\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 491 492 493 494 497 498 500 501 502 503 504 506 508 509 510 511 514 516\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 517 519 520 521 522 523 524 526 527 529 530 531 532 534 536 537 538 539\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 540 541 542 543 544 545 547 548 550 551 552 553 554 556]\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 96 98 100 105 109 111 116 119 120 123 128 137 141 147 150 155 159 169\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 173 179 182 186 187 198 199 203 207 210 218 227 231 235 243 247 254 257\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 268 272 275 277 280 311 314 319 322 334 337 340 351 355 357 360 362 381\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 386 392 395 398 401 413 422 427 430 437 438 442 443 450 452 453 469 470\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 472 476 478 479 483 495 496 499 505 507 512 513 515 518 525 528 533 535\n", + "\u001b[36m(run_fold pid=189447)\u001b[0m 546 549 555]\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 22 23 26 27 28 29 30 31 32 33 35 36 37 38 41 43 45 46\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 47 49 50 51 52 55 56 57 58 60 61 62 63 64 65 66 67 69\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 87 88\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 107 108 109 111 112 113 114 116 117 118 119 120 121 122 123 124 125 127\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 128 129 130 132 134 135 136 137 138 139 140 141 143 144 145 146 147 148\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 149 150 152 153 155 156 157 158 159 160 161 162 163 164 165 167 168 169\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 170 171 172 173 174 176 177 178 179 180 181 182 184 186 187 188 190 191\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 192 193 194 196 198 199 201 203 205 207 209 210 213 214 215 216 217 218\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 220 221 222 225 226 227 229 231 233 235 236 237 238 239 243 244 245 246\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 247 249 250 251 252 253 254 255 256 257 258 259 260 261 262 265 266 267\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 268 269 271 272 273 274 275 276 277 279 280 281 283 285 286 287 289 290\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 292 293 295 296 298 299 301 302 303 304 305 309 310 311 312 313 314 315\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 317 318 319 320 322 323 324 325 326 327 328 329 330 331 334 335 336 337\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 338 339 340 341 345 346 349 350 351 352 354 355 357 358 360 361 362 363\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 364 365 366 368 370 371 372 375 376 377 378 379 380 381 382 383 385 386\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 387 389 390 391 392 393 394 395 396 397 398 399 400 401 403 404 405 406\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 407 408 409 410 412 413 414 415 416 417 418 419 421 422 424 427 428 429\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 430 431 432 433 435 436 437 438 439 440 441 442 443 444 445 447 448 450\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 451 452 453 454 455 456 459 460 461 463 464 466 467 468 469 470 471 472\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 473 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 492 494 495 496 498 499 500 501 502 503 504 505 507 510 512 513 515 517\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 518 519 520 521 522 523 524 525 527 528 530 532 533 534 535 536 537 538\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 542 543 544 545 546 547 548 549 551 552 554 555 556]\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 115 126 131 133 142 151 154 166 175 183 185 189 195 197 200 202 204 206\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 208 211 212 219 223 224 228 230 232 234 240 241 242 248 263 264 270 278\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 282 284 288 291 294 297 300 306 307 308 316 321 332 333 342 343 344 347\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 348 353 356 359 367 369 373 374 384 388 402 411 420 423 425 426 434 446\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 449 457 458 462 465 474 493 497 506 508 509 511 514 516 526 529 531 539\n", + "\u001b[36m(run_fold pid=189437)\u001b[0m 540 541 550 553]\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 24 25 26 27 30 31 32 33 34 35 37 39 40 41 42 44 46 47\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 48 49 51 52 53 54 56 57 58 59 63 64 65 66 68 71 77 79\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 80 81 83 84 86 87 88 89 91 93 94 95 96 97 98 99 100 101\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 121 122 123 124 126 128 130 131 132 133 134 137 139 140 141 142 144 146\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 147 148 149 150 151 152 154 155 156 157 159 162 164 165 166 168 169 171\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 172 173 175 177 179 180 182 183 185 186 187 189 190 191 192 195 196 197\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 198 199 200 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 217 218 219 220 222 223 224 225 226 227 228 230 231 232 234 235 236 237\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 240 241 242 243 245 246 247 248 250 251 252 253 254 255 256 257 258 259\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 260 261 263 264 265 266 268 270 271 272 273 275 276 277 278 279 280 281\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 282 283 284 285 287 288 289 290 291 293 294 295 296 297 298 300 301 302\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 358 359 360 362 364 366 367 368 369 373 374 375 376 377 380 381 382 383\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 384 386 387 388 389 390 391 392 394 395 397 398 399 400 401 402 404 405\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 409 410 411 413 415 416 417 418 419 420 421 422 423 425 426 427 429 430\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 432 434 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 452 453 454 455 456 457 458 460 461 462 463 464 465 467 469 470 472 474\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 476 477 478 479 480 482 483 485 486 487 489 491 492 493 494 495 496 497\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 498 499 500 501 503 505 506 507 508 509 510 511 512 513 514 515 516 518\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 520 521 522 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 539 540 541 542 544 546 547 548 549 550 553 554 555]\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 69 70 72 73 74 75 76 78 82 85 90 92 104 125 127 129 135 136\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 138 143 145 153 158 160 161 163 167 170 174 176 178 181 184 188 193 194\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 201 221 229 233 238 239 244 249 262 267 269 274 286 292 299 303 361 363\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 365 370 371 372 378 379 385 393 396 403 406 407 408 412 414 424 428 431\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 433 435 459 466 468 471 473 475 481 484 488 490 502 504 517 519 523 543\n", + "\u001b[36m(run_fold pid=189451)\u001b[0m 545 551 552 556]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Processing: 0%| | 0/4 [00:00 Date: Tue, 22 Oct 2024 09:18:21 -0400 Subject: [PATCH 27/37] Correction Fracture --- notebooks/fracture.ipynb | 592 +++++++++++++++++++++++---------------- 1 file changed, 349 insertions(+), 243 deletions(-) diff --git a/notebooks/fracture.ipynb b/notebooks/fracture.ipynb index 658b2b2..0bdcf42 100644 --- a/notebooks/fracture.ipynb +++ b/notebooks/fracture.ipynb @@ -186,166 +186,46 @@ "name": "stderr", "output_type": "stream", "text": [ - "2024-10-20 17:14:14,195\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" + "2024-10-21 11:46:41,343\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8267 \u001b[39m\u001b[22m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[36m(run_fold pid=189451)\u001b[0m Outer fold 1\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m Train indices: [ 0 1 2 3 4 6 8 9 10 11 12 13 14 15 17 18 19 20\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 23 24 25 26 27 28 29 32 33 34 36 37 38 39 40 42 43 44\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 45 46 47 48 49 50 51 53 54 55 56 57 59 60 61 62 65 66\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 67 68 69 70 71 72 73 74 75 76 77 78 80 81 82 83 85 86\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 87 88 89 90 91 92 93 94 96 97 98 99 100 102 104 105 106 107\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 108 109 110 111 114 115 116 117 119 120 122 123 125 126 127 128 129 130\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 131 132 133 135 136 137 138 139 141 142 143 144 145 147 150 151 153 154\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 155 156 158 159 160 161 162 163 164 166 167 168 169 170 172 173 174 175\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 176 178 179 181 182 183 184 185 186 187 188 189 190 191 193 194 195 197\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 198 199 200 201 202 203 204 205 206 207 208 210 211 212 216 218 219 221\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 222 223 224 225 227 228 229 230 231 232 233 234 235 238 239 240 241 242\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 243 244 247 248 249 251 252 254 255 256 257 258 259 261 262 263 264 266\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 267 268 269 270 272 273 274 275 276 277 278 279 280 282 284 285 286 288\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 289 291 292 294 296 297 299 300 301 303 304 306 307 308 309 311 313 314\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 315 316 318 319 320 321 322 323 326 328 329 332 333 334 337 339 340 342\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 343 344 345 346 347 348 350 351 353 354 355 356 357 359 360 361 362 363\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 364 365 366 367 369 370 371 372 373 374 377 378 379 380 381 384 385 386\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 407 408 409 411 412 413 414 416 417 419 420 422 423 424 425 426 427 428\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 430 431 432 433 434 435 437 438 439 441 442 443 445 446 447 448 449 450\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 451 452 453 454 456 457 458 459 460 462 463 464 465 466 468 469 470 471\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 472 473 474 475 476 477 478 479 481 483 484 486 487 488 490 492 493 495\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 496 497 498 499 501 502 504 505 506 507 508 509 511 512 513 514 515 516\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 517 518 519 521 522 523 525 526 527 528 529 531 532 533 535 537 538 539\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 540 541 543 545 546 548 549 550 551 552 553 554 555 556]\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m Test indices: [ 5 7 16 21 22 30 31 35 41 52 58 63 64 79 84 95 101 103\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 112 113 118 121 124 134 140 146 148 149 152 157 165 171 177 180 192 196\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 209 213 214 215 217 220 226 236 237 245 246 250 253 260 265 271 281 283\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 287 290 293 295 298 302 305 310 312 317 324 325 327 330 331 335 336 338\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 341 349 352 358 368 375 376 382 383 387 390 410 415 418 421 429 436 440\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 444 455 461 467 480 482 485 489 491 494 500 503 510 520 524 530 534 536\n", - "\u001b[36m(run_fold pid=189455)\u001b[0m 542 544 547]\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 22 23 24 25 28 29 30 31 33 34 35 36 37 38 39 40 41 42\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 43 44 45 46 47 48 50 51 52 53 54 55 58 59 60 61 62 63\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 64 65 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 84 85 86 89 90 91 92 93 95 96 98 100 101 103 104 105 109 110\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 111 112 113 115 116 118 119 120 121 123 124 125 126 127 128 129 131 133\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 134 135 136 137 138 140 141 142 143 145 146 147 148 149 150 151 152 153\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 154 155 157 158 159 160 161 163 165 166 167 169 170 171 173 174 175 176\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 177 178 179 180 181 182 183 184 185 186 187 188 189 192 193 194 195 196\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 197 198 199 200 201 202 203 204 206 207 208 209 210 211 212 213 214 215\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 217 218 219 220 221 223 224 226 227 228 229 230 231 232 233 234 235 236\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 237 238 239 240 241 242 243 244 245 246 247 248 249 250 253 254 257 260\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 262 263 264 265 267 268 269 270 271 272 274 275 277 278 280 281 282 283\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 284 286 287 288 290 291 292 293 294 295 297 298 299 300 302 303 305 306\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 307 308 310 311 312 314 316 317 319 321 322 324 325 327 330 331 332 333\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 334 335 336 337 338 340 341 342 343 344 347 348 349 351 352 353 355 356\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 357 358 359 360 361 362 363 365 367 368 369 370 371 372 373 374 375 376\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 378 379 381 382 383 384 385 386 387 388 390 392 393 395 396 398 401 402\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 403 406 407 408 410 411 412 413 414 415 418 420 421 422 423 424 425 426\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 427 428 429 430 431 433 434 435 436 437 438 440 442 443 444 446 449 450\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 452 453 455 457 458 459 461 462 465 466 467 468 469 470 471 472 473 474\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 475 476 478 479 480 481 482 483 484 485 488 489 490 491 493 494 495 496\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 497 499 500 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 517 518 519 520 523 524 525 526 528 529 530 531 533 534 535 536 539 540\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 541 542 543 544 545 546 547 549 550 551 552 553 555 556]\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 106 107 108 114 117 122 130 132 139 144 156 162 164 168 172 190 191 205\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 216 222 225 251 252 255 256 258 259 261 266 273 276 279 285 289 296 301\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 304 309 313 315 318 320 323 326 328 329 339 345 346 350 354 364 366 377\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 380 389 391 394 397 399 400 404 405 409 416 417 419 432 439 441 445 447\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 448 451 454 456 460 463 464 477 486 487 492 498 501 521 522 527 532 537\n", - "\u001b[36m(run_fold pid=189456)\u001b[0m 538 548 554]\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 23 24 25 26 27 28 29 30 31 32 34 35 36 38 39 40 41 42\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 43 44 45 48 49 50 52 53 54 55 56 57 58 59 60 61 62 63\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 64 66 67 68 69 70 72 73 74 75 76 77 78 79 82 84 85 86\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 87 88 90 92 94 95 97 99 101 102 103 104 106 107 108 110 112 113\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 114 115 117 118 121 122 124 125 126 127 129 130 131 132 133 134 135 136\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 138 139 140 142 143 144 145 146 148 149 151 152 153 154 156 157 158 160\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 161 162 163 164 165 166 167 168 170 171 172 174 175 176 177 178 180 181\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 183 184 185 188 189 190 191 192 193 194 195 196 197 200 201 202 204 205\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 206 208 209 211 212 213 214 215 216 217 219 220 221 222 223 224 225 226\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 228 229 230 232 233 234 236 237 238 239 240 241 242 244 245 246 248 249\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 250 251 252 253 255 256 258 259 260 261 262 263 264 265 266 267 269 270\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 271 273 274 276 278 279 281 282 283 284 285 286 287 288 289 290 291 292\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 312 313 315 316 317 318 320 321 323 324 325 326 327 328 329 330 331 332\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 333 335 336 338 339 341 342 343 344 345 346 347 348 349 350 352 353 354\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 356 358 359 361 363 364 365 366 367 368 369 370 371 372 373 374 375 376\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 377 378 379 380 382 383 384 385 387 388 389 390 391 393 394 396 397 399\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 400 402 403 404 405 406 407 408 409 410 411 412 414 415 416 417 418 419\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 420 421 423 424 425 426 428 429 431 432 433 434 435 436 439 440 441 444\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 445 446 447 448 449 451 454 455 456 457 458 459 460 461 462 463 464 465\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 466 467 468 471 473 474 475 477 480 481 482 484 485 486 487 488 489 490\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 491 492 493 494 497 498 500 501 502 503 504 506 508 509 510 511 514 516\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 517 519 520 521 522 523 524 526 527 529 530 531 532 534 536 537 538 539\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 540 541 542 543 544 545 547 548 550 551 552 553 554 556]\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 96 98 100 105 109 111 116 119 120 123 128 137 141 147 150 155 159 169\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 173 179 182 186 187 198 199 203 207 210 218 227 231 235 243 247 254 257\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 268 272 275 277 280 311 314 319 322 334 337 340 351 355 357 360 362 381\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 386 392 395 398 401 413 422 427 430 437 438 442 443 450 452 453 469 470\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 472 476 478 479 483 495 496 499 505 507 512 513 515 518 525 528 533 535\n", - "\u001b[36m(run_fold pid=189447)\u001b[0m 546 549 555]\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 22 23 26 27 28 29 30 31 32 33 35 36 37 38 41 43 45 46\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 47 49 50 51 52 55 56 57 58 60 61 62 63 64 65 66 67 69\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 87 88\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 107 108 109 111 112 113 114 116 117 118 119 120 121 122 123 124 125 127\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 128 129 130 132 134 135 136 137 138 139 140 141 143 144 145 146 147 148\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 149 150 152 153 155 156 157 158 159 160 161 162 163 164 165 167 168 169\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 170 171 172 173 174 176 177 178 179 180 181 182 184 186 187 188 190 191\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 192 193 194 196 198 199 201 203 205 207 209 210 213 214 215 216 217 218\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 220 221 222 225 226 227 229 231 233 235 236 237 238 239 243 244 245 246\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 247 249 250 251 252 253 254 255 256 257 258 259 260 261 262 265 266 267\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 268 269 271 272 273 274 275 276 277 279 280 281 283 285 286 287 289 290\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 292 293 295 296 298 299 301 302 303 304 305 309 310 311 312 313 314 315\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 317 318 319 320 322 323 324 325 326 327 328 329 330 331 334 335 336 337\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 338 339 340 341 345 346 349 350 351 352 354 355 357 358 360 361 362 363\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 364 365 366 368 370 371 372 375 376 377 378 379 380 381 382 383 385 386\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 387 389 390 391 392 393 394 395 396 397 398 399 400 401 403 404 405 406\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 407 408 409 410 412 413 414 415 416 417 418 419 421 422 424 427 428 429\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 430 431 432 433 435 436 437 438 439 440 441 442 443 444 445 447 448 450\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 451 452 453 454 455 456 459 460 461 463 464 466 467 468 469 470 471 472\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 473 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 492 494 495 496 498 499 500 501 502 503 504 505 507 510 512 513 515 517\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 518 519 520 521 522 523 524 525 527 528 530 532 533 534 535 536 537 538\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 542 543 544 545 546 547 548 549 551 552 554 555 556]\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 115 126 131 133 142 151 154 166 175 183 185 189 195 197 200 202 204 206\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 208 211 212 219 223 224 228 230 232 234 240 241 242 248 263 264 270 278\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 282 284 288 291 294 297 300 306 307 308 316 321 332 333 342 343 344 347\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 348 353 356 359 367 369 373 374 384 388 402 411 420 423 425 426 434 446\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 449 457 458 462 465 474 493 497 506 508 509 511 514 516 526 529 531 539\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m 540 541 550 553]\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 24 25 26 27 30 31 32 33 34 35 37 39 40 41 42 44 46 47\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 48 49 51 52 53 54 56 57 58 59 63 64 65 66 68 71 77 79\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 80 81 83 84 86 87 88 89 91 93 94 95 96 97 98 99 100 101\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 121 122 123 124 126 128 130 131 132 133 134 137 139 140 141 142 144 146\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 147 148 149 150 151 152 154 155 156 157 159 162 164 165 166 168 169 171\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 172 173 175 177 179 180 182 183 185 186 187 189 190 191 192 195 196 197\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 198 199 200 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 217 218 219 220 222 223 224 225 226 227 228 230 231 232 234 235 236 237\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 240 241 242 243 245 246 247 248 250 251 252 253 254 255 256 257 258 259\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 260 261 263 264 265 266 268 270 271 272 273 275 276 277 278 279 280 281\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 282 283 284 285 287 288 289 290 291 293 294 295 296 297 298 300 301 302\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 358 359 360 362 364 366 367 368 369 373 374 375 376 377 380 381 382 383\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 384 386 387 388 389 390 391 392 394 395 397 398 399 400 401 402 404 405\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 409 410 411 413 415 416 417 418 419 420 421 422 423 425 426 427 429 430\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 432 434 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 452 453 454 455 456 457 458 460 461 462 463 464 465 467 469 470 472 474\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 476 477 478 479 480 482 483 485 486 487 489 491 492 493 494 495 496 497\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 498 499 500 501 503 505 506 507 508 509 510 511 512 513 514 515 516 518\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 520 521 522 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 539 540 541 542 544 546 547 548 549 550 553 554 555]\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 69 70 72 73 74 75 76 78 82 85 90 92 104 125 127 129 135 136\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 138 143 145 153 158 160 161 163 167 170 174 176 178 181 184 188 193 194\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 201 221 229 233 238 239 244 249 262 267 269 274 286 292 299 303 361 363\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 365 370 371 372 378 379 385 393 396 403 406 407 408 412 414 424 428 431\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 433 435 459 466 468 471 473 475 481 484 488 490 502 504 517 519 523 543\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m 545 551 552 556]\n" + "\u001b[36m(run_fold pid=329239)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m Train indices: [ 0 3 5 6 7 8 9 10 11 12 13 15 16 18 19 20 21 22\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 24 25 26 27 30 31 32 33 34 35 37 39 40 41 42 44 46 47\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 48 49 51 52 53 54 56 57 58 59 63 64 65 66 68 71 77 79\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 80 81 83 84 86 87 88 89 91 93 94 95 96 97 98 99 100 101\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 102 103 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 121 122 123 124 126 128 130 131 132 133 134 137 139 140 141 142 144 146\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 147 148 149 150 151 152 154 155 156 157 159 162 164 165 166 168 169 171\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 172 173 175 177 179 180 182 183 185 186 187 189 190 191 192 195 196 197\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 198 199 200 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 217 218 219 220 222 223 224 225 226 227 228 230 231 232 234 235 236 237\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 240 241 242 243 245 246 247 248 250 251 252 253 254 255 256 257 258 259\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 260 261 263 264 265 266 268 270 271 272 273 275 276 277 278 279 280 281\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 282 283 284 285 287 288 289 290 291 293 294 295 296 297 298 300 301 302\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 358 359 360 362 364 366 367 368 369 373 374 375 376 377 380 381 382 383\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 384 386 387 388 389 390 391 392 394 395 397 398 399 400 401 402 404 405\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 409 410 411 413 415 416 417 418 419 420 421 422 423 425 426 427 429 430\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 432 434 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 452 453 454 455 456 457 458 460 461 462 463 464 465 467 469 470 472 474\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 476 477 478 479 480 482 483 485 486 487 489 491 492 493 494 495 496 497\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 498 499 500 501 503 505 506 507 508 509 510 511 512 513 514 515 516 518\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 520 521 522 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 539 540 541 542 544 546 547 548 549 550 553 554 555]\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m Test indices: [ 1 2 4 14 17 23 28 29 36 38 43 45 50 55 60 61 62 67\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 69 70 72 73 74 75 76 78 82 85 90 92 104 125 127 129 135 136\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 138 143 145 153 158 160 161 163 167 170 174 176 178 181 184 188 193 194\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 201 221 229 233 238 239 244 249 262 267 269 274 286 292 299 303 361 363\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 365 370 371 372 378 379 385 393 396 403 406 407 408 412 414 424 428 431\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 433 435 459 466 468 471 473 475 481 484 488 490 502 504 517 519 523 543\n", + "\u001b[36m(run_fold pid=329239)\u001b[0m 545 551 552 556]\n" ] }, { @@ -359,41 +239,246 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[36m(run_fold pid=189456)\u001b[0m Configuring PyCaret for outer fold 3\n", - "\u001b[36m(run_fold pid=189437)\u001b[0m Outer fold 2\u001b[32m [repeated 4x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)\u001b[0m\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m Train indices: [ 0 3 5 6 7 8 9 10 11 12 13 15 16 18 19 20 21 22\u001b[32m [repeated 4x across cluster]\u001b[0m\n", - "\u001b[36m(run_fold pid=189451)\u001b[0m Test indices: [ 1 2 4 14 17 23 28 29 36 38 43 45 50 55 60 61 62 67\u001b[32m [repeated 4x across cluster]\u001b[0m\n" + "\u001b[36m(run_fold pid=329239)\u001b[0m Configuring PyCaret for outer fold 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Processing: 25%|██▌ | 1/4 [00:00<00:01, 1.87it/s]\n", - "Processing: 0%| | 0/4 [00:00 Date: Tue, 22 Oct 2024 16:12:48 -0400 Subject: [PATCH 28/37] Correction Pneumothorax --- notebooks/pneumothorax.ipynb | 294 ++++++++++++++++++++++------------- 1 file changed, 186 insertions(+), 108 deletions(-) diff --git a/notebooks/pneumothorax.ipynb b/notebooks/pneumothorax.ipynb index 194cece..89ca9d0 100644 --- a/notebooks/pneumothorax.ipynb +++ b/notebooks/pneumothorax.ipynb @@ -180,16 +180,20 @@ "name": "stderr", "output_type": "stream", "text": [ - "2024-09-28 17:23:43,866\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" + "2024-10-21 16:37:00,227\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[36m(run_fold pid=831922)\u001b[0m Outer fold 1\n", - "\u001b[36m(run_fold pid=831922)\u001b[0m Configuring PyCaret for outer fold 1\n", - "\u001b[36m(run_fold pid=831930)\u001b[0m Outer fold 2\n" + "\u001b[36m(run_fold pid=352119)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=352119)\u001b[0m Train indices: [ 0 1 2 ... 17156 17157 17158]\n", + "\u001b[36m(run_fold pid=352119)\u001b[0m Test indices: [ 13 14 15 ... 17135 17147 17155]\n", + "\u001b[36m(run_fold pid=352119)\u001b[0m Configuring PyCaret for outer fold 1\n", + "\u001b[36m(run_fold pid=352122)\u001b[0m Outer fold 2\n", + "\u001b[36m(run_fold pid=352122)\u001b[0m Train indices: [ 0 1 2 ... 17155 17157 17158]\n", + "\u001b[36m(run_fold pid=352122)\u001b[0m Test indices: [ 3 6 8 ... 17152 17154 17156]\n" ] }, { @@ -197,26 +201,26 @@ "output_type": "stream", "text": [ "Processing: 0%| | 0/4 [00:00 Date: Fri, 25 Oct 2024 22:02:02 -0400 Subject: [PATCH 29/37] Changes stratifiedkfold --- notebooks/atelectasis.ipynb | 263 +++++++++++++++++++---------- notebooks/cardiomegaly.ipynb | 274 ++++++++++++++++--------------- notebooks/lung-opacity.ipynb | 309 ++++++++++++++++++++++++----------- 3 files changed, 529 insertions(+), 317 deletions(-) diff --git a/notebooks/atelectasis.ipynb b/notebooks/atelectasis.ipynb index ff01368..c286de5 100644 --- a/notebooks/atelectasis.ipynb +++ b/notebooks/atelectasis.ipynb @@ -181,78 +181,89 @@ "name": "stderr", "output_type": "stream", "text": [ - "2024-09-30 11:46:44,093\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" + "2024-10-23 10:10:30,609\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[36m(run_fold pid=18548)\u001b[0m Outer fold 1\n", - "\u001b[36m(run_fold pid=18548)\u001b[0m Configuring PyCaret for outer fold 1\n", - "\u001b[36m(run_fold pid=18529)\u001b[0m Outer fold 4\u001b[32m [repeated 3x across cluster] (Ray deduplicates logs by default. Set RAY_DEDUP_LOGS=0 to disable log deduplication, or see https://docs.ray.io/en/master/ray-observability/user-guides/configure-logging.html#log-deduplication for more options.)\u001b[0m\n" + "\u001b[36m(run_fold pid=19477)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=19477)\u001b[0m Train indices: [ 1 2 3 ... 15209 15210 15212]\n", + "\u001b[36m(run_fold pid=19477)\u001b[0m Test indices: [ 0 4 7 ... 15194 15203 15211]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Processing: 0%| | 0/4 [00:00 Date: Mon, 28 Oct 2024 10:28:51 -0400 Subject: [PATCH 30/37] README changes --- README.md | 11 ++++++++++- src/evaluation/pycaret_evaluator.py | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index da5960b..3efc070 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,16 @@ To run this package on **Python 3.10 or 3.11**, you need to set up a Conda envir ```bash conda activate haim_env -``` + ``` + +### 2.2 Installing the requirements + + ```bash + pip install -r requirements.txt + + ``` + + The package can be used with different sources combinations to predict one of the 12 predictive tasks defined above. Here is a code snippet which uses one combination of sources to predict patient's length-of-stay: ```python diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index 09f9a92..8ee2053 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -51,7 +51,7 @@ def save_results(self, results: List[Dict], filename: str) -> None: with open(os.path.join(self.filepath, filename), 'w', encoding='utf-8') as f: json.dump(results, f, indent=4) - @ray.remote(memory=6e9) # Mark this function to be executed in parallel by Ray + @ray.remote(memory=8e9) # Mark this function to be executed in parallel by Ray def run_fold(self, train_index: np.ndarray, test_index: np.ndarray, @@ -148,7 +148,7 @@ def run_fold(self, def run_experiment(self, train_size: float = 0.8, fold: int = 5, - fold_strategy: str = 'kfold', + fold_strategy: str = 'stratifiedkfold', outer_fold: int = 5, outer_strategy: str = 'stratifiedkfold', session_id: int = 42, From bad3aa59f3e8c8d1054d43fb526658ec1ac09665 Mon Sep 17 00:00:00 2001 From: mariemkallel16 Date: Tue, 29 Oct 2024 13:59:03 -0400 Subject: [PATCH 31/37] Adding comments --- .gitignore | 5 +- README.md | 61 +++- notebooks/length-of-stay.ipynb | 473 ++++++++++++++++++++-------- run_experiments.py | 25 +- src/evaluation/pycaret_evaluator.py | 31 +- 5 files changed, 417 insertions(+), 178 deletions(-) diff --git a/.gitignore b/.gitignore index b1e2b94..388482b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,11 @@ test*.py *checkpoint* *.xml -Fracture_* + *py_cache* .* !.gitignore !.gitkeep -!*best_experiment* *.csv logs.log -results \ No newline at end of file +experiments diff --git a/README.md b/README.md index 3efc070..2c58558 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ It uses the [HAIM multimodal dataset](https://physionet.org/content/haim-multimo to perform 12 predictive tasks (10 chest pathologies, length-of-stay and 48 h mortality predictions). The first package is our own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). -This package is an adaptation of the adapted [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM) using PyCaret for model management and training and Ray for distributed computation. +This package is an adaptation of the adapted [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM) using our PyCaretEvaluator class. + +The PyCaretEvaluator class is designed to streamline and enhance the model evaluation process by integrating the PyCaret library with Ray for parallel execution, allowing for efficient memory management and performance optimization. PyCaret is an open-source, low-code machine learning library in Python that simplifies the process of building, training, and deploying machine learning models. This class is particularly useful for cases involving extensive model evaluations or hyperparameter tuning across multiple cross-validation folds. By leveraging Ray, the class executes each fold in parallel, reducing computation time and improving scalability on larger datasets. ## 2. How to use the package? The dataset used to replicate this study is publicly available on [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). To run this package: @@ -96,13 +98,6 @@ run the following command: ``` $ python run_experiments.py ``` - -> **Warning** -> -> The HAIM experiment performs 14324 evaluations (1023 evaluations for each of the chest pathologies prediction tasks and 2047 for the length-of-stay and 48h mortality). We didn't run the experiment but we approximate the execution time to 200 days run with the current implementation using only 10 CPUs. - -The experiments results (metrics values and figures) will be stored in the [``experiments``](experiments) directory where the name of each folder is structured as ``TaskName_NumberOfTheExperiment`` -(ex. Fracture_25). For each prediction task, the sources combination with the best AUC will be stored in the directory ``TaskName_best_experiment``. To reproduce the HAIM exepriment on one single predictive task, run the following command: ``` @@ -138,21 +133,21 @@ Below are the ``AUC`` values reported from our experiments compared to those rep | Task | AUC from our 2nd experiment | AUC from our 1st experiment | AUC from the paper | |-------------------------|-----------------------------|-----------------------------|--------------------| -| Fracture | 0.837 +- 0.1 | 0.828 +- 0.110 | 0.838 | -| Pneumothorax | 0.896 +- 0.007 | 0.811 +- 0.021 | 0.836 | +| Fracture | 0.731 +- 0.134 | 0.828 +- 0.110 | 0.838 | +| Pneumothorax | 0.898 +- 0.012 | 0.811 +- 0.021 | 0.836 | | Pneumonia | 0.877 +- 0.012 | 0.871 +- 0.013 | 0.883 | -| Lung opacity | 0.859 +- 0.022 | 0.797 +- 0.015 | 0.816 | +| Lung opacity | 0.809 +- 0.012 | 0.797 +- 0.015 | 0.816 | | Lung lesion | 0.888 +- 0.069 | 0.829 +- 0.053 | 0.844 | | Enlarged Cardiomediastinum | 0.888 +- 0.019 | 0.877 +- 0.035 | 0.876 | | Edema | 0.915 +- 0.005 | 0.915 +- 0.007 | 0.917 | | Consolidation | 0.912 +- 0.015 | 0.918 +- 0.018 | 0.929 | -| Cardiomegaly | 0.922 +- 0.006 | 0.908 +- 0.004 | 0.914 | -| Atelectasis | 0.823 +- 0.042 | 0.765 +- 0.013 | 0.779 | +| Cardiomegaly | 0.922 +- 0.005 | 0.908 +- 0.004 | 0.914 | +| Atelectasis | 0.796 +- 0.022 | 0.765 +- 0.013 | 0.779 | | Length of stay | 0.959 +- 0.003 | 0.932 +- 0.012 | 0.939 | | 48 hours mortality | 0.960 +- 0.004 | 0.907 +- 0.007 | 0.912 | -More statistics and metrics are reported from each of the 12 experiments above and can be found in the ``experiments`` directory. Each experiment directory is named after the task on which the prediction model was evaluated. +More statistics and metrics are reported from each of the 12 experiments above and can be found in the ``results`` directory. Each experiment directory is named after the task on which the prediction model was evaluated. > **Note** > @@ -165,17 +160,49 @@ We tried to reproduce the HAIM experiment and used all the 1023 possible sources Below the ``AUC`` value reported from our experiments compared to the one reported in the HAIM paper. AUC from our experiment with PyCaret | AUC from our experiment | AUC from the paper | -----------| ----------- | -0.837 +-0.1 | 0.862 +- 0.112 | 0.838 | +0.731 +-0.134 | 0.862 +- 0.112 | 0.838 | The above experiment can be performed using the following command ``` $ python run_experiments.py -t "Fracture" ``` -A recap of the experiment named [``Fracture_best_experiment``](experiments/Fracture_best_experiment) is generated at the end of the experiment containing more statistics and metrics values. +A recap of the experiment (results/fracture) is generated at the end of the experiment containing : + +# 1. ```{task}_results.json``` : + + This JSON file stores detailed results for each fold in the cross-validation process. + For each fold, it includes: + - Train Results: Performance metrics obtained on the training data, captured after training and tuning the model. + - Test Predictions: Predictions generated by the model on the test data for this fold. + - Best Hyperparameters: The best hyperparameters found during tuning for this specific fold (if tuning was performed). + This file serves as a comprehensive record of all results and configurations for each fold. + +# 2. ```CP_{task}_final_metrics.csv``` : + + This CSV file consolidates the mean and standard deviation of key performance metrics calculated across all folds. + Included columns: + Metric: The name of each evaluation metric (e.g., AUC, F1 Score, Precision, Recall, MCC and Kappa). + Mean: The average value of each metric across all folds. + Std Dev: The standard deviation of each metric. + This file gives an overall view of the model’s performance and consistency across folds. + +> **Note** +> +> The Matthews Correlation Coefficient (MCC) is a metric that evaluates how well a model’s predictions match actual outcomes, balancing correct and incorrect predictions even when classes are imbalanced. + +> Cohen’s Kappa measures the level of agreement between two raters or classifiers, showing how often they agree beyond what would be expected by chance. + + +# 3. ```best_model_fold_X.pkl``` (where X is the fold number): + + For each fold, the best-performing model is saved as a .pkl file. + Each model file can be reloaded independently if further analysis or testing is needed. + Saving the best models for each fold allows you to compare models or even ensemble them if desired. + ## 5. Future work -The next step of our package is to regenerate the embeddings for each source type. For each modality (tabular, time-series, image, text), we will also explore new embeddings generators. +This adaptation was done in order to test HAIM with PyCaret in order to assimilate its efficiency within our MEDomicsLab platform. For future work, we will continue to test tasks with multiple variations in order to have better results. ## Project Tree ``` diff --git a/notebooks/length-of-stay.ipynb b/notebooks/length-of-stay.ipynb index 5a095ef..1563ea5 100644 --- a/notebooks/length-of-stay.ipynb +++ b/notebooks/length-of-stay.ipynb @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "a948c18c", "metadata": {}, "outputs": [], @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "239db8a3", "metadata": {}, "outputs": [], @@ -114,7 +114,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "id": "8d6cb174", "metadata": {}, "outputs": [], @@ -163,10 +163,336 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "726c2332", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-10-25 22:05:42,189\tINFO worker.py:1777 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32mhttp://127.0.0.1:8265 \u001b[39m\u001b[22m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=249894)\u001b[0m Outer fold 1\n", + "\u001b[36m(run_fold pid=249894)\u001b[0m Train indices: [ 0 1 3 ... 45046 45047 45049]\n", + "\u001b[36m(run_fold pid=249894)\u001b[0m Test indices: [ 2 13 21 ... 45039 45045 45048]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(raylet)\u001b[0m Spilled 3869 MiB, 1 objects, write throughput 563 MiB/s. Set RAY_verbose_spill_logs=0 to disable this message.\n", + "\u001b[36m(raylet)\u001b[0m Spilled 7738 MiB, 3 objects, write throughput 564 MiB/s.\n", + "\u001b[36m(raylet)\u001b[0m Spilled 11607 MiB, 5 objects, write throughput 555 MiB/s.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[36m(run_fold pid=249894)\u001b[0m Configuring PyCaret for outer fold 1\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing: 0%| | 0/4 [00:00\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
AccuracyBalancedAccGeoBalancedAccSensitivitySpecificityAUCBrierScoreBCE
train_metrics1.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.01.0 +- 0.00.0 +- 0.00.0009 +- 0.0004
test_metrics0.924 +- 0.00380.5532 +- 0.0060.3266 +- 0.01820.1071 +- 0.01180.9993 +- 0.00030.9323 +- 0.01150.0461 +- 0.00330.2077 +- 0.0293
HAIM----------0.939----
NON_HAIM----------0.919----
\n", - "" - ], - "text/plain": [ - " Accuracy BalancedAcc GeoBalancedAcc \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.924 +- 0.0038 0.5532 +- 0.006 0.3266 +- 0.0182 \n", - "HAIM -- -- -- \n", - "NON_HAIM -- -- -- \n", - "\n", - " Sensitivity Specificity AUC \\\n", - "train_metrics 1.0 +- 0.0 1.0 +- 0.0 1.0 +- 0.0 \n", - "test_metrics 0.1071 +- 0.0118 0.9993 +- 0.0003 0.9323 +- 0.0115 \n", - "HAIM -- -- 0.939 \n", - "NON_HAIM -- -- 0.919 \n", - "\n", - " BrierScore BCE \n", - "train_metrics 0.0 +- 0.0 0.0009 +- 0.0004 \n", - "test_metrics 0.0461 +- 0.0033 0.2077 +- 0.0293 \n", - "HAIM -- -- \n", - "NON_HAIM -- -- " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Evaluator.visualize_results('experiments/48h los', constants.LOS)" - ] } ], "metadata": { "kernelspec": { - "display_name": "HAIM", + "display_name": "Python (pycaret_env)", "language": "python", - "name": "haim" + "name": "pycaret_env" }, "language_info": { "codemirror_mode": { @@ -329,7 +528,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/run_experiments.py b/run_experiments.py index eaf06ba..54bf828 100644 --- a/run_experiments.py +++ b/run_experiments.py @@ -10,12 +10,13 @@ """ import argparse +import os from itertools import combinations -from tqdm import tqdm from typing import List, Optional from numpy import unique from pandas import read_csv, DataFrame +from tqdm import tqdm from src.data import constants from src.data.dataset import HAIMDataset @@ -55,6 +56,11 @@ def run_single_experiment(prediction_task: str, dataset(Optional[DataFrame]): HAIM dataframe evaluation_name(Optional[str]): name of the experiment """ + + # Set up the folder path specific to the prediction task + task_folder = f"experiments/{prediction_task}" + if not os.path.exists(task_folder): + os.makedirs(task_folder) dataset = read_csv(constants.FILE_DF, nrows=constants.N_DATA) if dataset is None else dataset # Create the HAIMDataset @@ -72,17 +78,17 @@ def run_single_experiment(prediction_task: str, # Initialize the PyCaret Evaluator evaluator = PyCaretEvaluator(dataset=dataset, - target=prediction_task, # Ajout de l'argument target ici + target=prediction_task, experiment_name=evaluation_name, - filepath="constants.EXPERIMENT_PATH") + filepath=task_folder) # Model training and results evaluation evaluator.run_experiment( train_size=0.8, fold=5, - fold_strategy='kfold', + fold_strategy='stratifiedkfold', outer_fold=5, - outer_strategy='kfold', + outer_strategy='stratifiedkfold', session_id=42, model='xgboost', optimize='AUC', @@ -101,7 +107,11 @@ def run_single_experiment(prediction_task: str, df = read_csv(constants.FILE_DF, nrows=constants.N_DATA) # Handle all tasks if none specified - all_tasks = [args.task] if args.task else Task() + all_tasks = [args.task] if args.task else [constants.FRACTURE, constants.PNEUMOTHORAX, constants.PNEUMONIA, + constants.LUNG_OPACITY, constants.LUNG_LESION, constants.ENLARGED_CARDIOMEDIASTINUM, + constants.EDEMA, constants.CONSOLIDATION, constants.CARDIOMEGALY, + constants.ATELECTASIS, constants.LOS, constants.MORTALITY] + for task in all_tasks: print("#" * 23, f"{task} experiment", "#" * 23) @@ -126,5 +136,4 @@ def run_single_experiment(prediction_task: str, evaluation_name=task + '_' + str(count)) bar.update() - # Optionally, collect the best experiments - PyCaretEvaluator.get_best_of_experiments(task, constants.EXPERIMENT_PATH, count) + diff --git a/src/evaluation/pycaret_evaluator.py b/src/evaluation/pycaret_evaluator.py index 8ee2053..51ba466 100644 --- a/src/evaluation/pycaret_evaluator.py +++ b/src/evaluation/pycaret_evaluator.py @@ -12,7 +12,7 @@ from pycaret.classification import (create_model, predict_model, pull, save_model, setup, tune_model) -os.environ["RAY_DEDUP_LOGS"] = "0" +os.environ["RAY_DEDUP_LOGS"] = "0" # Disables log deduplication in Ray class PyCaretEvaluator: @@ -25,18 +25,20 @@ def __init__(self, dataset: Any, target: str, experiment_name: Optional[str], fi Initialize the class parameters. Args: - dataset (Any): the used dataset for machine learning. + dataset (Any): the used dataset for the task. target (str): the target class. experiment_name (Optional[str]): optional name for the experiment. filepath (str): path for saving results. columns (Optional[List[str]]): optional list of column names. """ + # Initialize instance variables self.dataset = dataset self.target = target self.experiment_name = experiment_name if experiment_name else f"experiment_{strftime('%Y%m%d-%H%M%S')}" self.filepath = filepath self.columns = columns + # Create the directory if it doesn't exist if not os.path.exists(self.filepath): os.makedirs(self.filepath) @@ -71,7 +73,7 @@ def run_fold(self, Args: train_index (np.ndarray): Array of training indices for the fold. test_index (np.ndarray): Array of testing indices for the fold. - fold_num (int): The current fold number. + fold_num (int): Current fold number. train_size (float): Proportion of data to use for training within the fold. fold (int): Number of folds for inner cross-validation. fold_strategy (str): Strategy for inner cross-validation (e.g., 'kfold', 'stratifiedkfold'). @@ -87,13 +89,13 @@ def run_fold(self, """ print(f"Outer fold {fold_num}") - # Extract the subsets using the given indices from StratifiedKFold + # Extract training and testing subsets train_data_x = self.dataset.x[train_index] train_data_y = self.dataset.y[train_index] test_data_x = self.dataset.x[test_index] test_data_y = self.dataset.y[test_index] - # PyCaret setup expects a DataFrame, so we convert the NumPy arrays to DataFrames + # Convert NumPy arrays to DataFrames for PyCaret setup train_df = pd.DataFrame(train_data_x, columns=self.columns) train_df[self.target] = train_data_y test_df = pd.DataFrame(test_data_x, columns=self.columns) @@ -107,7 +109,7 @@ def run_fold(self, target=self.target, train_size=train_size, fold=fold, - fold_strategy=fold_strategy, # Directly using StratifiedKFold internally if needed + fold_strategy=fold_strategy, session_id=fixed_params['seed'], verbose=False, n_jobs=1) @@ -131,7 +133,7 @@ def run_fold(self, save_model(best_model, os.path.join(self.filepath, f"best_model_fold_{fold_num}")) test_predictions = predict_model(best_model, data=test_df) - # Save the results of the fold + # Save fold results split_result = { 'fold': fold_num, 'train_results': model_results.to_dict(), @@ -139,7 +141,7 @@ def run_fold(self, 'best_hyperparams': best_hyperparams # Save best hyperparameters for this fold } - # Clean up memory after each fold + # Clean up memory after each fold (memory management) del train_df, test_df, best_model, model_results, test_predictions, exp gc.collect() @@ -158,14 +160,14 @@ def run_experiment(self, search_algorithm: str = 'grid', fixed_params: Dict[str, Any] = None) -> None: """ - Executes the complete experiment including external cross-validation, training, and model optimization. + Runs the entire experiment, including external cross-validation, training, and model optimization. Args: train_size (float): Proportion of the dataset to include in the training split. fold (int): Number of folds for internal cross-validation. fold_strategy (str): Strategy for internal cross-validation ('kfold', 'stratifiedkfold'). outer_fold (int): Number of folds for external cross-validation. - outer_strategy (str): Strategy for external cross-validation ('kfold', 'stratifiedkfold', 'random_sampling'). + outer_strategy (str): Strategy for external cross-validation ('kfold', 'stratifiedkfold'). session_id (int): Session ID for reproducibility. model (Optional[str]): Specific model to use. optimize (Union[str, List[str]]): The metric to optimize. @@ -173,6 +175,7 @@ def run_experiment(self, search_algorithm (str): Algorithm to use for hyperparameter tuning ('grid' or 'random'). fixed_params (Dict[str, Any]): Fixed parameters such as seed and eval_metric. """ + # Params fixed by the original study if fixed_params is None: fixed_params = {'seed': 42, 'eval_metric': 'logloss', 'verbosity': 0} @@ -184,14 +187,16 @@ def run_experiment(self, else: raise ValueError(f"Unknown outer_strategy: {outer_strategy}") - ray.init(ignore_reinit_error=True, num_cpus=os.cpu_count()) + ray.init(ignore_reinit_error=True, num_cpus=os.cpu_count()) # Initialize Ray with available CPUs ray_tasks = [] # List to store Ray tasks + # Generate Ray tasks for each fold for i, (train_index, test_index) in enumerate(outer_cv.split(self.dataset.x, self.dataset.y)): ray_task = self.run_fold.remote(self, train_index, test_index, i + 1, train_size, fold, fold_strategy, session_id, model, optimize, custom_grid, search_algorithm, fixed_params) ray_tasks.append(ray_task) + # Execute and collect results of Ray tasks results = ray.get(ray_tasks) self.save_results(results, f"{self.experiment_name}_results.json") @@ -208,6 +213,7 @@ def run_experiment(self, if best_hyperparams: best_hyperparams_list.append(best_hyperparams) + # Calculate and save the mean and standard deviation of metrics if fold_metrics_list: all_fold_metrics = pd.concat(fold_metrics_list, ignore_index=True) final_metrics_mean = all_fold_metrics.mean() @@ -220,9 +226,8 @@ def run_experiment(self, metrics_table.to_csv(os.path.join(self.filepath, f"{self.experiment_name}_final_metrics.csv"), index=False) - # Selecting the best hyperparameters based on the fold results + # Determine the most common hyperparameters across folds if best_hyperparams_list: - # You can either calculate the most frequent hyperparameters or take an average depending on the nature best_hyperparams_df = pd.DataFrame(best_hyperparams_list) most_common_hyperparams = best_hyperparams_df.mode().iloc[0] # Most frequent hyperparameters across folds print(f"Best hyperparameters across all folds: {most_common_hyperparams}") From 03f6246937fb93cce75cb943beefc96abe5e6fc5 Mon Sep 17 00:00:00 2001 From: Mariem Kallel <100093470+mariemkallel16@users.noreply.github.com> Date: Tue, 29 Oct 2024 14:03:06 -0400 Subject: [PATCH 32/37] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c58558..3eb6497 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ $ python run_experiments.py -t "Fracture" ``` A recap of the experiment (results/fracture) is generated at the end of the experiment containing : -# 1. ```{task}_results.json``` : +#### 1. ```{task}_results.json``` : This JSON file stores detailed results for each fold in the cross-validation process. For each fold, it includes: From 8ebb6a800654a7cb4a5855b84868b12026643227 Mon Sep 17 00:00:00 2001 From: Mariem Kallel <100093470+mariemkallel16@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:27:31 -0400 Subject: [PATCH 33/37] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3eb6497..5da2fe1 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,7 @@ A recap of the experiment (results/fracture) is generated at the end of the expe - Best Hyperparameters: The best hyperparameters found during tuning for this specific fold (if tuning was performed). This file serves as a comprehensive record of all results and configurations for each fold. -# 2. ```CP_{task}_final_metrics.csv``` : +#### 2. ```CP_{task}_final_metrics.csv``` : This CSV file consolidates the mean and standard deviation of key performance metrics calculated across all folds. Included columns: @@ -194,7 +194,7 @@ A recap of the experiment (results/fracture) is generated at the end of the expe > Cohen’s Kappa measures the level of agreement between two raters or classifiers, showing how often they agree beyond what would be expected by chance. -# 3. ```best_model_fold_X.pkl``` (where X is the fold number): +#### 3. ```best_model_fold_X.pkl``` (where X is the fold number): For each fold, the best-performing model is saved as a .pkl file. Each model file can be reloaded independently if further analysis or testing is needed. From e37e0205308f56969dc14f5242aaccfb8eea2fbe Mon Sep 17 00:00:00 2001 From: Mariem Kallel <100093470+mariemkallel16@users.noreply.github.com> Date: Tue, 29 Oct 2024 17:18:06 -0400 Subject: [PATCH 34/37] Update README.md --- README.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 5da2fe1..ae382bc 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,12 @@ It uses the [HAIM multimodal dataset](https://physionet.org/content/haim-multimo to perform 12 predictive tasks (10 chest pathologies, length-of-stay and 48 h mortality predictions). The first package is our own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). -This package is an adaptation of the adapted [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM) using our PyCaretEvaluator class. +This package is an adaptation of the [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM), incorporating our custom PyCaretEvaluator class." The PyCaretEvaluator class is designed to streamline and enhance the model evaluation process by integrating the PyCaret library with Ray for parallel execution, allowing for efficient memory management and performance optimization. PyCaret is an open-source, low-code machine learning library in Python that simplifies the process of building, training, and deploying machine learning models. This class is particularly useful for cases involving extensive model evaluations or hyperparameter tuning across multiple cross-validation folds. By leveraging Ray, the class executes each fold in parallel, reducing computation time and improving scalability on larger datasets. ## 2. How to use the package? -The dataset used to replicate this study is publicly available on [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). To run this package: - -How to set up the environment using Conda? - +The dataset used to replicate this study is publicly available on [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). To run this package on **Python 3.10 or 3.11**, you need to set up a Conda environment to manage dependencies. ### 2.1 Creating and Activating a Conda Environment @@ -158,9 +155,10 @@ More statistics and metrics are reported from each of the 12 experiments above a We tried to reproduce the HAIM experiment and used all the 1023 possible sources combinations to predict the presence or absence of a fracture in a patient and select the one resulting in the best ``AUC``. Below the ``AUC`` value reported from our experiments compared to the one reported in the HAIM paper. - AUC from our experiment with PyCaret | AUC from our experiment | AUC from the paper | - -----------| ----------- | -0.731 +-0.134 | 0.862 +- 0.112 | 0.838 | + | AUC from our experiment with PyCaret | AUC from our experiment | AUC from the paper | +|--------------------------------------|-------------------------|---------------------| +| 0.731 ± 0.134 | 0.862 ± 0.112 | 0.838 | + The above experiment can be performed using the following command @@ -200,9 +198,10 @@ A recap of the experiment (results/fracture) is generated at the end of the expe Each model file can be reloaded independently if further analysis or testing is needed. Saving the best models for each fold allows you to compare models or even ensemble them if desired. +All the results can be accessed via this link: https://usherbrooke-my.sharepoint.com/:f:/g/personal/kalm7073_usherbrooke_ca/EtKnOhTN1kdJmRbkziHYX9EBkgMSWzhfvXMV4lb_fZw3uQ?e=Olejde. ## 5. Future work -This adaptation was done in order to test HAIM with PyCaret in order to assimilate its efficiency within our MEDomicsLab platform. For future work, we will continue to test tasks with multiple variations in order to have better results. +This adaptation aims to evaluate HAIM with PyCaret to better understand its effectiveness within the MEDomicsLab platform. Moving forward, we plan to test additional task variations to further optimize performance. ## Project Tree ``` From b6a1acbd63ea7703f252c078a1859fdb08867358 Mon Sep 17 00:00:00 2001 From: Mariem Kallel <100093470+mariemkallel16@users.noreply.github.com> Date: Tue, 29 Oct 2024 17:22:29 -0400 Subject: [PATCH 35/37] Update README.md --- README.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index ae382bc..e06a41b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ It uses the [HAIM multimodal dataset](https://physionet.org/content/haim-multimo (tabular, time-series, text and images) and 11 unique sources to perform 12 predictive tasks (10 chest pathologies, length-of-stay and 48 h mortality predictions). -The first package is our own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). +The first package is MEDomicsLab’s own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). This package is an adaptation of the [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM), incorporating our custom PyCaretEvaluator class." The PyCaretEvaluator class is designed to streamline and enhance the model evaluation process by integrating the PyCaret library with Ray for parallel execution, allowing for efficient memory management and performance optimization. PyCaret is an open-source, low-code machine learning library in Python that simplifies the process of building, training, and deploying machine learning models. This class is particularly useful for cases involving extensive model evaluations or hyperparameter tuning across multiple cross-validation folds. By leveraging Ray, the class executes each fold in parallel, reducing computation time and improving scalability on larger datasets. @@ -19,25 +19,25 @@ To run this package on **Python 3.10 or 3.11**, you need to set up a Conda envir - For **Python 3.10**: ```bash - conda create --name haim_env python=3.10 + $ conda create --name haim_env python=3.10 ``` - For **Python 3.11**: ```bash - conda create --name haim_env python=3.11 + $ conda create --name haim_env python=3.11 ``` 2. **Activate the Conda environment**: ```bash - conda activate haim_env + $ conda activate haim_env ``` ### 2.2 Installing the requirements ```bash - pip install -r requirements.txt + $ pip install -r requirements.txt ``` @@ -169,21 +169,21 @@ A recap of the experiment (results/fracture) is generated at the end of the expe #### 1. ```{task}_results.json``` : - This JSON file stores detailed results for each fold in the cross-validation process. - For each fold, it includes: - - Train Results: Performance metrics obtained on the training data, captured after training and tuning the model. - - Test Predictions: Predictions generated by the model on the test data for this fold. - - Best Hyperparameters: The best hyperparameters found during tuning for this specific fold (if tuning was performed). - This file serves as a comprehensive record of all results and configurations for each fold. +This JSON file stores detailed results for each fold in the cross-validation process. +For each fold, it includes: + - Train Results: Performance metrics obtained on the training data, captured after training and tuning the model. + - Test Predictions: Predictions generated by the model on the test data for this fold. + - Best Hyperparameters: The best hyperparameters found during tuning for this specific fold (if tuning was performed). +This file serves as a comprehensive record of all results and configurations for each fold. #### 2. ```CP_{task}_final_metrics.csv``` : - This CSV file consolidates the mean and standard deviation of key performance metrics calculated across all folds. - Included columns: - Metric: The name of each evaluation metric (e.g., AUC, F1 Score, Precision, Recall, MCC and Kappa). - Mean: The average value of each metric across all folds. - Std Dev: The standard deviation of each metric. - This file gives an overall view of the model’s performance and consistency across folds. +This CSV file consolidates the mean and standard deviation of key performance metrics calculated across all folds. +Included columns: + - Metric: The name of each evaluation metric (e.g., AUC, F1 Score, Precision, Recall, MCC and Kappa). + - Mean: The average value of each metric across all folds. + - Std Dev: The standard deviation of each metric. +This file gives an overall view of the model’s performance and consistency across folds. > **Note** > @@ -194,9 +194,9 @@ A recap of the experiment (results/fracture) is generated at the end of the expe #### 3. ```best_model_fold_X.pkl``` (where X is the fold number): - For each fold, the best-performing model is saved as a .pkl file. - Each model file can be reloaded independently if further analysis or testing is needed. - Saving the best models for each fold allows you to compare models or even ensemble them if desired. +For each fold, the best-performing model is saved as a .pkl file. +Each model file can be reloaded independently if further analysis or testing is needed. +Saving the best models for each fold allows you to compare models or even ensemble them if desired. All the results can be accessed via this link: https://usherbrooke-my.sharepoint.com/:f:/g/personal/kalm7073_usherbrooke_ca/EtKnOhTN1kdJmRbkziHYX9EBkgMSWzhfvXMV4lb_fZw3uQ?e=Olejde. From c1ace21e469598606137290cc785c9c2017de818 Mon Sep 17 00:00:00 2001 From: Mariem Kallel <100093470+mariemkallel16@users.noreply.github.com> Date: Tue, 29 Oct 2024 17:24:25 -0400 Subject: [PATCH 36/37] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e06a41b..aade562 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ It uses the [HAIM multimodal dataset](https://physionet.org/content/haim-multimo to perform 12 predictive tasks (10 chest pathologies, length-of-stay and 48 h mortality predictions). The first package is MEDomicsLab’s own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). -This package is an adaptation of the [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM), incorporating our custom PyCaretEvaluator class." +This package is an adaptation of the [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM), incorporating our custom PyCaretEvaluator class. The PyCaretEvaluator class is designed to streamline and enhance the model evaluation process by integrating the PyCaret library with Ray for parallel execution, allowing for efficient memory management and performance optimization. PyCaret is an open-source, low-code machine learning library in Python that simplifies the process of building, training, and deploying machine learning models. This class is particularly useful for cases involving extensive model evaluations or hyperparameter tuning across multiple cross-validation folds. By leveraging Ray, the class executes each fold in parallel, reducing computation time and improving scalability on larger datasets. @@ -188,8 +188,7 @@ This file gives an overall view of the model’s performance and consistency acr > **Note** > > The Matthews Correlation Coefficient (MCC) is a metric that evaluates how well a model’s predictions match actual outcomes, balancing correct and incorrect predictions even when classes are imbalanced. - -> Cohen’s Kappa measures the level of agreement between two raters or classifiers, showing how often they agree beyond what would be expected by chance. + Cohen’s Kappa measures the level of agreement between two raters or classifiers, showing how often they agree beyond what would be expected by chance. #### 3. ```best_model_fold_X.pkl``` (where X is the fold number): From 4def4d45f94654eab441d6babda6fb5b638326e0 Mon Sep 17 00:00:00 2001 From: Mariem Kallel <100093470+mariemkallel16@users.noreply.github.com> Date: Thu, 5 Dec 2024 16:19:47 +0100 Subject: [PATCH 37/37] Update README.md --- README.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index aade562..8fcc6e7 100644 --- a/README.md +++ b/README.md @@ -4,25 +4,20 @@ It uses the [HAIM multimodal dataset](https://physionet.org/content/haim-multimo (tabular, time-series, text and images) and 11 unique sources to perform 12 predictive tasks (10 chest pathologies, length-of-stay and 48 h mortality predictions). -The first package is MEDomicsLab’s own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). -This package is an adaptation of the [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM), incorporating our custom PyCaretEvaluator class. +This [HAIM GitHub package](https://github.com/MEDomics-UdeS/HAIM) is MEDomicsLab’s own adaptation of the [HAIM GitHub package](https://github.com/lrsoenksen/HAIM.git). +This version has the same purpose with differents tools, as we are incorporating our custom PyCaretEvaluator class for the training part. The PyCaretEvaluator class is designed to streamline and enhance the model evaluation process by integrating the PyCaret library with Ray for parallel execution, allowing for efficient memory management and performance optimization. PyCaret is an open-source, low-code machine learning library in Python that simplifies the process of building, training, and deploying machine learning models. This class is particularly useful for cases involving extensive model evaluations or hyperparameter tuning across multiple cross-validation folds. By leveraging Ray, the class executes each fold in parallel, reducing computation time and improving scalability on larger datasets. ## 2. How to use the package? The dataset used to replicate this study is publicly available on [physionet](https://physionet.org/content/haim-multimodal/1.0.1/). -To run this package on **Python 3.10 or 3.11**, you need to set up a Conda environment to manage dependencies. +To run this package on **Python 3.11**, you need to set up a Conda environment to manage dependencies. ### 2.1 Creating and Activating a Conda Environment 1. **Create the environment** with the required Python version: - - For **Python 3.10**: - ```bash - $ conda create --name haim_env python=3.10 - ``` - - - For **Python 3.11**: + - ```bash $ conda create --name haim_env python=3.11 ```