summaryrefslogtreecommitdiff
path: root/scripts/tensorflow/prediction-v5-ext-Padel-2D.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/tensorflow/prediction-v5-ext-Padel-2D.ipynb')
-rw-r--r--scripts/tensorflow/prediction-v5-ext-Padel-2D.ipynb1034
1 files changed, 1034 insertions, 0 deletions
diff --git a/scripts/tensorflow/prediction-v5-ext-Padel-2D.ipynb b/scripts/tensorflow/prediction-v5-ext-Padel-2D.ipynb
new file mode 100644
index 0000000..13622b4
--- /dev/null
+++ b/scripts/tensorflow/prediction-v5-ext-Padel-2D.ipynb
@@ -0,0 +1,1034 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Using TensorFlow backend.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from keras import optimizers, regularizers\n",
+ "from keras.layers import Dense, Dropout, Input\n",
+ "from keras.models import Model, Sequential\n",
+ "from random import shuffle\n",
+ "from scipy import interp\n",
+ "from sklearn.linear_model import LogisticRegression\n",
+ "from scipy.stats.mstats import gmean\n",
+ "from sklearn.ensemble import RandomForestClassifier\n",
+ "from sklearn.metrics import roc_curve, auc\n",
+ "from sklearn.model_selection import StratifiedKFold, train_test_split\n",
+ "from sklearn.preprocessing import QuantileTransformer\n",
+ "import contextlib\n",
+ "import glob\n",
+ "import gzip\n",
+ "import h5py\n",
+ "import keras\n",
+ "import numpy as np\n",
+ "import os\n",
+ "import pandas as pd\n",
+ "import pylab as plt\n",
+ "import random\n",
+ "import scipy\n",
+ "import sklearn\n",
+ "import tensorflow as tf\n",
+ "from sklearn.ensemble import RandomForestClassifier\n",
+ "from sklearn.datasets import make_classification\n",
+ "\n",
+ "\n",
+ "\n",
+ "random_state = np.random.RandomState(0)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_f_ext = '/home/drewe/notebooks/genotox/mutagenicity-fingerprints.csv'\n",
+ "\n",
+ "X = pd.read_csv(X_f_ext,sep=',')\n",
+ "X['Mutagenicity_bin'] = np.int32(X['Mutagenicity'] == 'mutagenic')\n",
+ "del X['Mutagenicity']\n",
+ "\n",
+ "X_f_ext = '/home/drewe/notebooks/genotox/mutagenicity-mod-2.csv'\n",
+ "\n",
+ "X_ext = pd.read_csv(X_f_ext,sep=';')\n",
+ "\n",
+ "\n",
+ "X = pd.merge(X[['Canonical SMILES','Mutagenicity_bin']], X_ext, left_on='Canonical SMILES', right_on='Name')\n",
+ "y = X['Mutagenicity_bin'].values\n",
+ "del X['Mutagenicity_bin']\n",
+ "del X['Name']\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(8083, 1173)\n",
+ "(8083,)\n",
+ "(602, 1173)\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/fast_data/drewe/software/envs/tf_gpu/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3020: DtypeWarning: Columns (517,531,534,542,545,547,573,576,599,601,604,607,620,627,629,636,650,653,661,664,666,692,695,718,720,723,726,739,746,748,755,769,772,780,783,785,805,811,814,819,837,845,901,1005) have mixed types. Specify dtype option on import or set low_memory=False.\n",
+ " interactivity=interactivity, compiler=compiler, result=result)\n"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "'''\n",
+ "X_f_ext = '/home/drewe/notebooks/genotox/mutagenicity-mod-2.csv'\n",
+ "X = pd.read_csv(X_f_ext,sep=',')\n",
+ "\n",
+ "y = np.int32(X['Mutagenicity'] == 'mutagenic')\n",
+ "del X['Mutagenicity']\n",
+ "\n",
+ "'''\n",
+ "\n",
+ "x_pad = pd.read_csv('/home/drewe/notebooks/genotox/PA_Padel_2D_m2.csv', sep=';', decimal=',')\n",
+ "selected_cols = list(set(x_pad.columns.tolist()).intersection(set(X.columns.tolist())))\n",
+ "X = np.float64(X[selected_cols].values)\n",
+ "x_pad = np.float64(x_pad[selected_cols].values)\n",
+ "print(X.shape)\n",
+ "print(y.shape)\n",
+ "print(x_pad.shape)\n",
+ "\n",
+ "names = pd.read_csv('/home/drewe/notebooks/genotox/PA_Padel_2D_m2.csv', sep=';')['Name'].values\n",
+ "#X_norm = QuantileTransformer(output_distribution='uniform').fit_transform(X.values.T).T\n",
+ "\n",
+ "\n",
+ "#X = pd.merge(X_ext,X[['Canonical SMILES','Mutagenicity_bin']], right_on='Canonical SMILES', left_on='Name')\n",
+ "#X = np.float64(X.values[:,1:])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "\n",
+ "\n",
+ "trnsf = sklearn.preprocessing.QuantileTransformer( output_distribution='uniform')\n",
+ "trnsf.fit(X)\n",
+ "\n",
+ "X = trnsf.transform(X)\n",
+ "x_pad = trnsf.transform(x_pad)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ ">>\n",
+ ".\n",
+ ">>\n",
+ ".\n",
+ ">>\n",
+ ".\n",
+ ">>\n",
+ ".\n",
+ ">>\n",
+ ".\n"
+ ]
+ }
+ ],
+ "source": [
+ "cv = StratifiedKFold(n_splits=10)\n",
+ "results = np.zeros_like(y, dtype=float)\n",
+ "\n",
+ "tprs = []\n",
+ "aucs = []\n",
+ "mean_fpr = np.linspace(0, 1, 100)\n",
+ "\n",
+ "i = 0\n",
+ "\n",
+ "keras.backend.clear_session()\n",
+ "prbs=[]\n",
+ "for mod in range(5):\n",
+ " print('>>')\n",
+ " curr_try = 0\n",
+ " while curr_try <10:\n",
+ " print('.')\n",
+ "\n",
+ " model = Sequential()\n",
+ " model.add(Dense(64, input_dim=X.shape[1], activation='relu'))\n",
+ " model.add(Dense(64, activation='relu'))\n",
+ " model.add(Dense(64, activation='relu'))\n",
+ " model.add(Dense(64, activation='relu'))\n",
+ " model.add(Dense(1, activation='sigmoid'))\n",
+ " # Compile model\n",
+ " opt = keras.optimizers.Adam(epsilon=None, amsgrad=True)\n",
+ " model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])\n",
+ "\n",
+ " # Fit the model\n",
+ " history = model.fit(X, y, epochs=50, batch_size=64, verbose=0)\n",
+ " if history.history['acc'][-1] > 0.53:\n",
+ " break\n",
+ " else:\n",
+ " curr_try += 1\n",
+ "\n",
+ " # Fit the model\n",
+ " probas_ = model.predict(x_pad)\n",
+ " prbs.append(probas_)\n",
+ "# Average the predictions\n",
+ "probas_ = np.mean(np.hstack(prbs), axis=1)\n",
+ "results = probas_\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_results = pd.DataFrame(data={\"name\": names, 'pred': results})\n",
+ "df_results.to_csv('/home/drewe/notebooks/genotox/pred.nn.v5-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.hist(results,100, color='red', alpha=0.5)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8083/8083 [==============================] - 0s 59us/step - loss: 0.4486 - acc: 0.7936\n",
+ "Epoch 2/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4490 - acc: 0.7949\n",
+ "Epoch 3/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4472 - acc: 0.7967\n",
+ "Epoch 4/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4461 - acc: 0.7982\n",
+ "Epoch 5/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4455 - acc: 0.7977\n",
+ "Epoch 6/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4471 - acc: 0.8002\n",
+ "Epoch 7/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4450 - acc: 0.7966\n",
+ "Epoch 8/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4445 - acc: 0.7991\n",
+ "Epoch 9/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4467 - acc: 0.7949\n",
+ "Epoch 10/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4454 - acc: 0.7977\n",
+ "Epoch 11/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4422 - acc: 0.8013\n",
+ "Epoch 12/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4432 - acc: 0.7995\n",
+ "Epoch 13/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4440 - acc: 0.7977\n",
+ "Epoch 14/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4441 - acc: 0.8017\n",
+ "Epoch 15/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4425 - acc: 0.7974\n",
+ "Epoch 16/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4425 - acc: 0.8011\n",
+ "Epoch 17/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4415 - acc: 0.7980\n",
+ "Epoch 18/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4412 - acc: 0.7998\n",
+ "Epoch 19/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4399 - acc: 0.8034\n",
+ "Epoch 20/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4416 - acc: 0.7997\n",
+ "Epoch 21/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4438 - acc: 0.7987\n",
+ "Epoch 22/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4417 - acc: 0.7991\n",
+ "Epoch 23/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4421 - acc: 0.7998\n",
+ "Epoch 24/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4412 - acc: 0.8001\n",
+ "Epoch 25/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4406 - acc: 0.8019\n",
+ "Epoch 26/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4434 - acc: 0.7990\n",
+ "Epoch 27/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4418 - acc: 0.8033\n",
+ "Epoch 28/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4405 - acc: 0.7996\n",
+ "Epoch 29/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4397 - acc: 0.8000\n",
+ "Epoch 30/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4401 - acc: 0.8002\n",
+ "Epoch 31/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4377 - acc: 0.8023\n",
+ "Epoch 32/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4372 - acc: 0.8006\n",
+ "Epoch 33/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4388 - acc: 0.8033\n",
+ "Epoch 34/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4399 - acc: 0.8001\n",
+ "Epoch 35/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4377 - acc: 0.8035\n",
+ "Epoch 36/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4355 - acc: 0.8028\n",
+ "Epoch 37/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4366 - acc: 0.8027\n",
+ "Epoch 38/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4356 - acc: 0.8053\n",
+ "Epoch 39/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4355 - acc: 0.8037\n",
+ "Epoch 40/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4338 - acc: 0.8063\n",
+ "Epoch 41/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4347 - acc: 0.8021\n",
+ "Epoch 42/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4339 - acc: 0.8007\n",
+ "Epoch 43/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4341 - acc: 0.8030\n",
+ "Epoch 44/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4331 - acc: 0.8043\n",
+ "Epoch 45/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4344 - acc: 0.8023\n",
+ "Epoch 46/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4331 - acc: 0.8079\n",
+ "Epoch 47/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4329 - acc: 0.8053\n",
+ "Epoch 48/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4346 - acc: 0.8060\n",
+ "Epoch 49/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4332 - acc: 0.8050\n",
+ "Epoch 50/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4343 - acc: 0.8033\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4498 - acc: 0.7935\n",
+ "Epoch 2/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4505 - acc: 0.7954\n",
+ "Epoch 3/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4460 - acc: 0.7965\n",
+ "Epoch 4/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4453 - acc: 0.7959\n",
+ "Epoch 5/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4460 - acc: 0.7960\n",
+ "Epoch 6/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4449 - acc: 0.7974\n",
+ "Epoch 7/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4467 - acc: 0.7981\n",
+ "Epoch 8/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4450 - acc: 0.8018\n",
+ "Epoch 9/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4443 - acc: 0.7997\n",
+ "Epoch 10/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4442 - acc: 0.7971\n",
+ "Epoch 11/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4420 - acc: 0.7980\n",
+ "Epoch 12/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4430 - acc: 0.7988\n",
+ "Epoch 13/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4448 - acc: 0.7977\n",
+ "Epoch 14/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4419 - acc: 0.7977\n",
+ "Epoch 15/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4425 - acc: 0.7990\n",
+ "Epoch 16/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4418 - acc: 0.7995\n",
+ "Epoch 17/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4432 - acc: 0.7967\n",
+ "Epoch 18/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4429 - acc: 0.7970\n",
+ "Epoch 19/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4434 - acc: 0.7992\n",
+ "Epoch 20/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4438 - acc: 0.7975\n",
+ "Epoch 21/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4419 - acc: 0.7996\n",
+ "Epoch 22/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4406 - acc: 0.8011\n",
+ "Epoch 23/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4426 - acc: 0.7970\n",
+ "Epoch 24/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4400 - acc: 0.8008\n",
+ "Epoch 25/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4397 - acc: 0.8021\n",
+ "Epoch 26/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4398 - acc: 0.8003\n",
+ "Epoch 27/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4397 - acc: 0.7992\n",
+ "Epoch 28/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4405 - acc: 0.8008\n",
+ "Epoch 29/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4391 - acc: 0.8007\n",
+ "Epoch 30/50\n",
+ "8083/8083 [==============================] - 0s 41us/step - loss: 0.4387 - acc: 0.7990\n",
+ "Epoch 31/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4395 - acc: 0.8013\n",
+ "Epoch 32/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4403 - acc: 0.7983\n",
+ "Epoch 33/50\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4384 - acc: 0.7992\n",
+ "Epoch 34/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4388 - acc: 0.7987\n",
+ "Epoch 35/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4363 - acc: 0.8035\n",
+ "Epoch 36/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4357 - acc: 0.8037\n",
+ "Epoch 37/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4355 - acc: 0.8022\n",
+ "Epoch 38/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4371 - acc: 0.8063\n",
+ "Epoch 39/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4363 - acc: 0.8022\n",
+ "Epoch 40/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4379 - acc: 0.8022\n",
+ "Epoch 41/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4365 - acc: 0.7988\n",
+ "Epoch 42/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4368 - acc: 0.8029\n",
+ "Epoch 43/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4365 - acc: 0.8017\n",
+ "Epoch 44/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4345 - acc: 0.8004\n",
+ "Epoch 45/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4349 - acc: 0.8035\n",
+ "Epoch 46/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4363 - acc: 0.8050\n",
+ "Epoch 47/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4359 - acc: 0.8042\n",
+ "Epoch 48/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4350 - acc: 0.8033\n",
+ "Epoch 49/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4335 - acc: 0.8025\n",
+ "Epoch 50/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4334 - acc: 0.8027\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4464 - acc: 0.7980\n",
+ "Epoch 2/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4458 - acc: 0.7971\n",
+ "Epoch 3/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4473 - acc: 0.7949\n",
+ "Epoch 4/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4474 - acc: 0.7977\n",
+ "Epoch 5/50\n",
+ "8083/8083 [==============================] - 0s 36us/step - loss: 0.4446 - acc: 0.7943\n",
+ "Epoch 6/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4460 - acc: 0.7949\n",
+ "Epoch 7/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4500 - acc: 0.7908\n",
+ "Epoch 8/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4456 - acc: 0.7978\n",
+ "Epoch 9/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4451 - acc: 0.7959\n",
+ "Epoch 10/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4433 - acc: 0.7986\n",
+ "Epoch 11/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4425 - acc: 0.8003\n",
+ "Epoch 12/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4436 - acc: 0.7969\n",
+ "Epoch 13/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4428 - acc: 0.8012\n",
+ "Epoch 14/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4423 - acc: 0.7995\n",
+ "Epoch 15/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4436 - acc: 0.7972\n",
+ "Epoch 16/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4425 - acc: 0.7967\n",
+ "Epoch 17/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4420 - acc: 0.8003\n",
+ "Epoch 18/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4406 - acc: 0.7985\n",
+ "Epoch 19/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4412 - acc: 0.7988\n",
+ "Epoch 20/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4392 - acc: 0.7998\n",
+ "Epoch 21/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4412 - acc: 0.7993\n",
+ "Epoch 22/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4425 - acc: 0.8002\n",
+ "Epoch 23/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4412 - acc: 0.7986\n",
+ "Epoch 24/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4410 - acc: 0.7976\n",
+ "Epoch 25/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4398 - acc: 0.8012\n",
+ "Epoch 26/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4382 - acc: 0.8038\n",
+ "Epoch 27/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4379 - acc: 0.8006\n",
+ "Epoch 28/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4392 - acc: 0.7997\n",
+ "Epoch 29/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4389 - acc: 0.7987\n",
+ "Epoch 30/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4387 - acc: 0.8011\n",
+ "Epoch 31/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4386 - acc: 0.8018\n",
+ "Epoch 32/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4366 - acc: 0.8033\n",
+ "Epoch 33/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4382 - acc: 0.7992\n",
+ "Epoch 34/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4380 - acc: 0.7993\n",
+ "Epoch 35/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4363 - acc: 0.8051\n",
+ "Epoch 36/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4357 - acc: 0.8032\n",
+ "Epoch 37/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4372 - acc: 0.8016\n",
+ "Epoch 38/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4346 - acc: 0.8049\n",
+ "Epoch 39/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4355 - acc: 0.8027\n",
+ "Epoch 40/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4359 - acc: 0.8019\n",
+ "Epoch 41/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4344 - acc: 0.8038\n",
+ "Epoch 42/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4341 - acc: 0.8022\n",
+ "Epoch 43/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4333 - acc: 0.8042\n",
+ "Epoch 44/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4342 - acc: 0.8039\n",
+ "Epoch 45/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4350 - acc: 0.8027\n",
+ "Epoch 46/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4342 - acc: 0.8025\n",
+ "Epoch 47/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4339 - acc: 0.8054\n",
+ "Epoch 48/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4344 - acc: 0.8014\n",
+ "Epoch 49/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4393 - acc: 0.8016\n",
+ "Epoch 50/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4360 - acc: 0.8014\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4478 - acc: 0.7948\n",
+ "Epoch 2/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4473 - acc: 0.7951\n",
+ "Epoch 3/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4497 - acc: 0.7949\n",
+ "Epoch 4/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4447 - acc: 0.7985\n",
+ "Epoch 5/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4464 - acc: 0.7955\n",
+ "Epoch 6/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4457 - acc: 0.7948\n",
+ "Epoch 7/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4465 - acc: 0.7966\n",
+ "Epoch 8/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4443 - acc: 0.7931\n",
+ "Epoch 9/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4444 - acc: 0.7970\n",
+ "Epoch 10/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4449 - acc: 0.7983\n",
+ "Epoch 11/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4456 - acc: 0.7980\n",
+ "Epoch 12/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4424 - acc: 0.7959\n",
+ "Epoch 13/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4419 - acc: 0.7982\n",
+ "Epoch 14/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4422 - acc: 0.7970\n",
+ "Epoch 15/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4420 - acc: 0.7985\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 16/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4430 - acc: 0.7972\n",
+ "Epoch 17/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4428 - acc: 0.7975\n",
+ "Epoch 18/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4433 - acc: 0.7950\n",
+ "Epoch 19/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4430 - acc: 0.7980\n",
+ "Epoch 20/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4410 - acc: 0.8003\n",
+ "Epoch 21/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4421 - acc: 0.7971\n",
+ "Epoch 22/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4426 - acc: 0.7993\n",
+ "Epoch 23/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4393 - acc: 0.8013\n",
+ "Epoch 24/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4385 - acc: 0.8001\n",
+ "Epoch 25/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4379 - acc: 0.8019\n",
+ "Epoch 26/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4391 - acc: 0.8007\n",
+ "Epoch 27/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4382 - acc: 0.7996\n",
+ "Epoch 28/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4374 - acc: 0.8011\n",
+ "Epoch 29/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4383 - acc: 0.7993\n",
+ "Epoch 30/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4401 - acc: 0.8007\n",
+ "Epoch 31/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4374 - acc: 0.7997\n",
+ "Epoch 32/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4373 - acc: 0.8021\n",
+ "Epoch 33/50\n",
+ "8083/8083 [==============================] - 0s 36us/step - loss: 0.4370 - acc: 0.7992\n",
+ "Epoch 34/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4380 - acc: 0.8023\n",
+ "Epoch 35/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4391 - acc: 0.8003\n",
+ "Epoch 36/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4412 - acc: 0.7995\n",
+ "Epoch 37/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4375 - acc: 0.8025\n",
+ "Epoch 38/50\n",
+ "8083/8083 [==============================] - 0s 46us/step - loss: 0.4346 - acc: 0.8027\n",
+ "Epoch 39/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4353 - acc: 0.8058\n",
+ "Epoch 40/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4388 - acc: 0.8011\n",
+ "Epoch 41/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4375 - acc: 0.8018\n",
+ "Epoch 42/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4345 - acc: 0.8048\n",
+ "Epoch 43/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4353 - acc: 0.8017\n",
+ "Epoch 44/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4349 - acc: 0.8044\n",
+ "Epoch 45/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4349 - acc: 0.8021\n",
+ "Epoch 46/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4356 - acc: 0.8039\n",
+ "Epoch 47/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4342 - acc: 0.8021\n",
+ "Epoch 48/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4355 - acc: 0.8025\n",
+ "Epoch 49/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4336 - acc: 0.8043\n",
+ "Epoch 50/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4352 - acc: 0.8001\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4480 - acc: 0.7948\n",
+ "Epoch 2/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4474 - acc: 0.7954\n",
+ "Epoch 3/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4458 - acc: 0.7965\n",
+ "Epoch 4/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4490 - acc: 0.7940\n",
+ "Epoch 5/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4451 - acc: 0.7959\n",
+ "Epoch 6/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4454 - acc: 0.7995\n",
+ "Epoch 7/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4463 - acc: 0.7980\n",
+ "Epoch 8/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4458 - acc: 0.7991\n",
+ "Epoch 9/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4443 - acc: 0.7992\n",
+ "Epoch 10/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4447 - acc: 0.8004\n",
+ "Epoch 11/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4426 - acc: 0.8012\n",
+ "Epoch 12/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4456 - acc: 0.7962\n",
+ "Epoch 13/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4430 - acc: 0.7985\n",
+ "Epoch 14/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4518 - acc: 0.7898\n",
+ "Epoch 15/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4414 - acc: 0.7990\n",
+ "Epoch 16/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4417 - acc: 0.7990\n",
+ "Epoch 17/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4424 - acc: 0.7993\n",
+ "Epoch 18/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4414 - acc: 0.7982\n",
+ "Epoch 19/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4408 - acc: 0.7977\n",
+ "Epoch 20/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4408 - acc: 0.7985\n",
+ "Epoch 21/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4416 - acc: 0.8008\n",
+ "Epoch 22/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4417 - acc: 0.8007\n",
+ "Epoch 23/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4407 - acc: 0.7991\n",
+ "Epoch 24/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4412 - acc: 0.8027\n",
+ "Epoch 25/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4409 - acc: 0.7976\n",
+ "Epoch 26/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4398 - acc: 0.7985\n",
+ "Epoch 27/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4401 - acc: 0.7996\n",
+ "Epoch 28/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4403 - acc: 0.7985\n",
+ "Epoch 29/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4384 - acc: 0.8003\n",
+ "Epoch 30/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4383 - acc: 0.8014\n",
+ "Epoch 31/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4372 - acc: 0.8025\n",
+ "Epoch 32/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4382 - acc: 0.8042\n",
+ "Epoch 33/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4364 - acc: 0.8034\n",
+ "Epoch 34/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4389 - acc: 0.8008\n",
+ "Epoch 35/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4377 - acc: 0.7995\n",
+ "Epoch 36/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4376 - acc: 0.8008\n",
+ "Epoch 37/50\n",
+ "8083/8083 [==============================] - 0s 40us/step - loss: 0.4387 - acc: 0.8025\n",
+ "Epoch 38/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4358 - acc: 0.8017\n",
+ "Epoch 39/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4356 - acc: 0.8028\n",
+ "Epoch 40/50\n",
+ "8083/8083 [==============================] - 0s 42us/step - loss: 0.4354 - acc: 0.8035\n",
+ "Epoch 41/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4354 - acc: 0.8014\n",
+ "Epoch 42/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4357 - acc: 0.8027\n",
+ "Epoch 43/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4356 - acc: 0.8059\n",
+ "Epoch 44/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4371 - acc: 0.7997\n",
+ "Epoch 45/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4353 - acc: 0.8047\n",
+ "Epoch 46/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4364 - acc: 0.8023\n",
+ "Epoch 47/50\n",
+ "8083/8083 [==============================] - 0s 39us/step - loss: 0.4337 - acc: 0.8018\n",
+ "Epoch 48/50\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4348 - acc: 0.8060\n",
+ "Epoch 49/50\n",
+ "8083/8083 [==============================] - 0s 37us/step - loss: 0.4365 - acc: 0.8054\n",
+ "Epoch 50/50\n",
+ "8083/8083 [==============================] - 0s 38us/step - loss: 0.4342 - acc: 0.8039\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Logistic regression (SGD)\n",
+ "cv = StratifiedKFold(n_splits=10)\n",
+ "results = np.zeros_like(y, dtype=float)\n",
+ "\n",
+ "tprs = []\n",
+ "aucs = []\n",
+ "mean_fpr = np.linspace(0, 1, 100)\n",
+ "\n",
+ "i = 0\n",
+ "keras.backend.clear_session()\n",
+ "prbs=[]\n",
+ "for mod in range(5):\n",
+ " print('>>')\n",
+ " curr_try = 0\n",
+ " while curr_try <10:\n",
+ " print('.')\n",
+ "\n",
+ " model = Sequential()\n",
+ " model.add(Dense(1, activation='sigmoid'))\n",
+ " # Compile model\n",
+ " opt = keras.optimizers.Adam(epsilon=None, amsgrad=True)\n",
+ " model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])\n",
+ "\n",
+ " # Fit the model\n",
+ " history = model.fit(X, y, epochs=50, batch_size=64, verbose=0)\n",
+ " if history.history['acc'][-1] > 0.53:\n",
+ " break\n",
+ " else:\n",
+ " curr_try += 1\n",
+ "\n",
+ " # Fit the model\n",
+ " model.fit(X, y, epochs=50, batch_size=64, verbose=1)\n",
+ "\n",
+ " # evaluate the model\n",
+ " probas_ = model.predict(x_pad)\n",
+ " prbs.append(probas_)\n",
+ "# Average the predictions\n",
+ "probas_ = np.mean(np.hstack(prbs), axis=1)\n",
+ "results = probas_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_results = pd.DataFrame(data={\"name\": names, 'pred': results})\n",
+ "df_results.to_csv('/home/drewe/notebooks/genotox/pred.lr.v5-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAD8CAYAAACINTRsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAADn5JREFUeJzt3X+sZGV9x/H3R0BtKy3QvZgNsK4aNGxMCuaG0JC0KGopfwgm2EAi3Sa0q7YYjf5D9A9J2z9MUyBpQrBrIGwbBSn+YGOwLaUQihHaBbawsLUgpRbZsEsoiGmqAt/+MQd7s9l759z5de889/1Kbu6ZM+ec+T4zw4dnn3nmuakqJElteN1aFyBJmhxDXZIaYqhLUkMMdUlqiKEuSQ0x1CWpIYa6JDXEUJekhhjqktSQo4cdkOSNwD3AG7rjb62qzyd5K3AzcALwIHBpVf10pWtt2rSptm7dOnbRkrSRPPDAA89V1UKfY4eGOvAT4L1V9eMkxwD3Jvk28Gngmqq6OckXgcuA61a60NatW9mzZ0+fuiRJnST/2ffYocMvNfDj7uYx3U8B7wVu7fbvAi5cZZ2SpAnrNaae5Kgke4GDwB3A94EXqurl7pCngZOmU6Ikqa9eoV5Vr1TV6cDJwJnAaUc67EjnJtmRZE+SPYcOHRq9UknSUKua/VJVLwB3A2cBxyV5bUz+ZOCZZc7ZWVWLVbW4sNBrnF+SNKKhoZ5kIclx3fYvAO8D9gN3ARd1h20HbptWkZKkfvrMftkM7EpyFIP/CdxSVd9K8hhwc5I/BR4Crp9inZKkHoaGelU9DJxxhP1PMhhflyStE36jVJIaYqhLUkP6jKm35corj7wtSQ2wpy5JDTHUJakhhrokNcRQl6SGGOqS1BBDXZIaYqhLUkMMdUlqiKEuSQ0x1CWpIYa6JDXEUJekhhjqktQQQ12SGmKoS1JDDHVJaoihLkkNMdQlqSGGuiQ1xFCXpIZsjD883fcPTPtHqSXNOXvqktQQQ12SGmKoS1JDhoZ6klOS3JVkf5JHk3yy239lkh8m2dv9nD/9ciVJK+nzQenLwGeq6sEkxwIPJLmju++aqvrz6ZUnSVqNoaFeVQeAA932S0n2AydNuzBJ0uqtakw9yVbgDOD+btflSR5OckOS45c5Z0eSPUn2HDp0aKxiJUkr6x3qSd4EfA34VFX9CLgOeDtwOoOe/FVHOq+qdlbVYlUtLiwsTKBkSdJyeoV6kmMYBPqXq+rrAFX1bFW9UlWvAl8CzpxemZKkPvrMfglwPbC/qq5esn/zksM+BOybfHmSpNXoM/vlbOBS4JEke7t9nwUuSXI6UMBTwEenUqEkqbc+s1/uBXKEu26ffDmSpHH4jVJJaki7qzS6yqKkDcieuiQ1xFCXpIYY6pLUEENdkhpiqEtSQwx1SWqIoS5JDWl3nnofzmWX1Bh76pLUEENdkhpiqEtSQwx1SWqIoS5JDTHUJakhG3tK4yQtnR45zlTJSV1H0oZkT12SGmKoS1JDDHVJaoihLkkNMdQlqSGGuiQ1xFCXpIYY6pLUEENdkhoyNNSTnJLkriT7kzya5JPd/hOS3JHk8e738dMvV5K0kj499ZeBz1TVacBZwB8l2QZcAdxZVacCd3a3JUlraGioV9WBqnqw234J2A+cBFwA7OoO2wVcOK0iJUn9rGpMPclW4AzgfuDNVXUABsEPnDjp4iRJq9N7lcYkbwK+Bnyqqn6UpO95O4AdAFu2bBmlxrXhaomS5lCvnnqSYxgE+per6uvd7meTbO7u3wwcPNK5VbWzqharanFhYWESNUuSltFn9kuA64H9VXX1krt2A9u77e3AbZMvT5K0Gn2GX84GLgUeSbK32/dZ4AvALUkuA34AfHg6JUqS+hoa6lV1L7DcAPq5ky1HkjQOv1EqSQ0x1CWpIf7h6dVyqqOkdcyeuiQ1xFCXpIYY6pLUEENdkhpiqEtSQwx1SWqIoS5JDTHUJakhhrokNcRQl6SGGOqS1BBDXZIaYqhLUkNcpbEPV2OUNCfsqUtSQwx1SWqIoS5JDTHUJakhhrokNcRQl6SGGOqS1BDnqY/D+euS1hl76pLUEENdkhoyNNST3JDkYJJ9S/ZdmeSHSfZ2P+dPt0xJUh99euo3AucdYf81VXV693P7ZMuSJI1iaKhX1T3A8zOoRZI0pnHG1C9P8nA3PHP8xCqSJI1s1FC/Dng7cDpwALhquQOT7EiyJ8meQ4cOjfhwkqQ+Rgr1qnq2ql6pqleBLwFnrnDszqparKrFhYWFUeuUJPUwUqgn2bzk5oeAfcsdK0manaHfKE1yE3AOsCnJ08DngXOSnA4U8BTw0SnWKEnqaWioV9UlR9h9/RRqkSSNyW+USlJDDHVJasj8r9LoSonr29LXx9dKmjp76pLUEENdkhpiqEtSQwx1SWqIoS5JDTHUJakh8z+lcT1yGp+kNWJPXZIaYqhLUkMMdUlqiKEuSQ0x1CWpIYa6JDXEUJekhhjqktQQQ12SGmKoS1JDDHVJaoihLkkNMdQlqSGu0rhW5mklx3mqVdrg7KlLUkMMdUlqiKEuSQ0ZGupJbkhyMMm+JftOSHJHkse738dPt0xJUh99euo3Aucdtu8K4M6qOhW4s7stSVpjQ0O9qu4Bnj9s9wXArm57F3DhhOuSJI1g1CmNb66qAwBVdSDJicsdmGQHsANgy5YtIz7cHHM64P/zuZCmbuoflFbVzqparKrFhYWFaT+cJG1oo4b6s0k2A3S/D06uJEnSqEYN9d3A9m57O3DbZMqRJI2jz5TGm4DvAu9M8nSSy4AvAO9P8jjw/u62JGmNDf2gtKouWeaucydciyRpTH6jVJIaYqhLUkMMdUlqiKEuSQ0x1CWpIYa6JDXEUJekhhjqktQQQ12SGjLq0ruahbVaqnalx+pT06RqdaleadXsqUtSQwx1SWqIoS5JDTHUJakhhrokNcRQl6SGOKVxltbDtMT1PjVwGtMhp/1Y0jpiT12SGmKoS1JDDHVJaoihLkkNMdQlqSGGuiQ1xCmN82K5FQtdyXD9Gec1meW5vneaZE9dkhpiqEtSQ8YafknyFPAS8ArwclUtTqIoSdJoJjGm/p6qem4C15EkjcnhF0lqyLihXsDfJ3kgyY5JFCRJGt24wy9nV9UzSU4E7kjyb1V1z9IDurDfAbBly5YxH65R40xdm9R1xp3Stp6n7o1jWs/RONdyKqJWMFZPvaqe6X4fBL4BnHmEY3ZW1WJVLS4sLIzzcJKkIUYO9SS/lOTY17aBDwD7JlWYJGn1xhl+eTPwjSSvXecrVfW3E6lKkjSSkUO9qp4Efm2CtUiSxuSURklqiKEuSQ2Zn1UancY1Ga09d/P6vpjXurXu2VOXpIYY6pLUEENdkhpiqEtSQwx1SWqIoS5JDZmfKY2arlGm1U1qKl4LU/omtXLmcudO4/rrxbSnd87LiqATYk9dkhpiqEtSQwx1SWqIoS5JDTHUJakhhrokNcRQl6SGzOc89TmZLyr1Msu52X0eq8+5K11zUnPqpzFHfJy5/3MyZ92euiQ1xFCXpIYY6pLUEENdkhpiqEtSQwx1SWrIfE5p1Maz2ql4k7rmNM+f1WON89xtlCV/Z3H9GT1n9tQlqSGGuiQ1ZKxQT3Jeku8leSLJFZMqSpI0mpFDPclRwLXAbwPbgEuSbJtUYZKk1Runp34m8ERVPVlVPwVuBi6YTFmSpFGME+onAf+15PbT3T5J0hpJVY12YvJh4Leq6ve725cCZ1bVJw47bgewo7v5TuB7I9a6CXhuxHPn3UZuO2zs9tv2jenwtr+lqhb6nDjOPPWngVOW3D4ZeObwg6pqJ7BzjMcBIMmeqloc9zrzaCO3HTZ2+227bV+tcYZf/gU4Nclbk7weuBjYPcb1JEljGrmnXlUvJ7kc+DvgKOCGqnp0YpVJklZtrGUCqup24PYJ1TLM2EM4c2wjtx02dvtt+8Y0cttH/qBUkrT+uEyAJDVk3YX6sKUHkrwhyVe7++9PsnX2VU5Hj7Z/OsljSR5OcmeSt6xFndPQd8mJJBclqSRNzYro0/4kv9O9/o8m+cqsa5yWHu/7LUnuSvJQ994/fy3qnIYkNyQ5mGTfMvcnyV90z83DSd499KJVtW5+GHzg+n3gbcDrgX8Fth12zB8CX+y2Lwa+utZ1z7Dt7wF+sdv++EZqe3fcscA9wH3A4lrXPePX/lTgIeD47vaJa133DNu+E/h4t70NeGqt655g+38DeDewb5n7zwe+DQQ4C7h/2DXXW0+9z9IDFwC7uu1bgXOTZIY1TsvQtlfVXVX1P93N+xh8N6AFfZec+BPgz4D/nWVxM9Cn/X8AXFtV/w1QVQdnXOO09Gl7Ab/cbf8KR/g+zLyqqnuA51c45ALgr2rgPuC4JJtXuuZ6C/U+Sw/8/Jiqehl4EfjVmVQ3XatdduEyBv8Hb8HQtic5Azilqr41y8JmpM9r/w7gHUm+k+S+JOfNrLrp6tP2K4GPJHmawWy7T7BxrHo5lvX2l4+O1OM+fHpOn2PmUe92JfkIsAj85lQrmp0V257kdcA1wO/NqqAZ6/PaH81gCOYcBv9C+6ck76qqF6Zc27T1afslwI1VdVWSXwf+umv7q9Mvb82tOu/WW0+9z9IDPz8mydEM/jm20j9f5kWvZReSvA/4HPDBqvrJjGqbtmFtPxZ4F3B3kqcYjC3ubujD0r7v+9uq6mdV9R8M1lA6dUb1TVOftl8G3AJQVd8F3shgbZSNoFcuLLXeQr3P0gO7ge3d9kXAP1b3icKcG9r2bgjiLxkEeitjqjCk7VX1YlVtqqqtVbWVwecJH6yqPWtT7sT1ed9/k8EH5STZxGA45smZVjkdfdr+A+BcgCSnMQj1QzOtcu3sBn63mwVzFvBiVR1Y8Yy1/vR3mU97/53BJ+Kf6/b9MYP/iGHwgv4N8ATwz8Db1rrmGbb9H4Bngb3dz+61rnlWbT/s2LtpaPZLz9c+wNXAY8AjwMVrXfMM274N+A6DmTF7gQ+sdc0TbPtNwAHgZwx65ZcBHwM+tuR1v7Z7bh7p8773G6WS1JD1NvwiSRqDoS5JDTHUJakhhrokNcRQl6SGGOqS1BBDXZIaYqhLUkP+DwxiG0xiW4xIAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.hist(results,100, color='red', alpha=0.5)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/fast_data/drewe/software/envs/tf_gpu/lib/python3.6/site-packages/sklearn/linear_model/_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
+ "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
+ "\n",
+ "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
+ " https://scikit-learn.org/stable/modules/preprocessing.html\n",
+ "Please also refer to the documentation for alternative solver options:\n",
+ " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
+ " extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Logistic regression (scikit)\n",
+ "cv = StratifiedKFold(n_splits=10)\n",
+ "results = np.zeros_like(y, dtype=float)\n",
+ "\n",
+ "tprs = []\n",
+ "aucs = []\n",
+ "mean_fpr = np.linspace(0, 1, 100)\n",
+ "\n",
+ "i = 0\n",
+ "keras.backend.clear_session()\n",
+ "prbs=[]\n",
+ "model = LogisticRegression(random_state=0)\n",
+ "model.fit(X, y)\n",
+ "probas_ = model.predict_proba(x_pad)[:, 1]\n",
+ "results = probas_\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_results = pd.DataFrame(data={\"name\": names, 'pred': results})\n",
+ "df_results.to_csv('/home/drewe/notebooks/genotox/pred.lr2.v5-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.hist(results,100, color='red', alpha=0.5)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "cv = StratifiedKFold(n_splits=10)\n",
+ "results = np.zeros_like(y, dtype=float)\n",
+ "\n",
+ "tprs = []\n",
+ "aucs = []\n",
+ "mean_fpr = np.linspace(0, 1, 100)\n",
+ "\n",
+ "i = 0\n",
+ "keras.backend.clear_session()\n",
+ "prbs=[]\n",
+ "model = RandomForestClassifier(n_estimators=1000, random_state=0, max_leaf_nodes=200)\n",
+ "# Fit the model\n",
+ "model.fit(X, y)\n",
+ "\n",
+ "\n",
+ "probas_ = model.predict_proba(x_pad)[:, 1]\n",
+ "results = probas_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_results = pd.DataFrame(data={\"name\": names, 'pred': results})\n",
+ "df_results.to_csv('/home/drewe/notebooks/genotox/pred.rf.v5-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAADT9JREFUeJzt3X2MZfVdx/H3p09/2GKk2YFskO0ooVU0dYkjaUJiaGoVMQGaUlMSkSbUraZoG/lD0pq40T9s1EJMJI2LkGLSB41tBQ1WKaEhGGlccAts10qLq1I27NI2QjQ+AF//mEMzbma45z6c+/Cb9yuZzD3nnpn7/d1z9sOPc7/nTKoKSdLqe8WiC5AkzYaBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWrEq+b5Ynv27Kn19fV5vqQkrbyHHnromapaG7XdXAN9fX2dw4cPz/MlJWnlJfmXPtt5ykWSGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhox1ytFNbCDB7d/LGlXcIYuSY0w0CWpEQa6JDViZKAnOTfJfUmOJTma5APd+oNJvpHkSPd12fDlSpJ20udD0eeBG6rq4SRnAA8luad77uaq+r3hypMk9TUy0KvqBHCie/xckmPAOUMXJkkaz1jn0JOsAxcCX+pWXZ/kkSS3JzlzxrVJksbQO9CTvA74DPDBqnoW+BhwHrCfzRn8R3f4uQNJDic5fOrUqRmULEnaTq9AT/JqNsP8E1X1WYCqerqqXqiqF4FbgYu2+9mqOlRVG1W1sbY28k/iSZIm1KfLJcBtwLGqumnL+r1bNnsH8Njsy5Mk9dWny+Vi4Brg0SRHunUfAq5Osh8o4DjwvkEqlCT10qfL5QEg2zx19+zLkSRNyitFJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEb0+SPRWkUHD27/WFKznKFLUiMMdElqhIEuSY0w0CWpEQa6JDXCQJekRhjoktQI+9A1HvvbpaXlDF2SGmGgS1IjDHRJasTIQE9ybpL7khxLcjTJB7r1r09yT5LHu+9nDl+uJGknfWbozwM3VNUPAm8B3p/kAuBG4N6qOh+4t1uWJC3IyECvqhNV9XD3+DngGHAOcAVwR7fZHcCVQxUpSRptrHPoSdaBC4EvAWdX1QnYDH3grFkXJ0nqr3egJ3kd8Bngg1X17Bg/dyDJ4SSHT506NUmNkqQeegV6klezGeafqKrPdqufTrK3e34vcHK7n62qQ1W1UVUba2trs6hZkrSNPl0uAW4DjlXVTVueugu4tnt8LXDn7MuTJPXV59L/i4FrgEeTHOnWfQj4CPCnSa4D/hV41zAlSpL6GBnoVfUAkB2efttsy5EkTcorRSWpEQa6JDXC2+euOm9hK6njDF2SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEbYh67Z29obb5+8NDfO0CWpEQa6JDXCQJekRhjoktQIA12SGmGgS1IjDHRJaoR96Mts6H7unX7nJK9lv7m0cM7QJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhH3oGm2W/eqSBuMMXZIaYaBLUiMMdElqhIEuSY0YGehJbk9yMsljW9YdTPKNJEe6r8uGLVOSNEqfGfrHgUu3WX9zVe3vvu6ebVmSpHGNDPSquh/41hxqkSRNYZo+9OuT/DxwGLihqr693UZJDgAHAPbt2zfFy+k7xu3/Hvq+6pKWwqQfin4MOA/YD5wAPrrThlV1qKo2qmpjbW1twpeTJI0yUaBX1dNV9UJVvQjcClw027IkSeOaKNCT7N2y+A7gsZ22lSTNx8hz6Ek+BVwC7EnyJPAbwCVJ9gMFHAfeN2CNkqQeRgZ6VV29zerbBqhFkjQFrxSVpEYY6JLUCO+HvgzsE5c0A87QJakRBrokNcJAl6RGGOiS1AgDXZIaYaBLUiMMdElqhH3oi2K/+WrwGgGtEGfoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqREGuiQ1wj70VTHPHuhZvpZ93NLcOEOXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakR9qHvZKee6T7rl7nfeplr0/+3KseUloYzdElqhIEuSY0w0CWpESMDPcntSU4meWzLutcnuSfJ4933M4ctU5I0Sp8Z+seBS09bdyNwb1WdD9zbLUuSFmhkoFfV/cC3Tlt9BXBH9/gO4MoZ1yVJGtOk59DPrqoTAN33s2ZXkiRpEoP3oSc5ABwA2Ldv39Avp1U0br/1uNcISLvEpDP0p5PsBei+n9xpw6o6VFUbVbWxtrY24ctJkkaZNNDvAq7tHl8L3DmbciRJk+rTtvgp4O+ANyV5Msl1wEeAtyd5HHh7tyxJWqCR59Cr6uodnnrbjGuRJE3BK0UlqREGuiQ1wkCXpEZ4P/SheU/r5TXtvnHfask4Q5ekRhjoktQIA12SGmGgS1IjDHRJaoSBLkmNMNAlqRH2oQ/B+3VLWgBn6JLUCANdkhphoEtSIwx0SWqEgS5JjTDQJakRBrokNcI+9GnYVz65Pu/dst1vfBlqkF6GM3RJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUCANdkhphH/q47EWe3DTvne+7NJIzdElqhIEuSY0w0CWpEVOdQ09yHHgOeAF4vqo2ZlGUJGl8s/hQ9K1V9cwMfo8kaQqecpGkRkwb6AX8TZKHkhyYRUGSpMlMe8rl4qp6KslZwD1J/rGq7t+6QRf0BwD27ds35csNbBl6nZehhkUaule9hfe3z33ih76X/LLdq17AlDP0qnqq+34S+Bxw0TbbHKqqjaraWFtbm+blJEkvY+JAT/LaJGe89Bj4SeCxWRUmSRrPNKdczgY+l+Sl3/PJqvr8TKqSJI1t4kCvqieAH5lhLZKkKdi2KEmNMNAlqREGuiQ1YnXuh74MvbdSH+Men6ty3C5zbQKcoUtSMwx0SWqEgS5JjTDQJakRBrokNcJAl6RGGOiS1IjV6UOfFXtptZ159IL36U9fRafXvww99qvS2z9jztAlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWrEavah79IeU83JJMfUMhyH/p2A0Rp/L5yhS1IjDHRJaoSBLkmNMNAlqREGuiQ1wkCXpEYY6JLUiNXsQ++j8X5TTWhVj4VVupf6MtY0Ly839jm8L87QJakRBrokNcJAl6RGTBXoSS5N8tUkX0ty46yKkiSNb+JAT/JK4Bbgp4ELgKuTXDCrwiRJ45lmhn4R8LWqeqKq/gf4NHDFbMqSJI1rmkA/B/i3LctPduskSQuQqprsB5N3AT9VVe/tlq8BLqqqXz5tuwPAgW7xTcBXR/zqPcAzExW1mnbbeGH3jXm3jRd235iHHu8bqmpt1EbTXFj0JHDuluXvBZ46faOqOgQc6vtLkxyuqo0p6lopu228sPvGvNvGC7tvzMsy3mlOufw9cH6S70vyGuDdwF2zKUuSNK6JZ+hV9XyS64G/Bl4J3F5VR2dWmSRpLFPdy6Wq7gbunlEtL+l9eqYRu228sPvGvNvGC7tvzEsx3ok/FJUkLRcv/ZekRiws0EfdNiDJjyd5OMnzSa5aRI2z1GO8v5rkK0keSXJvkjcsos5Z6jHmX0zyaJIjSR5Y9SuN+94KI8lVSSrJwrsiptFj/74nyalu/x5J8t5F1DlLffZxkp/t/i0fTfLJuRZYVXP/YvND1K8D3w+8BvgycMFp26wDbwb+GLhqEXXOebxvBb6re/xLwJ8suu45jPm7tzy+HPj8ousecrzddmcA9wMPAhuLrnvg/fse4A8WXeucx3w+8A/Amd3yWfOscVEz9JG3Daiq41X1CPDiIgqcsT7jva+q/rNbfJDNvv5V1mfMz25ZfC2wyh/o9L0Vxm8BvwP81zyLG8BuvPVHnzH/AnBLVX0boKpOzrPARQX6brttwLjjvQ74q0ErGl6vMSd5f5KvsxlyvzKn2oYwcrxJLgTOraq/nGdhA+l7TL+zO434Z0nO3eb5VdJnzG8E3pjkb5M8mOTSuVXH4gI926xb5dnZKL3Hm+TngA3gdwetaHi9xlxVt1TVecCvAb8+eFXDednxJnkFcDNww9wqGlaf/fsXwHpVvRn4AnDH4FUNq8+YX8XmaZdLgKuBP0ryPQPX9R2LCvRetw1oSK/xJvkJ4MPA5VX133OqbSjj7uNPA1cOWtGwRo33DOCHgS8mOQ68BbhrhT8YHbl/q+qbW47jW4EfnVNtQ+lzTD8J3FlV/1tV/8zmvavOn1N9Cwv03XbbgJHj7f53/A/ZDPO5nncbSJ8xbz3QfwZ4fI71zdrLjreq/r2q9lTVelWts/k5yeVVdXgx5U6tz/7du2XxcuDYHOsbQp/c+nM2GxxIsofNUzBPzK3CBX5ifBnwT2x+avzhbt1vsnmQA/wYm/+1+w/gm8DRRdU6p/F+AXgaONJ93bXomucw5t8HjnbjvQ/4oUXXPOR4T9v2i6xwl0vP/fvb3f79crd/f2DRNc9hzAFuAr4CPAq8e571eaWoJDXCK0UlqREGuiQ1wkCXpEYY6JLUCANdkhphoEtSIwx0SWqEgS5Jjfg/TOSmkSUpzPgAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.hist(results,100, color='red', alpha=0.5)\n",
+ "plt.show()"
+ ]
+ }
+ ],
+ "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.6.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}