{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import math\n", "import random\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# needed in function lr\n", "from sklearn import metrics\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.metrics import average_precision_score\n", "from sklearn.metrics import f1_score\n", "from sklearn.metrics import balanced_accuracy_score" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Needed for import dataset\n", "from imblearn.datasets import fetch_datasets\n", "from sklearn.manifold import TSNE" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import LoGAN" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import dataset" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def createTrainParameters():\n", " data = fetch_datasets()['yeast_me2']\n", " labels = data.target\n", " features = data.data\n", " label_1 = list(np.where(labels == 1)[0])\n", " label_0 = list(np.where(labels == -1)[0])\n", " features_1 = features[label_1]\n", " features_0 = features[label_0]\n", " \n", " ttData = LoGAN.TrainTestData(\n", " features0=features_0,\n", " features1=features_1,\n", " trainFactor=2/3)\n", " \n", " data_embedded_min = TSNE(perplexity=.1).fit_transform(ttData.features_1_trn)\n", "\n", " result_min = pd.DataFrame(data=data_embedded_min, columns=['t-SNE0', 't-SNE1'])\n", " \n", " min_t = np.asmatrix(result_min)\n", " min_t = min_t[0:len(ttData.features_1_trn)]\n", " min_t = min_t[:, [0,1]]\n", " \n", " parameters = LoGAN.GanTrainParameters(\n", " n_feat=len(features[1]),\n", " batch_size=30,\n", " min_t=min_t,\n", " features_0_trn=ttData.features_0_trn,\n", " features_1_trn=ttData.features_1_trn\n", " )\n", " \n", " return (data, labels, features, parameters, ttData)\n", "\n", "(data, labels, features, params, ttData) = createTrainParameters()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "gan = LoGAN.GAN(n_feat=params.n_feat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating label and feature matrices" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1484,)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labels.shape" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1484, 8)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dividing data into training and testing datasets" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(990, 8)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.train.data.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(990,)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.train.labels.shape" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(494, 8)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.test.data.shape" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(494,)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ttData.test.labels.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Defining ML models" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def lr(X_train,y_train,X_test,y_test):\n", " logreg = LogisticRegression(C=1e5, solver='lbfgs', multi_class='multinomial', class_weight={0: 1, 1: 1.3})\n", " logreg.fit(X_train, y_train)\n", " y_pred= logreg.predict(X_test)\n", " con_mat=confusion_matrix(y_test,y_pred)\n", " bal_acc=balanced_accuracy_score(y_test,y_pred)\n", " tn, fp, fn, tp = con_mat.ravel()\n", " print('tn, fp, fn, tp:', tn, fp, fn, tp)\n", " prob_lr = logreg.predict_proba(X_test)\n", " aps_lr=average_precision_score(y_test, prob_lr[:,1]) \n", " print('average_pr_score:',aps_lr)\n", " f1 = f1_score(y_test, y_pred)\n", " print('f1 score:', f1)\n", " print('balanced accuracy:', bal_acc)\n", " print(con_mat)\n", " return(aps_lr,f1, prob_lr,con_mat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## LoRAS training" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "num_samples = 30 #kneighbours\n", "num_RACOS = (ttData.nFeatures0 - ttData.nFeatures1) // ttData.nFeatures1\n", "nb_list = LoGAN.Neb_grps(params.min_t, num_samples)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(918, 8)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tLoRAS_set = np.asarray([\n", " gan.noise.tLoRAS(params.features_1_trn[nb], num_samples, num_RACOS)\n", " for nb in nb_list\n", " ])\n", "\n", "tLoRAS_1 = np.reshape(tLoRAS_set, (len(params.features_1_trn) * num_RACOS, params.n_feat))\n", "tLoRAS_1.shape" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "tLoRAS_train = np.concatenate((tLoRAS_1, params.features_1_trn, params.features_0_trn))\n", "tLoRAS_labels = np.concatenate((\n", " np.zeros(len(tLoRAS_1))+1,\n", " np.zeros(len(params.features_1_trn))+1,\n", " np.zeros(len(params.features_0_trn))\n", " ))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tn, fp, fn, tp: 413 64 6 11\n", "average_pr_score: 0.2589243575163835\n", "f1 score: 0.23913043478260873\n", "balanced accuracy: 0.7564434578862992\n", "[[413 64]\n", " [ 6 11]]\n" ] } ], "source": [ "aps_lr_tLoRAS, f1_lr_tLoRAS, prob_lr_tLoRAS, mat_lr_tLoRAS = lr(\n", " tLoRAS_train,\n", " tLoRAS_labels,\n", " ttData.test.data,\n", " ttData.test.labels)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### LoGAN prototype" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(34, 8)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params.features_1_trn.shape" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_2\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_8 (Dense) (None, 25) 225 \n", "_________________________________________________________________\n", "leaky_re_lu_6 (LeakyReLU) (None, 25) 0 \n", "_________________________________________________________________\n", "dense_9 (Dense) (None, 256) 6656 \n", "_________________________________________________________________\n", "leaky_re_lu_7 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_10 (Dense) (None, 512) 131584 \n", "_________________________________________________________________\n", "leaky_re_lu_8 (LeakyReLU) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_11 (Dense) (None, 256) 131328 \n", "_________________________________________________________________\n", "leaky_re_lu_9 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_12 (Dense) (None, 25) 6425 \n", "_________________________________________________________________\n", "leaky_re_lu_10 (LeakyReLU) (None, 25) 0 \n", "_________________________________________________________________\n", "dense_13 (Dense) (None, 8) 208 \n", "=================================================================\n", "Total params: 276,426\n", "Trainable params: 276,426\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "gan.generator.summary()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense (Dense) (None, 1024) 9216 \n", "_________________________________________________________________\n", "leaky_re_lu (LeakyReLU) (None, 1024) 0 \n", "_________________________________________________________________\n", "dropout (Dropout) (None, 1024) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 512) 524800 \n", "_________________________________________________________________\n", "leaky_re_lu_1 (LeakyReLU) (None, 512) 0 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 256) 131328 \n", "_________________________________________________________________\n", "leaky_re_lu_2 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_3 (Dense) (None, 1) 257 \n", "=================================================================\n", "Total params: 665,601\n", "Trainable params: 0\n", "Non-trainable params: 665,601\n", "_________________________________________________________________\n" ] } ], "source": [ "gan.discriminator_min.summary()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_1\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense_4 (Dense) (None, 1024) 9216 \n", "_________________________________________________________________\n", "leaky_re_lu_3 (LeakyReLU) (None, 1024) 0 \n", "_________________________________________________________________\n", "dropout_2 (Dropout) (None, 1024) 0 \n", "_________________________________________________________________\n", "dense_5 (Dense) (None, 512) 524800 \n", "_________________________________________________________________\n", "leaky_re_lu_4 (LeakyReLU) (None, 512) 0 \n", "_________________________________________________________________\n", "dropout_3 (Dropout) (None, 512) 0 \n", "_________________________________________________________________\n", "dense_6 (Dense) (None, 256) 131328 \n", "_________________________________________________________________\n", "leaky_re_lu_5 (LeakyReLU) (None, 256) 0 \n", "_________________________________________________________________\n", "dense_7 (Dense) (None, 1) 257 \n", "=================================================================\n", "Total params: 665,601\n", "Trainable params: 0\n", "Non-trainable params: 665,601\n", "_________________________________________________________________\n" ] } ], "source": [ "gan.discriminator_maj.summary()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model\"\n", "__________________________________________________________________________________________________\n", "Layer (type) Output Shape Param # Connected to \n", "==================================================================================================\n", "input_1 (InputLayer) [(None, 8)] 0 \n", "__________________________________________________________________________________________________\n", "sequential_2 (Sequential) (None, 8) 276426 input_1[0][0] \n", "__________________________________________________________________________________________________\n", "sequential (Sequential) (None, 1) 665601 sequential_2[0][0] \n", "__________________________________________________________________________________________________\n", "sequential_1 (Sequential) (None, 1) 665601 sequential_2[0][0] \n", "==================================================================================================\n", "Total params: 1,607,628\n", "Trainable params: 276,426\n", "Non-trainable params: 1,331,202\n", "__________________________________________________________________________________________________\n" ] } ], "source": [ "gan.gan.summary()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/30 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotCloud(ttData.train.data, ttData.train.labels)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "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7y52zCMIbyCRJroUR48exfDhw5GZmYnc3Fz07t0br776Kngf+ozt2LEDAwYMwKBBgwAAPXr0wI033ojt27d79X6GYdplO9E1oX7SRJciMzMTa9euhVKpRI8ePaDRaAAA/fv3h16vx+XLlz160zzP47PPPkNZWRmGDBkiPs5xHP773/9i2bJl0Gg0SExMRF1dHViWtfOma2pq0K9fv4Ctj+h8kCdNdCnCw8PRt29fpKamigINAFOmTIFGo8Hbb7/t8n319fUAgCNHjuDixYv4+9//jt27d9v9MZvN2L9/PwBgxIgRMJlMOHLkiHiMhoYGlJSU4IYbbgjgConOBnnSBAEgKSkJf/zjH/HHP/4RjY2NmD17Nnr37o36+noUFRWhuLgYn3zyCbZu3YpRo0Zh+PDhTse49dZb8emnn+LOO+9E//79MXHiRLz44otYtWoVoqKi8NprryEpKQlTp06VYIVEqEKeNEFYuOeee1BQUIBr167hsccewx133IElS5bg119/xXPPPYeamhoUFRVhypQpLt8/depUHD16FBcuXAAAvPLKK8jOzsbixYtx3333geM4fPDBB3aDhQmiLWgyC0EQhIwhT5ogCELGkEgTBEHIGBJpgiAIGUMiTRAEIWNIpAmCIGQMiTRBEISMIZEmCIKQMSTSBEEQMoZEmiAIQsb8f9MGSfNPpTMqAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotCloud(tLoRAS_train, tLoRAS_labels)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plotCloud(LoGAN_train, LoGAN_lab)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 2 }