{ "cells": [ { "cell_type": "markdown", "id": "4d1e7188-e3fa-43eb-bf79-23afc40b5a8d", "metadata": {}, "source": [ "# Model Evaluation\n", "\n", "In this tutorial we go through the **Model Fitting and Evaluation**, to perform after the **Feature Selection** step. If **PCA** is selected as the Feature Selection method, it is performed right before the Model Fitting.\n", "\n", "\n", "Initially, the feature set is splitted into train/test set. \n", "Then, the train set is used to perform a *5-fold CV*, including **Feature Selection** and **Model Fitting**.\n", "The CV classification performance (*ROC-AUC* score in this tutorial) is then analyzed to select the best model. In this tutorial we refer to *model* as the combination of a *classifier* (i.e. Random Forest) and a *number of selected features* (i.e. 5 features).\n", "\n", "Finally, the best model is used to perform feature selection and model fitting on the train set. The test set is used to evaluate the classification performance of the model.\n", "\n", "In case of *model ensembling* k-top models are selected, and the CV classification scores (ROC-AUC) are using as weight factors for the single classifiers predictions.\n", "\n", "The *classification performance* are reported as **YellowBrick** plots and in a summary table.\n" ] }, { "attachments": { "CV.png": { "image/png": "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YrQoERERERERERERERGR/anAICIiIiIiIiIiIiIiTaYCg4iIiIiIiIiIiIiINJkKDCIiIiIiIiIiIiIi0mQqMIiIiIiIiIiIiIiISJOpwCAiIiIiIiIiIiIiIk2mAoOIiIiIiIiIiIiIiDSZCgwiIiIiIiIiIiIiItJkKjCIiIiIiIiIiIiIiEiTeZwOICIiIiIiIiIiItIpGFYRZobTMZz29hf0n/8do4cN4Nvpk1judB7HuVnhdIRDVWuBwRrmYFnd1mFERA6VC9Y4nUFERERERFqeK8y2sJslTueQjqWyaHtC6a613aKTuhXEd+mf53Qe6WBcbKhz3Si7FljbdmHap3OPMVcBU4El02+xrzqdRw6dsdY6nUFERERERERERKTNGGMuAZ4D/mCtvdnpPCKdjTHmKuBR4DfW2t86nUcOneZgEBERERERERERERGRJlOBQUREREREREREREREmkwFBhERERERERERERERaTIVGEREREREREREREREpMlUYBARERERERERERERkSZTgUFERERERERERERERJpMBQYREREREREREREREWkyj7mSh50O0aYMr9vH+BhgxkIedFlinI7UZly8P3UU7wDMXMjdxpLmdKS2EjJ8fuHRzASYsZBbXZZspzO1Fetm3rSR/Adg5kKuNZYBTmdqKyFYeuFoHnc6h4iIiIiIiIiISEfkwZDhdIg2FSau+kcXZGA6UYEhTHz1jxbSjSHdyThtyWNJqP7ZBamd6nkfIqn6xzCkujvRsRtIdjqDiIiIiIiIiIhIR6UhkkREREREREREREREpMlUYBARERERERERERERkSZTgUFERERERERERERERJpMBQYRERERERERERERaUsrgKeBxU4HkebxOB1ARERERERERERERDoPa+3nwOdO55DmUw8GERERERERERERERFpMhUYRERERERERERERESkyVRgEBERERERERERERGRJlOBQUREREREREREREREmkwFBhERERERERERERERaTIVGEREREREREREREREpMlUYBARERERERERERERkSZTgUFERERERERERERERJpMBQYREREREREREREREWkyFRhERERERERERERERKTJVGAQEREREREREREREZEmU4FBRERERERERERERESaTAUGERERERERERERERFpMhUYRERERERERERE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" } }, "cell_type": "markdown", "id": "9721caaa", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "id": "4bc21f7f-7c5c-49df-90c2-f4919b6a78aa", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "id": "fb4aadbb", "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from pathlib import Path\n", "\n", "from Hive_ML.utilities.feature_utils import data_shuffling\n", "import json \n", "from importlib.resources import as_file, files\n", "import Hive_ML.configs\n", "import os\n", "import plotly.express as px\n", "from sklearn.metrics import classification_report\n", "from sklearn.metrics import roc_auc_score" ] }, { "cell_type": "code", "execution_count": 2, "id": "5703db4b-9b28-44c4-ae1a-552f241cd655", "metadata": { "tags": [] }, "outputs": [], "source": [ "from Hive_ML.training.models import adab_tree, random_forest, knn, decicion_tree, lda, qda, naive, svm_kernel, logistic_regression, ridge, mlp\n", "from Hive_ML.training.model_trainer import model_fit_and_predict\n", "MODELS = {\n", " \"rf\": random_forest,\n", " \"adab\": adab_tree,\n", " \"lda\": lda,\n", " \"qda\": qda,\n", " \"logistic_regression\": logistic_regression,\n", " \"knn\": knn,\n", " \"naive\": naive,\n", " \"decision_tree\": decicion_tree,\n", " \"svm\": svm_kernel,\n", " \"ridge\": ridge,\n", " \"mlp\": mlp\n", "}" ] }, { "cell_type": "code", "execution_count": 3, "id": "094509b8-5082-43b6-b424-6e4c7a3b709f", "metadata": { "tags": [] }, "outputs": [], "source": [ "from sklearn.model_selection import StratifiedKFold\n", "from sklearn import preprocessing\n", "from sklearn.decomposition import PCA\n", "from yellowbrick.classifier import ClassificationReport, ROCAUC, PrecisionRecallCurve, ClassPredictionError, DiscriminationThreshold\n", "from mlxtend.feature_selection import SequentialFeatureSelector as SFS" ] }, { "cell_type": "markdown", "id": "debb16f2-251a-4084-9b12-41ac4f60b5d3", "metadata": {}, "source": [ "## Load Configuration" ] }, { "cell_type": "code", "execution_count": 4, "id": "31370573", "metadata": { "tags": [] }, "outputs": [], "source": [ "config_file = \"Radiodynamics_config.json\"\n", "\n", "try:\n", " with open(config_file) as json_file:\n", " config_dict = json.load(json_file)\n", "except FileNotFoundError:\n", " with as_file(files(Hive_ML.configs).joinpath(config_file)) as json_path:\n", " with open(json_path) as json_file:\n", " config_dict = json.load(json_file)" ] }, { "cell_type": "markdown", "id": "9938e8ed-06d2-48cf-89e0-2dc790e8e2a4", "metadata": {}, "source": [ "## Features Loading and Aggregation\n", "\n", "Radiomics Features are aggregagated across the 3D Sequences:\n", "\n", "$F\\mu_{p,i}=\\frac{1}{N} \\sum_{n=0}^N F_{n, p, i}$\n", "\n", "$F\\sigma_{p,i}= \\sqrt{\\frac{\\sum_{n=0}^N (F_{n, p, i} - F\\mu_{p,i})^2}{N}}$\n", "\n", "$F\\Delta_{p,i}=\\frac{1}{N} \\sum_{n=0}^N |F_{n, p, i}- F\\mu_{p,i}|$\n", "\n", "with $ p = patient_p, i = feature_i$" ] }, { "cell_type": "code", "execution_count": 5, "id": "5773ea14-8d01-429b-8e61-04fa769da85a", "metadata": { "tags": [] }, "outputs": [], "source": [ "def get_feature_set_details(feature_set):\n", "\n", " n_sequences = feature_set[[\"Subject_ID\", \"Sequence_Number\"]].groupby(\"Subject_ID\").count()\n", " n_sequences = max(n_sequences[\"Sequence_Number\"])\n", " subjects_and_labels = feature_set[[\"Subject_ID\", \"Subject_Label\"]].drop_duplicates()\n", "\n", " subject_ids = subjects_and_labels[\"Subject_ID\"].values\n", " subject_labels = subjects_and_labels[\"Subject_Label\"].values\n", "\n", " feature_list = []\n", " for sequence in range(n_sequences):\n", " sequence_feature_list = []\n", " for subject in subject_ids:\n", " feature_set_subject = feature_set[\n", " (feature_set[\"Subject_ID\"] == subject) & (feature_set[\"Sequence_Number\"] == sequence)]\n", " feature_set_subject = feature_set_subject.copy(deep=True)\n", " feature_set_subject.drop(\"Subject_ID\", inplace=True, axis=1)\n", " feature_set_subject.drop(\"Subject_Label\", inplace=True, axis=1)\n", " feature_set_subject.drop(\"Sequence_Number\", inplace=True, axis=1)\n", " if feature_set_subject.values.shape[0] > 0:\n", " sequence_feature_list.append(feature_set_subject.values)\n", " else:\n", " nan_array = np.empty((1, feature_set_subject.values.shape[1]))\n", " nan_array[:] = np.nan\n", " sequence_feature_list.append(nan_array)\n", " feature_list.append(sequence_feature_list)\n", "\n", " feature_set_names = feature_set.copy(deep=True)\n", " feature_set_names.drop(\"Subject_ID\", inplace=True, axis=1)\n", " feature_set_names.drop(\"Subject_Label\", inplace=True, axis=1)\n", " feature_set_names.drop(\"Sequence_Number\", inplace=True, axis=1)\n", " feature_names = feature_set_names.columns\n", " return feature_list, subject_ids, subject_labels, feature_names\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "8dd15ead-7121-47e5-84ec-cbf383531a55", "metadata": { "tags": [] }, "outputs": [], "source": [ "def get_4D_feature_stats(feature_list):\n", "\n", " feature_arrays = np.array(feature_list).squeeze(axis=-2)\n", "\n", " mean_features = np.nanmean(feature_arrays, axis=0)\n", " sum_features = np.nansum(feature_arrays, axis=0)\n", " std_features = np.nanstd(feature_arrays, axis=0)\n", "\n", " delta_features = np.absolute(np.subtract(feature_arrays, mean_features))\n", " mean_delta_features = np.nanmean(delta_features, axis=0)\n", "\n", " return mean_features, sum_features, std_features, mean_delta_features" ] }, { "cell_type": "code", "execution_count": 7, "id": "b0a42801-7ef2-4378-a14c-f0354670b929", "metadata": { "tags": [] }, "outputs": [], "source": [ "data_folder = \"Data/DCE_MRI_dataset\"\n", "feature_set_filename = str(Path(data_folder).joinpath(\"Perfusion_Radiomics.xlsx\"))\n", "feature_set = pd.read_excel(feature_set_filename, index_col=0)\n", "\n", "feature_set = feature_set.sort_values(by=['Subject_Label','Subject_ID','Sequence_Number'])\n", "\n", "feature_list, subject_ids, subject_labels, feature_names = get_feature_set_details(feature_set)\n", "mean_features, sum_features, std_features, mean_delta_features = get_4D_feature_stats(feature_list)" ] }, { "cell_type": "markdown", "id": "09d68ea6-4101-48cb-8a5c-33d79ae8e825", "metadata": {}, "source": [ "## 3D Feature Array Flattening into 2D Array\n", "\n", "$ F_{n,p,i} $ to $ F_{p,i*n} $" ] }, { "cell_type": "code", "execution_count": 8, "id": "ba529b0f-d8ab-4234-9f95-267e4ff5cf40", "metadata": { "tags": [] }, "outputs": [], "source": [ "def flatten_4D_features(feature_list, feature_names):\n", " feature_arrays = np.array(feature_list).squeeze(axis=-2)\n", " flat_feature_array = np.zeros((feature_arrays.shape[1], 1))\n", "\n", " if feature_arrays.shape[0] > 1:\n", " T = feature_arrays.shape[0]\n", " n_features = feature_arrays.shape[2]\n", " for n in range(n_features):\n", " for t in range(T):\n", " flat_feature_array = np.hstack(\n", " [flat_feature_array, feature_arrays[t, :, n].reshape(feature_arrays.shape[1], 1)])\n", "\n", " flatten_feature_names = []\n", " for feature_name in feature_names:\n", " for t in range(T):\n", " flatten_feature_names.append(\"{}_{}\".format(t, feature_name))\n", " return flat_feature_array[:, 1:], flatten_feature_names\n", "\n", " else:\n", " return feature_list, feature_names" ] }, { "cell_type": "code", "execution_count": 9, "id": "83364fb3-b679-4391-93a2-074b68e03471", "metadata": { "tags": [] }, "outputs": [], "source": [ "feature_list_flatten, feature_names_flatten = flatten_4D_features(feature_list, feature_names)\n", "\n", "label_set = np.array(subject_labels)" ] }, { "cell_type": "code", "execution_count": 10, "id": "1a87e8d3-6ea3-4634-bec2-2ec7b5fc9619", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# Features: (352,)\n", "#Labels: (80,)\n" ] } ], "source": [ "print(\"# Features: {}\".format(feature_list_flatten.shape[1:]))\n", "print(\"#Labels: {}\".format(label_set.shape))" ] }, { "cell_type": "markdown", "id": "bf1db891-464b-4205-849b-10e7bcc96f86", "metadata": {}, "source": [ "## Feature Filtering\n", "\n", "Features where > 50% of values are identical are removed." ] }, { "cell_type": "code", "execution_count": 11, "id": "fcffd4a3", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Excluding: 0_original_firstorder_10Percentile\n", "Excluding: 0_original_firstorder_90Percentile\n", "Excluding: 0_original_firstorder_Entropy\n", "Excluding: 3_original_firstorder_Entropy\n", "Excluding: 0_original_firstorder_Maximum\n", "Excluding: 0_original_firstorder_Minimum\n", "Excluding: 0_original_firstorder_Range\n", "Excluding: 0_original_firstorder_Uniformity\n", "Excluding: 3_original_firstorder_Uniformity\n", "Excluding: 0_original_glcm_Autocorrelation\n", "Excluding: 3_original_glcm_Autocorrelation\n", "Excluding: 0_original_glcm_ClusterProminence\n", "Excluding: 3_original_glcm_ClusterProminence\n", "Excluding: 0_original_glcm_ClusterShade\n", "Excluding: 3_original_glcm_ClusterShade\n", "Excluding: 0_original_glcm_ClusterTendency\n", "Excluding: 3_original_glcm_ClusterTendency\n", "Excluding: 0_original_glcm_Contrast\n", "Excluding: 3_original_glcm_Contrast\n", "Excluding: 0_original_glcm_Correlation\n", "Excluding: 3_original_glcm_Correlation\n", "Excluding: 0_original_glcm_DifferenceAverage\n", "Excluding: 3_original_glcm_DifferenceAverage\n", "Excluding: 0_original_glcm_DifferenceEntropy\n", "Excluding: 3_original_glcm_DifferenceEntropy\n", "Excluding: 0_original_glcm_DifferenceVariance\n", "Excluding: 3_original_glcm_DifferenceVariance\n", "Excluding: 0_original_glcm_Id\n", "Excluding: 3_original_glcm_Id\n", "Excluding: 0_original_glcm_Idm\n", "Excluding: 3_original_glcm_Idm\n", "Excluding: 0_original_glcm_Idmn\n", "Excluding: 3_original_glcm_Idmn\n", "Excluding: 0_original_glcm_Idn\n", "Excluding: 3_original_glcm_Idn\n", "Excluding: 0_original_glcm_Imc1\n", "Excluding: 3_original_glcm_Imc1\n", "Excluding: 0_original_glcm_Imc2\n", "Excluding: 3_original_glcm_Imc2\n", "Excluding: 0_original_glcm_InverseVariance\n", "Excluding: 3_original_glcm_InverseVariance\n", "Excluding: 0_original_glcm_JointAverage\n", "Excluding: 3_original_glcm_JointAverage\n", "Excluding: 0_original_glcm_JointEnergy\n", "Excluding: 3_original_glcm_JointEnergy\n", "Excluding: 0_original_glcm_JointEntropy\n", "Excluding: 3_original_glcm_JointEntropy\n", "Excluding: 0_original_glcm_MCC\n", "Excluding: 3_original_glcm_MCC\n", "Excluding: 0_original_glcm_MaximumProbability\n", "Excluding: 3_original_glcm_MaximumProbability\n", "Excluding: 0_original_glcm_SumAverage\n", "Excluding: 3_original_glcm_SumAverage\n", "Excluding: 0_original_glcm_SumEntropy\n", "Excluding: 3_original_glcm_SumEntropy\n", "Excluding: 0_original_glcm_SumSquares\n", "Excluding: 3_original_glcm_SumSquares\n", "Excluding: 0_original_glrlm_GrayLevelNonUniformityNormalized\n", "Excluding: 3_original_glrlm_GrayLevelNonUniformityNormalized\n", "Excluding: 0_original_glrlm_GrayLevelVariance\n", "Excluding: 3_original_glrlm_GrayLevelVariance\n", "Excluding: 0_original_glrlm_HighGrayLevelRunEmphasis\n", "Excluding: 3_original_glrlm_HighGrayLevelRunEmphasis\n", "Excluding: 0_original_glrlm_LowGrayLevelRunEmphasis\n", "Excluding: 3_original_glrlm_LowGrayLevelRunEmphasis\n", "Excluding: 0_original_glszm_GrayLevelNonUniformity\n", "Excluding: 3_original_glszm_GrayLevelNonUniformity\n", "Excluding: 0_original_glszm_GrayLevelNonUniformityNormalized\n", "Excluding: 3_original_glszm_GrayLevelNonUniformityNormalized\n", "Excluding: 0_original_glszm_GrayLevelVariance\n", "Excluding: 3_original_glszm_GrayLevelVariance\n", "Excluding: 0_original_glszm_HighGrayLevelZoneEmphasis\n", "Excluding: 3_original_glszm_HighGrayLevelZoneEmphasis\n", "Excluding: 0_original_glszm_LowGrayLevelZoneEmphasis\n", "Excluding: 3_original_glszm_LowGrayLevelZoneEmphasis\n", "Excluding: 0_original_glszm_SizeZoneNonUniformity\n", "Excluding: 3_original_glszm_SizeZoneNonUniformity\n", "Excluding: 0_original_glszm_SizeZoneNonUniformityNormalized\n", "Excluding: 0_original_glszm_ZoneEntropy\n", "Excluding: 0_original_glszm_ZoneVariance\n", "Excluding: 0_original_gldm_GrayLevelVariance\n", "Excluding: 3_original_gldm_GrayLevelVariance\n", "Excluding: 0_original_gldm_HighGrayLevelEmphasis\n", "Excluding: 3_original_gldm_HighGrayLevelEmphasis\n", "Excluding: 0_original_gldm_LowGrayLevelEmphasis\n", "Excluding: 3_original_gldm_LowGrayLevelEmphasis\n" ] } ], "source": [ "#features = mean_features\n", "features = feature_list_flatten\n", "feature_names = feature_names_flatten\n", "\n", "n_features = features.shape[1]\n", "n_subjects = features.shape[0]\n", "\n", "filtered_feature_set = []\n", "filtered_feature_names = []\n", "features = np.nan_to_num(features)\n", "for feature in range(n_features):\n", " exclude = False\n", " for feature_val in np.unique(features[:, feature]):\n", " if (np.count_nonzero(features[:, feature] == feature_val) / n_subjects) > 0.5:\n", " exclude = True\n", " print(\"Excluding:\", feature_names[feature])\n", " break\n", "\n", " if not exclude:\n", " filtered_feature_set.append(list(features[:, feature]))\n", " filtered_feature_names.append(feature_names[feature])\n" ] }, { "cell_type": "code", "execution_count": 12, "id": "b9b0280c", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# Features: 266\n", "#Labels: (80,)\n" ] } ], "source": [ "feature_set = np.vstack(filtered_feature_set).T\n", "feature_names = filtered_feature_names\n", "\n", "print(\"# Features: {}\".format(feature_set.shape[1]))\n", "print(\"#Labels: {}\".format(label_set.shape))" ] }, { "cell_type": "code", "execution_count": 13, "id": "837fd905", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(64, 266)\n", "(16, 266)\n" ] } ], "source": [ "train_feature_set, train_label_set,test_feature_set, test_label_set = data_shuffling(feature_set, label_set, config_dict[\"random_seed\"])\n", "\n", "print(train_feature_set.shape)\n", "print(test_feature_set.shape)" ] }, { "cell_type": "markdown", "id": "8b626f1f-11fb-4d7d-bdac-f3f3b886d33f", "metadata": {}, "source": [ "### 3D Features\n", "\n", "This section has to be executed ONLY for 3D feature set" ] }, { "cell_type": "code", "execution_count": 199, "id": "ca11d6d1-2c4a-42b3-9b17-2573eb4ec5bb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(4, 80, 88)\n", "(64, 4, 88)\n", "(16, 4, 88)\n" ] } ], "source": [ "feature_set_3D = np.array(feature_list).squeeze(-2)\n", "print(feature_set_3D.shape)\n", "\n", "train_feature_set, train_label_set,test_feature_set, test_label_set = data_shuffling(np.swapaxes(feature_set_3D, 0, 1), label_set, config_dict[\"random_seed\"])\n", "\n", "print(train_feature_set.shape)\n", "print(test_feature_set.shape)" ] }, { "cell_type": "markdown", "id": "481ea6d6-660f-41d6-b016-cb98ca679f69", "metadata": {}, "source": [ "## Experiment Folder Creation\n", "\n", "*experiment_name* and the type of *aggregation* are set here." ] }, { "cell_type": "code", "execution_count": 14, "id": "9d0a2624-b2cb-48cb-bded-9b4d13076b85", "metadata": { "tags": [] }, "outputs": [], "source": [ "os.environ[\"ROOT_FOLDER\"] = \"Experiments\"" ] }, { "cell_type": "code", "execution_count": 15, "id": "e15ff51b", "metadata": { "tags": [] }, "outputs": [], "source": [ "experiment_name = \"Perfusion_Radiomics\"\n", "\n", "aggregation = \"Flat\"\n", "\n", "experiment_dir = Path(os.environ[\"ROOT_FOLDER\"]).joinpath(\n", " experiment_name,config_dict[\"feature_selection\"],aggregation,\"FS\")\n", "experiment_dir.mkdir(parents=True, exist_ok=True)" ] }, { "cell_type": "markdown", "id": "5159abdb-2d0b-478e-9029-3a510a5fb16f", "metadata": {}, "source": [ "## CV Model Fitting\n", "\n", "5-Fold CV over the Train Set, to identify the best performing models." ] }, { "cell_type": "code", "execution_count": 16, "id": "d61eaa79-e94d-437d-993b-4e827913c775", "metadata": { "tags": [] }, "outputs": [], "source": [ "def prepare_features(feature_set, label_set, train_index, aggregation, val_index = None,test_feature_set=None,test_label_set=None):\n", " x_val = None\n", " y_val = None\n", "\n", " if test_feature_set is not None:\n", " x_train = feature_set\n", " x_val = test_feature_set\n", " else:\n", " x_train = feature_set[train_index, :]\n", " if val_index is not None:\n", " x_val = feature_set[val_index, :]\n", "\n", " if test_label_set is not None:\n", " y_train = label_set\n", " y_val = test_label_set\n", " else:\n", " y_train = label_set[train_index]\n", " if val_index is not None:\n", " y_val = label_set[val_index]\n", "\n", " if len(x_train.shape) > 2:\n", " for t in range(x_train.shape[1]):\n", " min_max_norm = preprocessing.MinMaxScaler(feature_range=(0, 1))\n", " x_train[:, t, :] = min_max_norm.fit_transform(x_train[:, t, :])\n", " if x_val is not None:\n", " x_val[:, t, :] = min_max_norm.transform(x_val[:, t, :])\n", "\n", " if aggregation == \"Mean_Norm\":\n", " x_train = np.nanmean(x_train, axis=1)\n", " if x_val is not None:\n", " x_val = np.nanmean(x_val, axis=1)\n", " elif aggregation == \"SD_Norm\":\n", " x_train = np.nanstd(x_train, axis=1)\n", " if x_val is not None:\n", " x_val = np.nanstd(x_val, axis=1)\n", "\n", " return x_train, y_train, x_val, y_val" ] }, { "cell_type": "code", "execution_count": 17, "id": "34b767b8-b9e3-4d49-9112-0fa37d6d6f5e", "metadata": { "tags": [] }, "outputs": [], "source": [ "def feature_normalization(x_train, x_val=None, x_test=None):\n", " min_max_norm = preprocessing.MinMaxScaler(feature_range=(0, 1))\n", " x_train = min_max_norm.fit_transform(x_train)\n", " if x_val is not None:\n", " x_val = min_max_norm.transform(x_val)\n", "\n", " if x_test is not None:\n", " x_test = min_max_norm.transform(x_test)\n", "\n", " return x_train, x_val, x_test" ] }, { "cell_type": "code", "execution_count": 18, "id": "460e96c0-a082-4c47-b4f1-b0272b420642", "metadata": { "tags": [] }, "outputs": [], "source": [ "COMPOSED_METRICS = {\n", " \"sensitivity\": lambda x: x[\"1\"][\"recall\"],\n", " \"specificity\": lambda x: x[\"0\"][\"recall\"]\n", "}\n", "\n", "models = config_dict[\"models\"]\n", "\n", "metrics = [\"accuracy\", \"roc_auc\", \"specificity\", \"sensitivity\"]\n", " \n", "classifier = \"qda\"\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "330519f5-6542-4de8-9520-ff8ca6c9faa0", "metadata": {}, "outputs": [], "source": [ "selected_features = {}\n", "df_summary = []\n", "\n", "selected_features[classifier] = {}\n", "\n", "n_features = config_dict[\"n_features\"]\n", "if n_features > train_feature_set.shape[-1]:\n", " n_features = train_feature_set.shape[-1]\n", "\n", "if n_features != \"All\":\n", " for n_feature in range(1, n_features + 1):\n", " kf = StratifiedKFold(n_splits=config_dict[\"n_folds\"], random_state=config_dict[\"random_seed\"], shuffle=True)\n", " for fold, (train_index, val_index) in enumerate(kf.split(train_feature_set, train_label_set)):\n", "\n", " x_train, y_train, x_val, y_val = prepare_features(train_feature_set, train_label_set,train_index, aggregation,val_index)\n", "\n", " if config_dict[\"feature_selection\"] == \"SFFS\":\n", "\n", " with open(Path(os.environ[\"ROOT_FOLDER\"]).joinpath(\n", " experiment_name,\n", " config_dict[\"feature_selection\"],\n", " aggregation, \"FS\",\n", " f\"FS_summary_{classifier}_fold_{fold}.json\"),\n", " 'rb') as fp:\n", " feature_selection = json.load(fp)\n", " selected_features = feature_selection[str(n_feature)][\"feature_names\"]\n", " train_feature_name_list = list(feature_names)\n", "\n", " feature_idx = []\n", "\n", " for selected_feature in selected_features:\n", " feature_idx.append(train_feature_name_list.index(selected_feature))\n", "\n", " x_train = x_train[:, feature_idx]\n", "\n", " x_val = x_val[:, feature_idx]\n", "\n", " elif config_dict[\"feature_selection\"] == \"PCA\":\n", " pca = PCA(n_components=n_features)\n", " x_train = pca.fit_transform(x_train)\n", " x_val = pca.transform(x_val)\n", "\n", " x_train, x_val, _ = feature_normalization(x_train, x_val)\n", " clf = MODELS[classifier](**models[classifier],random_state=config_dict[\"random_seed\"])\n", "\n", " y_val_pred = model_fit_and_predict(clf, x_train, y_train, x_val)\n", "\n", " roc_auc_val = roc_auc_score(y_val, y_val_pred[:, 1])\n", "\n", " report = classification_report(y_val,\n", " np.where(y_val_pred[:, 1] > 0.5, 1, 0), output_dict=True)\n", " report[\"roc_auc\"] = roc_auc_val\n", " \n", " for metric in metrics:\n", " if metric not in report:\n", " report[metric] = COMPOSED_METRICS[metric](report)\n", " df_summary.append(\n", " {\"Value\": report[metric], \"Classifier\": classifier, \"Metric\": metric,\n", " \"Fold\": str(fold),\n", " \"N_Features\": n_feature,\n", " \"Experiment\": experiment_name + \"_\" + config_dict[\"feature_selection\"] + \"_\" + aggregation\n", " })" ] }, { "cell_type": "code", "execution_count": 20, "id": "cb35de8c-6ea1-4f75-9130-6b1e3241a2c6", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_summary = pd.DataFrame.from_records(df_summary)" ] }, { "cell_type": "markdown", "id": "befebe8b-6bf4-4b65-a940-0869a897fde5", "metadata": {}, "source": [ "### CV Summary" ] }, { "cell_type": "code", "execution_count": 21, "id": "fd8defdf-4a00-461b-a794-00389a298945", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
| \n", " | Value | \n", "Classifier | \n", "Metric | \n", "Fold | \n", "N_Features | \n", "Experiment | \n", "
|---|---|---|---|---|---|---|
| 0 | \n", "0.615385 | \n", "qda | \n", "accuracy | \n", "0 | \n", "1 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 1 | \n", "0.619048 | \n", "qda | \n", "roc_auc | \n", "0 | \n", "1 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 2 | \n", "0.714286 | \n", "qda | \n", "specificity | \n", "0 | \n", "1 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 3 | \n", "0.500000 | \n", "qda | \n", "sensitivity | \n", "0 | \n", "1 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 4 | \n", "0.615385 | \n", "qda | \n", "accuracy | \n", "1 | \n", "1 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 595 | \n", "0.000000 | \n", "qda | \n", "sensitivity | \n", "3 | \n", "30 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 596 | \n", "0.583333 | \n", "qda | \n", "accuracy | \n", "4 | \n", "30 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 597 | \n", "0.583333 | \n", "qda | \n", "roc_auc | \n", "4 | \n", "30 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 598 | \n", "0.333333 | \n", "qda | \n", "specificity | \n", "4 | \n", "30 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
| 599 | \n", "0.833333 | \n", "qda | \n", "sensitivity | \n", "4 | \n", "30 | \n", "Perfusion_Radiomics_SFFS_Flat | \n", "
600 rows × 6 columns
\n", "| \n", " | Classifier | \n", "N_Features | \n", "weight | \n", "
|---|---|---|---|
| 0 | \n", "qda | \n", "14 | \n", "0.760317 | \n", "