--- a +++ b/scripts/grad-cam & weights/Class_weights.ipynb @@ -0,0 +1,234 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cfce6cf5", + "metadata": {}, + "source": [ + "# Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "cc2568ed", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pickle\n", + "import cv2\n", + "from os import listdir\n", + "from sklearn.preprocessing import LabelBinarizer\n", + "from keras.models import Sequential\n", + "from keras.layers.normalization import BatchNormalization\n", + "from keras.layers.convolutional import Conv2D\n", + "from keras.layers.convolutional import MaxPooling2D\n", + "from keras.layers.core import Activation, Flatten, Dropout, Dense\n", + "from keras import backend as K\n", + "from keras.preprocessing.image import ImageDataGenerator\n", + "#from keras.optimizers import Adam\n", + "from keras.preprocessing import image\n", + "from keras.preprocessing.image import img_to_array\n", + "from sklearn.preprocessing import MultiLabelBinarizer\n", + "from sklearn.model_selection import train_test_split\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "import tensorflow as tf\n", + "from keras.models import Sequential\n", + "from keras.layers import Convolution2D, MaxPooling2D, Flatten, Dense, Dropout, GlobalAveragePooling2D\n", + "\n", + "\n", + "\n", + "import tensorflow as tf\n", + "import keras\n", + "import os \n", + "import time\n", + "#import cv2\n", + "import numpy as np\n", + "#import matplotlib.pyplot as plt\n", + "from keras import optimizers\n", + "import keras\n", + "import tensorflow as tf\n", + "import keras.backend as K\n", + "from sklearn.metrics import confusion_matrix, classification_report\n", + "from keras.models import load_model\n", + "from keras.models import Sequential\n", + "from keras.regularizers import l2\n", + "from keras.applications.vgg16 import VGG16\n", + "from keras.preprocessing.image import ImageDataGenerator\n", + "from keras.callbacks import ModelCheckpoint, CSVLogger, EarlyStopping, ReduceLROnPlateau\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.metrics import confusion_matrix, classification_report\n", + "from sklearn.metrics import roc_curve, auc, roc_auc_score\n", + "#import matplotlib.pyplot as plt\n", + "#from tqdm import tqdm\n", + "from keras.utils import np_utils\n", + "#from imgaug import augmenters as iaa \n", + "import itertools\n", + "%matplotlib inline\n", + "#import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "from keras.preprocessing.image import ImageDataGenerator\n", + "from keras.models import Sequential\n", + "#from keras.optimizers import RMSprop\n", + "from keras.layers import Conv2D, MaxPooling2D\n", + "from keras.layers import Activation, Dropout, Flatten, Dense\n", + "from keras.callbacks import CSVLogger\n", + "#from livelossplot import PlotLossesKeras\n", + "import os\n", + "#from classification_models.keras import Classifiers\n", + "# GPU test\n", + "from tensorflow.python.client import device_lib\n", + "np.random.seed(42)\n", + "from keras.models import load_model\n", + "# Print version\n", + "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", + "from keras.layers import Input, Activation, merge, Dense, Flatten, Dropout, BatchNormalization, GlobalAveragePooling2D\n", + "from keras.models import Model\n", + "from keras.layers import Input, Activation, merge, Dense, Flatten, Dropout, BatchNormalization, GlobalAveragePooling2D\n", + "from keras.layers.convolutional import Convolution2D, MaxPooling2D\n", + "from keras.applications.vgg16 import VGG16\n", + "from keras.regularizers import l2\n", + "import os, sys\n", + "import scipy.misc\n", + "from glob import glob\n", + "import numpy as np\n", + "import random \n", + "import shutil \n", + "import keras\n", + "import time\n", + "import matplotlib.pyplot as plt\n", + "from keras.layers import Dense, Input, Conv2D, Flatten, MaxPool2D, Activation,Dropout, GlobalAveragePooling2D\n", + "from keras.models import Model\n", + "from keras.callbacks import ModelCheckpoint\n", + "from keras import backend as K\n", + "from keras.models import Sequential\n", + "from keras.applications.densenet import DenseNet121\n", + "from keras.models import load_model\n", + "#from keras.optimizers import Adam\n", + "from keras import optimizers\n", + "import pickle\n", + "import sys\n", + "import cv2\n", + "\n", + "import tensorflow as tf\n", + "\n", + "\n", + "np.random.seed(1)" + ] + }, + { + "cell_type": "markdown", + "id": "38b0ff36", + "metadata": {}, + "source": [ + "# Load data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "11435cf3", + "metadata": {}, + "outputs": [], + "source": [ + "x_train = np.load(\"x_train_leuknet.npy\")\n", + "y_train = np.load(\"y_train_leuknet.npy\")" + ] + }, + { + "cell_type": "markdown", + "id": "8fd805ac", + "metadata": {}, + "source": [ + "# Calculate class weights" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f49a029e", + "metadata": {}, + "outputs": [], + "source": [ + "num_classes = 2\n", + "\n", + "y_train = np_utils.to_categorical(y_train,num_classes)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5be10a71", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((3422, 210, 210, 3), (3422, 2))" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_train.shape, y_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3830291b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "class weights: [51.84848485 0.50486869]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\NSU\\anaconda3\\envs\\leukemia\\lib\\site-packages\\sklearn\\utils\\validation.py:70: FutureWarning: Pass classes=[0 1], y=[1 1 1 ... 1 1 1] as keyword args. From version 1.0 (renaming of 0.25) passing these as positional arguments will result in an error\n", + " warnings.warn(f\"Pass {args_msg} as keyword args. From version \"\n" + ] + } + ], + "source": [ + "from sklearn.utils import class_weight\n", + "class_weights = class_weight.compute_class_weight('balanced', np.unique(np.argmax(y_train, axis=1)),np.argmax(y_train, axis=1))\n", + "print(\"class weights: \",class_weights)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "leukemia", + "language": "python", + "name": "leukemia" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}