{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pip install tensorflow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import preprocessing\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import h5py\n",
    "from pprint import pprint\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "df=pd.read_csv(\"AlephBtag_MC_small_v2.csv\", delimiter=r'\\s+')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>energy</th>\n",
       "      <th>cTheta</th>\n",
       "      <th>phi</th>\n",
       "      <th>prob_b</th>\n",
       "      <th>spheri</th>\n",
       "      <th>pt2rel</th>\n",
       "      <th>multip</th>\n",
       "      <th>bqvjet</th>\n",
       "      <th>ptlrel</th>\n",
       "      <th>nnbjet</th>\n",
       "      <th>isb</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>46.8299</td>\n",
       "      <td>0.3871</td>\n",
       "      <td>0.8528</td>\n",
       "      <td>0.0327</td>\n",
       "      <td>0.2105</td>\n",
       "      <td>0.0302</td>\n",
       "      <td>0.4776</td>\n",
       "      <td>0.0314</td>\n",
       "      <td>-0.0003</td>\n",
       "      <td>0.1642</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>45.6397</td>\n",
       "      <td>-0.3943</td>\n",
       "      <td>-2.2817</td>\n",
       "      <td>0.0035</td>\n",
       "      <td>0.3457</td>\n",
       "      <td>0.0314</td>\n",
       "      <td>0.3497</td>\n",
       "      <td>0.0106</td>\n",
       "      <td>-0.0003</td>\n",
       "      <td>0.1055</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>48.8960</td>\n",
       "      <td>-0.4613</td>\n",
       "      <td>-0.6139</td>\n",
       "      <td>0.0649</td>\n",
       "      <td>0.0872</td>\n",
       "      <td>0.0254</td>\n",
       "      <td>0.1288</td>\n",
       "      <td>0.1074</td>\n",
       "      <td>-0.0003</td>\n",
       "      <td>0.1183</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>39.1577</td>\n",
       "      <td>0.4668</td>\n",
       "      <td>2.4818</td>\n",
       "      <td>0.0027</td>\n",
       "      <td>0.1570</td>\n",
       "      <td>0.0147</td>\n",
       "      <td>0.2732</td>\n",
       "      <td>0.2117</td>\n",
       "      <td>0.0240</td>\n",
       "      <td>0.1612</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>43.7354</td>\n",
       "      <td>-0.7642</td>\n",
       "      <td>1.7872</td>\n",
       "      <td>0.4320</td>\n",
       "      <td>0.4873</td>\n",
       "      <td>0.0505</td>\n",
       "      <td>0.3536</td>\n",
       "      <td>0.4578</td>\n",
       "      <td>-0.0003</td>\n",
       "      <td>0.9969</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    energy  cTheta     phi  prob_b  spheri  pt2rel  multip  bqvjet  ptlrel  \\\n",
       "0  46.8299  0.3871  0.8528  0.0327  0.2105  0.0302  0.4776  0.0314 -0.0003   \n",
       "1  45.6397 -0.3943 -2.2817  0.0035  0.3457  0.0314  0.3497  0.0106 -0.0003   \n",
       "2  48.8960 -0.4613 -0.6139  0.0649  0.0872  0.0254  0.1288  0.1074 -0.0003   \n",
       "3  39.1577  0.4668  2.4818  0.0027  0.1570  0.0147  0.2732  0.2117  0.0240   \n",
       "4  43.7354 -0.7642  1.7872  0.4320  0.4873  0.0505  0.3536  0.4578 -0.0003   \n",
       "\n",
       "   nnbjet  isb  \n",
       "0  0.1642    0  \n",
       "1  0.1055    0  \n",
       "2  0.1183    0  \n",
       "3  0.1612    0  \n",
       "4  0.9969    1  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_=df.drop(columns={\"isb\"})\n",
    "y_=df[\"isb\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# X_ = np.asarray(X_).astype(np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(33968, 10)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(33968,)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X_, y_, test_size=0.2,\n",
    "                                                    random_state=29)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = keras.Sequential([\n",
    "    keras.layers.Dense(128,input_dim=X_.shape[1]),\n",
    "    keras.layers.Dense(64, activation='relu'),\n",
    "    keras.layers.Dropout(0.25),\n",
    "    keras.layers.Dense(32, activation='relu'),\n",
    "    keras.layers.Dense(16, activation='relu'),\n",
    "    keras.layers.Dropout(0.25),\n",
    "    keras.layers.Dense(1, activation='sigmoid')\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),\n",
    "              loss='binary_crossentropy',#SparseCategoricalCrossentropy(from_logits=True),\n",
    "              metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 27174 samples, validate on 6794 samples\n",
      "Epoch 1/10\n",
      "27174/27174 [==============================] - 1s 45us/sample - loss: 0.7300 - accuracy: 0.7025 - val_loss: 0.5084 - val_accuracy: 0.7732\n",
      "Epoch 2/10\n",
      "27174/27174 [==============================] - 1s 26us/sample - loss: 0.5108 - accuracy: 0.7712 - val_loss: 0.4255 - val_accuracy: 0.7926\n",
      "Epoch 3/10\n",
      "27174/27174 [==============================] - 1s 29us/sample - loss: 0.4045 - accuracy: 0.8305 - val_loss: 0.3195 - val_accuracy: 0.8958\n",
      "Epoch 4/10\n",
      "27174/27174 [==============================] - 1s 27us/sample - loss: 0.3375 - accuracy: 0.8726 - val_loss: 0.2832 - val_accuracy: 0.8965\n",
      "Epoch 5/10\n",
      "27174/27174 [==============================] - 1s 28us/sample - loss: 0.3084 - accuracy: 0.8861 - val_loss: 0.2753 - val_accuracy: 0.8986\n",
      "Epoch 6/10\n",
      "27174/27174 [==============================] - 1s 26us/sample - loss: 0.2993 - accuracy: 0.8927 - val_loss: 0.2724 - val_accuracy: 0.8970\n",
      "Epoch 7/10\n",
      "27174/27174 [==============================] - 1s 24us/sample - loss: 0.2943 - accuracy: 0.8943 - val_loss: 0.2761 - val_accuracy: 0.8980\n",
      "Epoch 8/10\n",
      "27174/27174 [==============================] - 1s 24us/sample - loss: 0.2884 - accuracy: 0.8974 - val_loss: 0.2702 - val_accuracy: 0.8996\n",
      "Epoch 9/10\n",
      "27174/27174 [==============================] - 1s 25us/sample - loss: 0.2845 - accuracy: 0.8971 - val_loss: 0.2716 - val_accuracy: 0.8996\n",
      "Epoch 10/10\n",
      "27174/27174 [==============================] - 1s 25us/sample - loss: 0.2838 - accuracy: 0.8979 - val_loss: 0.2685 - val_accuracy: 0.8990\n",
      "{'loss': [0.7300416971947207, 0.5108373763107293, 0.4044871695557379, 0.33746977181258103, 0.308371374789493, 0.2993331409526326, 0.2942693297505651, 0.28842722028526785, 0.2845294970396366, 0.28379199729044197], 'accuracy': [0.70254654, 0.77121514, 0.83053654, 0.8725988, 0.88606757, 0.89269155, 0.89427394, 0.8974019, 0.89710754, 0.89791715], 'val_loss': [0.5083804481128471, 0.42552192191148386, 0.3195083290470113, 0.28315709865124816, 0.27527145517198764, 0.2724108015715392, 0.2761347823399883, 0.27017582985875466, 0.27164762789339114, 0.26846702340282974], 'val_accuracy': [0.7731822, 0.7926111, 0.8957904, 0.89652634, 0.898587, 0.8969679, 0.8979982, 0.8996173, 0.8996173, 0.89902854]}\n",
      "dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy'])\n",
      "dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy'])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "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": [
    "# model.fit(df_train, df_train_labels, epochs=10)\n",
    "history = model.fit(X_train, y_train, validation_data=(X_test, y_test),\n",
    "                    batch_size=64,\n",
    "                    epochs=10)\n",
    "\n",
    "print(history.history)\n",
    "\n",
    "#\n",
    "model.save(\"modelNN-2020.h5\")\n",
    "plt.figure()\n",
    "\n",
    "print(history.history.keys())\n",
    "plt.plot(history.history['loss'], label='train')\n",
    "plt.plot(history.history['val_loss'], label='test')\n",
    "plt.title('loss')\n",
    "plt.legend()\n",
    "# plt.ylabel('log_loss')\n",
    "plt.xlabel('epoch')\n",
    "plt.savefig(\"NN-2020-loss.png\")\n",
    "\n",
    "plt.figure()\n",
    "print(history.history.keys())\n",
    "plt.plot(history.history['accuracy'], label='train')\n",
    "plt.plot(history.history['val_accuracy'], label='test')\n",
    "plt.title('accuracy')\n",
    "plt.legend()\n",
    "# plt.ylabel('log_loss')\n",
    "plt.xlabel('epoch')\n",
    "\n",
    "plt.savefig(\"NN-2020-accuracy.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred= model.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "predict_df=pd.DataFrame(y_pred)\n",
    "predict_df =predict_df.rename(columns={ 0 : \"isb_predict\"})\n",
    "predict_df[\"isb\"]=y_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>isb_predict</th>\n",
       "      <th>isb</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.045340</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.016235</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.918410</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.013134</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.010896</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   isb_predict  isb\n",
       "0     0.045340    0\n",
       "1     0.016235    0\n",
       "2     0.918410    0\n",
       "3     0.013134    0\n",
       "4     0.010896    1"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
