summaryrefslogtreecommitdiff
path: root/pyrrolizidine-alkaloids/mp2d/tensorflow/prediction-v5-ext-ext-Padel-2D.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'pyrrolizidine-alkaloids/mp2d/tensorflow/prediction-v5-ext-ext-Padel-2D.ipynb')
-rw-r--r--pyrrolizidine-alkaloids/mp2d/tensorflow/prediction-v5-ext-ext-Padel-2D.ipynb1066
1 files changed, 1066 insertions, 0 deletions
diff --git a/pyrrolizidine-alkaloids/mp2d/tensorflow/prediction-v5-ext-ext-Padel-2D.ipynb b/pyrrolizidine-alkaloids/mp2d/tensorflow/prediction-v5-ext-ext-Padel-2D.ipynb
new file mode 100644
index 0000000..b04a6cd
--- /dev/null
+++ b/pyrrolizidine-alkaloids/mp2d/tensorflow/prediction-v5-ext-ext-Padel-2D.ipynb
@@ -0,0 +1,1066 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "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",
+ "from sklearn.svm import SVC\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": 25,
+ "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",
+ "\n",
+ "y = X['Mutagenicity_bin'].values\n",
+ "del X['Mutagenicity_bin']\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(8309, 9638)\n",
+ "(8309,)\n",
+ "(602, 9638)\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-fingerprints.csv', sep=',', decimal='.')\n",
+ "selected_cols = list(set(x_pad.columns.tolist()).intersection(set(X.columns.tolist())))\n",
+ "selected_cols.remove('Canonical SMILES')\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-fingerprints.csv', sep=',', decimal='.')['Canonical SMILES'].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": null,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "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": 28,
+ "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-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "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": 30,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2378 - acc: 0.9183\n",
+ "Epoch 2/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2365 - acc: 0.9184\n",
+ "Epoch 3/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2351 - acc: 0.9189\n",
+ "Epoch 4/50\n",
+ "8309/8309 [==============================] - 1s 166us/step - loss: 0.2337 - acc: 0.9200\n",
+ "Epoch 5/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2325 - acc: 0.9210\n",
+ "Epoch 6/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2312 - acc: 0.9215\n",
+ "Epoch 7/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2300 - acc: 0.9224\n",
+ "Epoch 8/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2288 - acc: 0.9235\n",
+ "Epoch 9/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2277 - acc: 0.9244\n",
+ "Epoch 10/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2265 - acc: 0.9242\n",
+ "Epoch 11/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2254 - acc: 0.9249\n",
+ "Epoch 12/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2243 - acc: 0.9253\n",
+ "Epoch 13/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2232 - acc: 0.9251\n",
+ "Epoch 14/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2222 - acc: 0.9256\n",
+ "Epoch 15/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2212 - acc: 0.9256\n",
+ "Epoch 16/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2202 - acc: 0.9265\n",
+ "Epoch 17/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2192 - acc: 0.9259\n",
+ "Epoch 18/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2182 - acc: 0.9266\n",
+ "Epoch 19/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2173 - acc: 0.9266\n",
+ "Epoch 20/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2164 - acc: 0.9267\n",
+ "Epoch 21/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2154 - acc: 0.9267\n",
+ "Epoch 22/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2146 - acc: 0.9269\n",
+ "Epoch 23/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2137 - acc: 0.9268\n",
+ "Epoch 24/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2128 - acc: 0.9271\n",
+ "Epoch 25/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2120 - acc: 0.9275\n",
+ "Epoch 26/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2112 - acc: 0.9274\n",
+ "Epoch 27/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2104 - acc: 0.9279\n",
+ "Epoch 28/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2096 - acc: 0.9282\n",
+ "Epoch 29/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2088 - acc: 0.9282\n",
+ "Epoch 30/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2080 - acc: 0.9275\n",
+ "Epoch 31/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2073 - acc: 0.9288\n",
+ "Epoch 32/50\n",
+ "8309/8309 [==============================] - 1s 158us/step - loss: 0.2065 - acc: 0.9291\n",
+ "Epoch 33/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2058 - acc: 0.9292\n",
+ "Epoch 34/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2050 - acc: 0.9296\n",
+ "Epoch 35/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2043 - acc: 0.9296\n",
+ "Epoch 36/50\n",
+ "8309/8309 [==============================] - 1s 158us/step - loss: 0.2037 - acc: 0.9309\n",
+ "Epoch 37/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2030 - acc: 0.9303\n",
+ "Epoch 38/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2023 - acc: 0.9309\n",
+ "Epoch 39/50\n",
+ "8309/8309 [==============================] - 1s 158us/step - loss: 0.2016 - acc: 0.9306\n",
+ "Epoch 40/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2010 - acc: 0.9310\n",
+ "Epoch 41/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2003 - acc: 0.9315\n",
+ "Epoch 42/50\n",
+ "8309/8309 [==============================] - 1s 158us/step - loss: 0.1997 - acc: 0.9319\n",
+ "Epoch 43/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1991 - acc: 0.9322\n",
+ "Epoch 44/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.1984 - acc: 0.9312\n",
+ "Epoch 45/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.1978 - acc: 0.9320\n",
+ "Epoch 46/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.1972 - acc: 0.9327\n",
+ "Epoch 47/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1967 - acc: 0.9321\n",
+ "Epoch 48/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.1961 - acc: 0.9328\n",
+ "Epoch 49/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.1955 - acc: 0.9332\n",
+ "Epoch 50/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.1950 - acc: 0.9333\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2377 - acc: 0.9189\n",
+ "Epoch 2/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2363 - acc: 0.9190\n",
+ "Epoch 3/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2350 - acc: 0.9197\n",
+ "Epoch 4/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2337 - acc: 0.9197\n",
+ "Epoch 5/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2324 - acc: 0.9214\n",
+ "Epoch 6/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2312 - acc: 0.9219\n",
+ "Epoch 7/50\n",
+ "8309/8309 [==============================] - 1s 165us/step - loss: 0.2299 - acc: 0.9230\n",
+ "Epoch 8/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2287 - acc: 0.9230\n",
+ "Epoch 9/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2276 - acc: 0.9233\n",
+ "Epoch 10/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2264 - acc: 0.9237\n",
+ "Epoch 11/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2253 - acc: 0.9241\n",
+ "Epoch 12/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2242 - acc: 0.9242\n",
+ "Epoch 13/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2231 - acc: 0.9256\n",
+ "Epoch 14/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2221 - acc: 0.9256\n",
+ "Epoch 15/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2211 - acc: 0.9256\n",
+ "Epoch 16/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2201 - acc: 0.9262\n",
+ "Epoch 17/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2191 - acc: 0.9257\n",
+ "Epoch 18/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2182 - acc: 0.9266\n",
+ "Epoch 19/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2172 - acc: 0.9265\n",
+ "Epoch 20/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2162 - acc: 0.9262\n",
+ "Epoch 21/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2154 - acc: 0.9263\n",
+ "Epoch 22/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2144 - acc: 0.9266\n",
+ "Epoch 23/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2136 - acc: 0.9268\n",
+ "Epoch 24/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2127 - acc: 0.9271\n",
+ "Epoch 25/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2119 - acc: 0.9279\n",
+ "Epoch 26/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2110 - acc: 0.9275\n",
+ "Epoch 27/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2102 - acc: 0.9277\n",
+ "Epoch 28/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2095 - acc: 0.9282\n",
+ "Epoch 29/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2087 - acc: 0.9279\n",
+ "Epoch 30/50\n",
+ "8309/8309 [==============================] - 1s 164us/step - loss: 0.2079 - acc: 0.9285\n",
+ "Epoch 31/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2072 - acc: 0.9289\n",
+ "Epoch 32/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.2064 - acc: 0.9297\n",
+ "Epoch 33/50\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2057 - acc: 0.9300\n",
+ "Epoch 34/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2049 - acc: 0.9300\n",
+ "Epoch 35/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2043 - acc: 0.9302\n",
+ "Epoch 36/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2036 - acc: 0.9313\n",
+ "Epoch 37/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2029 - acc: 0.9307\n",
+ "Epoch 38/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2022 - acc: 0.9310\n",
+ "Epoch 39/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2015 - acc: 0.9308\n",
+ "Epoch 40/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2009 - acc: 0.9318\n",
+ "Epoch 41/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2002 - acc: 0.9313\n",
+ "Epoch 42/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1996 - acc: 0.9312\n",
+ "Epoch 43/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1990 - acc: 0.9326\n",
+ "Epoch 44/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.1984 - acc: 0.9326\n",
+ "Epoch 45/50\n",
+ "8309/8309 [==============================] - 1s 163us/step - loss: 0.1978 - acc: 0.9318\n",
+ "Epoch 46/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1972 - acc: 0.9324\n",
+ "Epoch 47/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.1966 - acc: 0.9326\n",
+ "Epoch 48/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.1960 - acc: 0.9327\n",
+ "Epoch 49/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.1954 - acc: 0.9333\n",
+ "Epoch 50/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.1949 - acc: 0.9332\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2377 - acc: 0.9179\n",
+ "Epoch 2/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2363 - acc: 0.9186\n",
+ "Epoch 3/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2350 - acc: 0.9200\n",
+ "Epoch 4/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2337 - acc: 0.9203\n",
+ "Epoch 5/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2323 - acc: 0.9198\n",
+ "Epoch 6/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2311 - acc: 0.9229\n",
+ "Epoch 7/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2299 - acc: 0.9225\n",
+ "Epoch 8/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2287 - acc: 0.9232\n",
+ "Epoch 9/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2276 - acc: 0.9239\n",
+ "Epoch 10/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2264 - acc: 0.9235\n",
+ "Epoch 11/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2253 - acc: 0.9249\n",
+ "Epoch 12/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2242 - acc: 0.9249\n",
+ "Epoch 13/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2231 - acc: 0.9254\n",
+ "Epoch 14/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2221 - acc: 0.9261\n",
+ "Epoch 15/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2211 - acc: 0.9266\n",
+ "Epoch 16/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2200 - acc: 0.9261\n",
+ "Epoch 17/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2191 - acc: 0.9263\n",
+ "Epoch 18/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2181 - acc: 0.9260\n",
+ "Epoch 19/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2172 - acc: 0.9265\n",
+ "Epoch 20/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2162 - acc: 0.9271\n",
+ "Epoch 21/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2154 - acc: 0.9272\n",
+ "Epoch 22/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2145 - acc: 0.9263\n",
+ "Epoch 23/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2136 - acc: 0.9277\n",
+ "Epoch 24/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2128 - acc: 0.9273\n",
+ "Epoch 25/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2119 - acc: 0.9275\n",
+ "Epoch 26/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2111 - acc: 0.9277\n",
+ "Epoch 27/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2102 - acc: 0.9283\n",
+ "Epoch 28/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2095 - acc: 0.9283\n",
+ "Epoch 29/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2087 - acc: 0.9284\n",
+ "Epoch 30/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2080 - acc: 0.9284\n",
+ "Epoch 31/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2072 - acc: 0.9286\n",
+ "Epoch 32/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2064 - acc: 0.9295\n",
+ "Epoch 33/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2057 - acc: 0.9291\n",
+ "Epoch 34/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2050 - acc: 0.9297\n",
+ "Epoch 35/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2043 - acc: 0.9298\n",
+ "Epoch 36/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2036 - acc: 0.9300\n",
+ "Epoch 37/50\n",
+ "8309/8309 [==============================] - 1s 168us/step - loss: 0.2029 - acc: 0.9314\n",
+ "Epoch 38/50\n",
+ "8309/8309 [==============================] - 1s 168us/step - loss: 0.2022 - acc: 0.9310\n",
+ "Epoch 39/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2016 - acc: 0.9304\n",
+ "Epoch 40/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2009 - acc: 0.9316\n",
+ "Epoch 41/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2003 - acc: 0.9320\n",
+ "Epoch 42/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1996 - acc: 0.9319\n",
+ "Epoch 43/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1990 - acc: 0.9324\n",
+ "Epoch 44/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.1984 - acc: 0.9316\n",
+ "Epoch 45/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1978 - acc: 0.9326\n",
+ "Epoch 46/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1972 - acc: 0.9326\n",
+ "Epoch 47/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.1966 - acc: 0.9327\n",
+ "Epoch 48/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1960 - acc: 0.9325\n",
+ "Epoch 49/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1954 - acc: 0.9325\n",
+ "Epoch 50/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.1949 - acc: 0.9340\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2378 - acc: 0.9180\n",
+ "Epoch 2/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2365 - acc: 0.9188\n",
+ "Epoch 3/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2351 - acc: 0.9196\n",
+ "Epoch 4/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2338 - acc: 0.9208\n",
+ "Epoch 5/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2325 - acc: 0.9214\n",
+ "Epoch 6/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2313 - acc: 0.9212\n",
+ "Epoch 7/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2300 - acc: 0.9223\n",
+ "Epoch 8/50\n",
+ "8309/8309 [==============================] - 1s 162us/step - loss: 0.2289 - acc: 0.9226\n",
+ "Epoch 9/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2277 - acc: 0.9229\n",
+ "Epoch 10/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2266 - acc: 0.9236\n",
+ "Epoch 11/50\n",
+ "8309/8309 [==============================] - 1s 161us/step - loss: 0.2254 - acc: 0.9238\n",
+ "Epoch 12/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2244 - acc: 0.9248\n",
+ "Epoch 13/50\n",
+ "8309/8309 [==============================] - 1s 160us/step - loss: 0.2233 - acc: 0.9251\n",
+ "Epoch 14/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2222 - acc: 0.9257\n",
+ "Epoch 15/50\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2212 - acc: 0.9253\n",
+ "Epoch 16/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2202 - acc: 0.9261\n",
+ "Epoch 17/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2192 - acc: 0.9259\n",
+ "Epoch 18/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2183 - acc: 0.9261\n",
+ "Epoch 19/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2173 - acc: 0.9263\n",
+ "Epoch 20/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2164 - acc: 0.9267\n",
+ "Epoch 21/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2155 - acc: 0.9265\n",
+ "Epoch 22/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2146 - acc: 0.9267\n",
+ "Epoch 23/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2137 - acc: 0.9265\n",
+ "Epoch 24/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2129 - acc: 0.9269\n",
+ "Epoch 25/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2120 - acc: 0.9275\n",
+ "Epoch 26/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2112 - acc: 0.9275\n",
+ "Epoch 27/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2103 - acc: 0.9279\n",
+ "Epoch 28/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2096 - acc: 0.9277\n",
+ "Epoch 29/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2088 - acc: 0.9283\n",
+ "Epoch 30/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2080 - acc: 0.9289\n",
+ "Epoch 31/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2073 - acc: 0.9289\n",
+ "Epoch 32/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2066 - acc: 0.9295\n",
+ "Epoch 33/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2058 - acc: 0.9292\n",
+ "Epoch 34/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2051 - acc: 0.9297\n",
+ "Epoch 35/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2044 - acc: 0.9298\n",
+ "Epoch 36/50\n",
+ "8309/8309 [==============================] - 1s 153us/step - loss: 0.2037 - acc: 0.9307\n",
+ "Epoch 37/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2030 - acc: 0.9304\n",
+ "Epoch 38/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2024 - acc: 0.9313\n",
+ "Epoch 39/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2017 - acc: 0.9308\n",
+ "Epoch 40/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2010 - acc: 0.9309\n",
+ "Epoch 41/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2004 - acc: 0.9313\n",
+ "Epoch 42/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1997 - acc: 0.9314\n",
+ "Epoch 43/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1991 - acc: 0.9315\n",
+ "Epoch 44/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1985 - acc: 0.9320\n",
+ "Epoch 45/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1979 - acc: 0.9321\n",
+ "Epoch 46/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1973 - acc: 0.9322\n",
+ "Epoch 47/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1967 - acc: 0.9327\n",
+ "Epoch 48/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1961 - acc: 0.9331\n",
+ "Epoch 49/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1956 - acc: 0.9331\n",
+ "Epoch 50/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1950 - acc: 0.9337\n",
+ ">>\n",
+ ".\n",
+ "Epoch 1/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2378 - acc: 0.9184\n",
+ "Epoch 2/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2364 - acc: 0.9184\n",
+ "Epoch 3/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2351 - acc: 0.9196\n",
+ "Epoch 4/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2338 - acc: 0.9200\n",
+ "Epoch 5/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2325 - acc: 0.9209\n",
+ "Epoch 6/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2312 - acc: 0.9210\n",
+ "Epoch 7/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2300 - acc: 0.9224\n",
+ "Epoch 8/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2289 - acc: 0.9229\n",
+ "Epoch 9/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2277 - acc: 0.9232\n",
+ "Epoch 10/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2265 - acc: 0.9239\n",
+ "Epoch 11/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2254 - acc: 0.9243\n",
+ "Epoch 12/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2243 - acc: 0.9249\n",
+ "Epoch 13/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2232 - acc: 0.9254\n",
+ "Epoch 14/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2222 - acc: 0.9251\n",
+ "Epoch 15/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2212 - acc: 0.9253\n",
+ "Epoch 16/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2201 - acc: 0.9261\n",
+ "Epoch 17/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2191 - acc: 0.9261\n",
+ "Epoch 18/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2182 - acc: 0.9259\n",
+ "Epoch 19/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2173 - acc: 0.9268\n",
+ "Epoch 20/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2164 - acc: 0.9271\n",
+ "Epoch 21/50\n",
+ "8309/8309 [==============================] - 1s 156us/step - loss: 0.2154 - acc: 0.9267\n",
+ "Epoch 22/50\n",
+ "8309/8309 [==============================] - 1s 159us/step - loss: 0.2146 - acc: 0.9271\n",
+ "Epoch 23/50\n",
+ "8309/8309 [==============================] - 1s 152us/step - loss: 0.2137 - acc: 0.9277\n",
+ "Epoch 24/50\n",
+ "8309/8309 [==============================] - 1s 169us/step - loss: 0.2128 - acc: 0.9267\n",
+ "Epoch 25/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2120 - acc: 0.9273\n",
+ "Epoch 26/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2112 - acc: 0.9272\n",
+ "Epoch 27/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2104 - acc: 0.9278\n",
+ "Epoch 28/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2096 - acc: 0.9280\n",
+ "Epoch 29/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.2088 - acc: 0.9290\n",
+ "Epoch 30/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2080 - acc: 0.9291\n",
+ "Epoch 31/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2073 - acc: 0.9291\n",
+ "Epoch 32/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2065 - acc: 0.9296\n",
+ "Epoch 33/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2058 - acc: 0.9300\n",
+ "Epoch 34/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2051 - acc: 0.9297\n",
+ "Epoch 35/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2044 - acc: 0.9301\n",
+ "Epoch 36/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2037 - acc: 0.9301\n",
+ "Epoch 37/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2030 - acc: 0.9313\n",
+ "Epoch 38/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2023 - acc: 0.9312\n",
+ "Epoch 39/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2016 - acc: 0.9307\n",
+ "Epoch 40/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2010 - acc: 0.9309\n",
+ "Epoch 41/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.2003 - acc: 0.9316\n",
+ "Epoch 42/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1997 - acc: 0.9324\n",
+ "Epoch 43/50\n",
+ "8309/8309 [==============================] - 1s 152us/step - loss: 0.1991 - acc: 0.9325\n",
+ "Epoch 44/50\n",
+ "8309/8309 [==============================] - 1s 153us/step - loss: 0.1985 - acc: 0.9320\n",
+ "Epoch 45/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1978 - acc: 0.9327\n",
+ "Epoch 46/50\n",
+ "8309/8309 [==============================] - 1s 151us/step - loss: 0.1973 - acc: 0.9324\n",
+ "Epoch 47/50\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1967 - acc: 0.9330\n",
+ "Epoch 48/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1961 - acc: 0.9332\n",
+ "Epoch 49/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1955 - acc: 0.9336\n",
+ "Epoch 50/50\n",
+ "8309/8309 [==============================] - 1s 150us/step - loss: 0.1950 - acc: 0.9331\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": 31,
+ "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-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "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": 33,
+ "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": 34,
+ "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-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "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": 36,
+ "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": 37,
+ "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-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "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": 39,
+ "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 = SVC(kernel='rbf', gamma='scale', probability=True)\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": 40,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_results = pd.DataFrame(data={\"name\": names, 'pred': results})\n",
+ "df_results.to_csv('/home/drewe/notebooks/genotox/pred.svm.v5-ext-ext-Padel-2D.csv', index=None)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "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()"
+ ]
+ }
+ ],
+ "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
+}