diff --git "a/Deep learning/.ipynb_checkpoints/Binary classification using deep learning-checkpoint.ipynb" "b/Deep learning/.ipynb_checkpoints/Binary classification using deep learning-checkpoint.ipynb" new file mode 100644--- /dev/null +++ "b/Deep learning/.ipynb_checkpoints/Binary classification using deep learning-checkpoint.ipynb" @@ -0,0 +1,836 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import pickle\n", + "\n", + "from sklearn.model_selection import train_test_split \n", + "\n", + "from keras.preprocessing.text import Tokenizer \n", + "from keras.preprocessing.sequence import pad_sequences" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
VideoIDEffectiveness
0pvuN_WvF1to0.0
1eRLJscAlk1M1.0
2VbiRNT_gWUQ0.0
35scez5dqtAc1.0
4JDcro7dPqpA0.0
.........
131IQpIVsxx0140.0
132JYZpxRy5Mfg1.0
1338DiWzvE52ZY0.0
134OwqIy8Ikv-c0.0
135lPgZfhnCAdI0.0
\n", + "

136 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " VideoID Effectiveness\n", + "0 pvuN_WvF1to 0.0\n", + "1 eRLJscAlk1M 1.0\n", + "2 VbiRNT_gWUQ 0.0\n", + "3 5scez5dqtAc 1.0\n", + "4 JDcro7dPqpA 0.0\n", + ".. ... ...\n", + "131 IQpIVsxx014 0.0\n", + "132 JYZpxRy5Mfg 1.0\n", + "133 8DiWzvE52ZY 0.0\n", + "134 OwqIy8Ikv-c 0.0\n", + "135 lPgZfhnCAdI 0.0\n", + "\n", + "[136 rows x 2 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_excel('../Resources/Climate_change_links_2.xlsx')\n", + "data = df[[\"VideoID\", \"Effectiveness\"]]\n", + "\n", + "# clean data\n", + "data = data.loc[(data[\"Effectiveness\"] == 1) | (data[\"Effectiveness\"] == 2) | (data[\"Effectiveness\"] == 3) | (data[\"Effectiveness\"] == 4) | (data[\"Effectiveness\"] == 5)]\n", + "data = data.reset_index()\n", + "del data[\"index\"]\n", + "\n", + "## Custom encoder\n", + "def custom_encoder(df):\n", + " df.replace(to_replace = 1.0, value = 0, inplace=True)\n", + " df.replace(to_replace = 2.0, value = 0, inplace=True)\n", + " df.replace(to_replace = 4.0, value = 1, inplace=True)\n", + " df.replace(to_replace = 5.0, value = 1, inplace=True)\n", + "\n", + "custom_encoder(df['Effectiveness'])\n", + "\n", + "data = df[[\"VideoID\", \"Effectiveness\"]]\n", + "data = data[data[\"Effectiveness\"] != 3]\n", + "data = data.loc[(data[\"Effectiveness\"] == 0) | (data[\"Effectiveness\"] == 1)]\n", + "data = data.reset_index()\n", + "del data[\"index\"]\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "## get documnets (pre-processd comments)\n", + "documents = []\n", + "for i in range(len(data)):\n", + " VideoID = data[\"VideoID\"][i]\n", + " comment = pd.read_csv(\"../../NLP Preprocessing/03_Processed_Comments/\"+VideoID+\"/\"+VideoID+\"_all_words.csv\")\n", + " documents.append(list(comment[\"0\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
VideoIDEffectivenesscleanedcleaned_string
0pvuN_WvF1to0.0[clean, version, video, child, love, northeast...clean version video child love northeast india...
1eRLJscAlk1M1.0[step, take, help, fight, climate, change, wel...step take help fight climate change well equal...
2VbiRNT_gWUQ0.0[country, disappear, video, year, old, world, ...country disappear video year old world map did...
35scez5dqtAc1.0[im, watch, trump, biden, ha, already, start, ...im watch trump biden ha already start process ...
4JDcro7dPqpA0.0[fun, fact, cow, belch, fart, adult, version, ...fun fact cow belch fart adult version bill nye...
...............
131IQpIVsxx0140.0[corporate, medium, fear, monger, earth, get, ...corporate medium fear monger earth get flat wr...
132JYZpxRy5Mfg1.0[usually, consumer_NEG, say_NEG, though_NEG, s...usually consumer_NEG say_NEG though_NEG suppor...
1338DiWzvE52ZY0.0[marios, leave, hand, doe, intro, impressive, ...marios leave hand doe intro impressive today p...
134OwqIy8Ikv-c0.0[lie, interseting, isnt, group_NEG, consist_NE...lie interseting isnt group_NEG consist_NEG com...
135lPgZfhnCAdI0.0[miss, man, wa, hero, didnt, cherish_NEG, enou...miss man wa hero didnt cherish_NEG enough_NEG ...
\n", + "

136 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " VideoID Effectiveness \\\n", + "0 pvuN_WvF1to 0.0 \n", + "1 eRLJscAlk1M 1.0 \n", + "2 VbiRNT_gWUQ 0.0 \n", + "3 5scez5dqtAc 1.0 \n", + "4 JDcro7dPqpA 0.0 \n", + ".. ... ... \n", + "131 IQpIVsxx014 0.0 \n", + "132 JYZpxRy5Mfg 1.0 \n", + "133 8DiWzvE52ZY 0.0 \n", + "134 OwqIy8Ikv-c 0.0 \n", + "135 lPgZfhnCAdI 0.0 \n", + "\n", + " cleaned \\\n", + "0 [clean, version, video, child, love, northeast... \n", + "1 [step, take, help, fight, climate, change, wel... \n", + "2 [country, disappear, video, year, old, world, ... \n", + "3 [im, watch, trump, biden, ha, already, start, ... \n", + "4 [fun, fact, cow, belch, fart, adult, version, ... \n", + ".. ... \n", + "131 [corporate, medium, fear, monger, earth, get, ... \n", + "132 [usually, consumer_NEG, say_NEG, though_NEG, s... \n", + "133 [marios, leave, hand, doe, intro, impressive, ... \n", + "134 [lie, interseting, isnt, group_NEG, consist_NE... \n", + "135 [miss, man, wa, hero, didnt, cherish_NEG, enou... \n", + "\n", + " cleaned_string \n", + "0 clean version video child love northeast india... \n", + "1 step take help fight climate change well equal... \n", + "2 country disappear video year old world map did... \n", + "3 im watch trump biden ha already start process ... \n", + "4 fun fact cow belch fart adult version bill nye... \n", + ".. ... \n", + "131 corporate medium fear monger earth get flat wr... \n", + "132 usually consumer_NEG say_NEG though_NEG suppor... \n", + "133 marios leave hand doe intro impressive today p... \n", + "134 lie interseting isnt group_NEG consist_NEG com... \n", + "135 miss man wa hero didnt cherish_NEG enough_NEG ... \n", + "\n", + "[136 rows x 4 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## create two new columns of the pre-processed data in list and string form\n", + "data['cleaned'] = documents\n", + "data['cleaned_string'] = [' '.join(map(str, l)) for l in data['cleaned']]\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# split training and test set\n", + "sentences = data['cleaned_string'].values\n", + "y = data['Effectiveness'].values\n", + "\n", + "sentences_train, sentences_test, y_train, y_test = train_test_split(sentences, y, test_size=0.25, random_state=1000)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.style.use('ggplot')\n", + "\n", + "# plot to see overfitting of neural networks\n", + "def plot_history(history, save_fig=False):\n", + " acc = history.history['accuracy']\n", + " val_acc = history.history['val_accuracy']\n", + " loss = history.history['loss']\n", + " val_loss = history.history['val_loss']\n", + " x = range(1, len(acc) + 1)\n", + "\n", + " plt.figure(figsize=(12, 5))\n", + " plt.subplot(1, 2, 1)\n", + " plt.plot(x, acc, 'b', label='Training acc')\n", + " plt.plot(x, val_acc, 'r', label='Validation acc')\n", + " plt.title('Training and validation accuracy')\n", + " plt.xlabel('Epoch')\n", + " plt.ylabel('Accuracy')\n", + " plt.legend()\n", + " plt.subplot(1, 2, 2)\n", + " plt.plot(x, loss, 'b', label='Training loss')\n", + " plt.plot(x, val_loss, 'r', label='Validation loss')\n", + " plt.title('Training and validation loss')\n", + " plt.xlabel('Epoch')\n", + " plt.ylabel('Loss')\n", + " plt.legend()\n", + " if save_fig:\n", + " plt.savefig('History plot.png', bbox_inches = \"tight\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Convolutional Neural Network (CNN)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# create tokenizer\n", + "tokenizer = Tokenizer(num_words=5000)\n", + "tokenizer.fit_on_texts(sentences_train)\n", + "\n", + "X_train = tokenizer.texts_to_sequences(sentences_train)\n", + "X_test = tokenizer.texts_to_sequences(sentences_test)\n", + "\n", + "vocab_size = len(tokenizer.word_index) + 1 # add 1 because of reserved 0 index\n", + "\n", + "# pad data so that it has the same length\n", + "maxlen = 100\n", + "\n", + "X_train = pad_sequences(X_train, padding='post', maxlen=maxlen)\n", + "X_test = pad_sequences(X_test, padding='post', maxlen=maxlen)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "from keras.models import Sequential\n", + "from keras import layers\n", + "from keras.backend import clear_session\n", + "\n", + "from numpy.random import seed\n", + "seed(1)\n", + "from tensorflow.random import set_seed \n", + "set_seed(2)\n", + "\n", + "clear_session()\n", + "\n", + "embedding_dim = 100\n", + "\n", + "## create CNN model\n", + "model = Sequential()\n", + "# add embedding layer\n", + "model.add(layers.Embedding(vocab_size, embedding_dim, input_length=maxlen))\n", + "# add convolutional layer\n", + "model.add(layers.Conv1D(128, 7, activation='relu'))\n", + "# add pooling layer\n", + "model.add(layers.GlobalMaxPooling1D())\n", + "# add dense layer with 10 neurons\n", + "model.add(layers.Dense(10, activation='softmax'))\n", + "# add output layer\n", + "model.add(layers.Dense(1, activation='sigmoid'))\n", + "\n", + "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy',\n", + " tf.keras.metrics.TruePositives(),\n", + " tf.keras.metrics.TrueNegatives(),\n", + " tf.keras.metrics.FalsePositives(),\n", + " tf.keras.metrics.FalseNegatives(), \n", + " tf.keras.metrics.Precision(class_id=None),\n", + " tf.keras.metrics.Recall()])\n", + "\n", + "history = model.fit(X_train, y_train,\n", + " epochs=120,\n", + " verbose=False,\n", + " validation_data=(X_test, y_test),\n", + " batch_size=28)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "embedding (Embedding) (None, 100, 100) 41079600 \n", + "_________________________________________________________________\n", + "conv1d (Conv1D) (None, 94, 128) 89728 \n", + "_________________________________________________________________\n", + "global_max_pooling1d (Global (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense (Dense) (None, 10) 1290 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 1) 11 \n", + "=================================================================\n", + "Total params: 41,170,629\n", + "Trainable params: 41,170,629\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "# model summary\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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zp49S3R0NG+88QZeXl6sX7/e2bFKlZGRwaFDh1i0aBFLly4lJyeHvXv3OjuWQxT1feuK1q5di0ajoXfv3oD75HZlcs+uGnLPrnpyz3YNlXHfrvYt03q9nqSkJNvjpKQk229VrspkMjF//nx69+5Nt27dAAgMDCQlJYWgoCBSUlIICAhwcsqCTp48yY8//shPP/1EXl4e2dnZLFy40OVzg/X/iF6vt/1m2r17d9avX+/y2X/55Rfq1Kljy9WtWzdOnTrl8rmvVVzW679vk5OTCQ4OdlbMIu3Zs4fDhw/zwgsv2Io9d8jt6uSeXTXknl315J7tfJV13672LdPNmjXj4sWLJCQkYDKZOHDgAOHh4c6OVSxFUViyZAn169dn6NChtufDw8P55ptvAPjmm2/o0qWLsyIW6T//+Q9Llixh0aJFTJw4kfbt2zNhwgSXzw1Qq1Yt9Ho9Fy5cAKw3vAYNGrh8doPBwOnTp8nNzUVRFH755Rfq16/v8rmvVVzW8PBwDhw4gNFoJCEhgYsXL9K8eXNnRi3g6NGjbNiwgWeffRYvLy/b866e2x3IPbtqyD276sk927kq875dIxZtOXLkCB9++CEWi4WIiAhuu+02Z0cq1u+//84LL7xAo0aNbL813X333bRo0YK33nqLxMREDAYDkydPdompc4py/PhxNm3axNSpU0lPT3eL3H/88QdLlizBZDJRp04dHn/8cRRFcfnsn3/+OQcOHECj0dC4cWMee+wxcnJyXDL322+/zYkTJ0hPTycwMJA77riDLl26FJt17dq17N69G7Vazf3338+NN97oMrnXrVuHyWSyZW3RogWPPPKIS+V2Z3LPrlpyz646cs92XvbKvG/XiGJaCCGEEEKIylDtu3kIIYQQQghRWaSYFkIIIYQQopykmBZCCCGEEKKcpJgWQgghhBCinKSYFkIIIYQQopykmBbCAe644w4uXbrk7BhCCCHsIPds4UjVfgVEUTONHz+eq1evolb/+/tiv379ePDBB52YSgghRFHkni3cmRTTotp69tln6dixo7NjCCGEsIPcs4W7kmJa1Ch79uxh586dNGnShG+++YagoCAefPBBOnToAEBycjLLli3j999/x8/PjxEjRhAVFQWAxWJh/fr17N69m9TUVOrWrcuUKVMwGAwA/Pzzz7z66qukp6dz88038+CDD9pWRBNCCFF2cs8W7kCKaVHjnD59mm7duhETE8PBgweZN28eixYtws/PjwULFtCwYUOWLl3KhQsXmDlzJiEhIXTo0IHNmzfz7bffMm3aNOrWrcu5c+fw8vKyHffIkSO89tprZGdn8+yzzxIeHk5YWJjzLlQIIaoBuWcLVyfFtKi25s6di0ajsT0eM2YMWq2WwMBAhgwZgkqlomfPnmzatIkjR47Qtm1bfv/9d6ZOnYqnpyeNGzcmMjKSvXv30qFDB3bu3MmYMWOoV68eAI0bNy5wvpEjR+Lr64uvry/t2rXjjz/+kBuzEELYSe7Zwl1JMS2qrSlTphTqf7dnzx6Cg4MLfJRXu3ZtkpOTSUlJwc/PD29vb9trBoOBM2fOAJCUlERISEix56tVq5bt315eXuTk5DjoSoQQovqTe7ZwVzI1nqhxkpOTURTF9jgxMZHg4GCCgoLIyMggOzu70GsAer2ey5cvV3leIYSoyeSeLVydFNOixklNTWXr1q2YTCa+++47/v77b2688UYMBgOtWrXif//7H3l5eZw7d47du3fTu3dvACIjI1m9ejUXL15EURTOnTtHenq6k69GCCGqN7lnC1cn3TxEtfX6668XmLO0Y8eOdOnShRYtWnDx4kUefPBBatWqxeTJk/H39wfgqaeeYtmyZTz66KP4+flx++232z52HDp0KEajkVmzZpGenk79+vV55plnnHJtQghR3cg9W7grlXLtZydCVHP50yzNnDnT2VGEEEKUQu7Zwh1INw8hhBBCCCHKSYppIYQQQgghykm6eQghhBBCCFFO0jIthBBCCCFEOUkxLYQQQgghRDlJMS2EEEIIIUQ5STEthBBCCCFEOUkxLYQQQgghRDlJMS2EEEIIIUQ5/T8+NmvvO1dtVAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot accuracy and loss plots\n", + "plot_history(history)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Testing Accuracy: 82.3529\n" + ] + } + ], + "source": [ + "# Evaluate\n", + "loss, accuracy, tp, tn, fp, fn, precision, recall = model.evaluate(X_test, y_test, verbose=False)\n", + "print(\"Testing Accuracy: {:.4f}\".format(accuracy*100))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Precision: 0.8888888955116272\n", + "Recall: 0.6153846383094788\n", + "Accuracy: 0.8235294222831726\n", + "F1-Score: 0.7272727454989408\n" + ] + } + ], + "source": [ + "print(\"Precision: \", precision)\n", + "print(\"Recall: \", recall)\n", + "print(\"Accuracy: \", accuracy)\n", + "print(\"F1-Score: \", (2*precision*recall)/(precision+recall))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "# function to plot confusion matrix\n", + "def plot_conf_matrix(conf_matrix):\n", + " group_counts = [\"{0:0.0f}\".format(value) for value in\n", + " conf_matrix.flatten()]\n", + " group_percentages = [\"{0:.2%}\".format(value) for value in\n", + " conf_matrix.flatten()/np.sum(conf_matrix)]\n", + " labels = [f\"{v1}\\n{v2}\" for v1, v2 in\n", + " zip(group_counts,group_percentages)]\n", + " labels = np.asarray(labels).reshape(2,2)\n", + " \n", + " sns.heatmap(conf_matrix, annot=labels, fmt='', cmap='Blues')\n", + " \n", + "# Creating confusion matrix\n", + "conf_matrix = np.array( [[tp, fp], \n", + " [fn, tn]] )\n", + "\n", + "plot_conf_matrix(conf_matrix)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using Bag of Words Vectorizer" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n", + "\n", + "vectorizer = CountVectorizer(min_df=3, ngram_range=(1, 1))\n", + "vectorizer.fit(sentences_train)\n", + "\n", + "X_train = vectorizer.transform(sentences_train)\n", + "X_test = vectorizer.transform(sentences_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Jared\\anaconda3\\lib\\site-packages\\tensorflow\\python\\framework\\indexed_slices.py:447: UserWarning: Converting sparse IndexedSlices(IndexedSlices(indices=Tensor(\"gradient_tape/sequential/dense/embedding_lookup_sparse/Reshape_1:0\", shape=(None,), dtype=int32), values=Tensor(\"gradient_tape/sequential/dense/embedding_lookup_sparse/Reshape:0\", shape=(None, 32), dtype=float32), dense_shape=Tensor(\"gradient_tape/sequential/dense/embedding_lookup_sparse/Cast:0\", shape=(2,), dtype=int32))) to a dense Tensor of unknown shape. This may consume a large amount of memory.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training Accuracy: 100.0000\n", + "Testing Accuracy: 73.5294\n" + ] + } + ], + "source": [ + "from keras.models import Sequential\n", + "from keras import layers\n", + "from keras.backend import clear_session\n", + "\n", + "from numpy.random import seed\n", + "seed(1)\n", + "from tensorflow.random import set_seed \n", + "set_seed(2)\n", + "\n", + "clear_session()\n", + "\n", + "# Number of features\n", + "input_dim = X_train.shape[1] \n", + "\n", + "# create model with one hidden layer\n", + "model = Sequential()\n", + "model.add(layers.Dense(32, input_dim=input_dim, activation='relu'))\n", + "model.add(layers.Dense(1, activation='sigmoid'))\n", + "\n", + "model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n", + "\n", + "history = model.fit(X_train, y_train,\n", + " epochs=30,\n", + " verbose=False,\n", + " validation_data=(X_test, y_test),\n", + " batch_size=32)\n", + "\n", + "loss, accuracy = model.evaluate(X_train, y_train, verbose=False)\n", + "print(\"Training Accuracy: {:.4f}\".format(accuracy*100))\n", + "loss, accuracy = model.evaluate(X_test, y_test, verbose=False)\n", + "print(\"Testing Accuracy: {:.4f}\".format(accuracy*100))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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VvZ8ecs9ioqKyt320v8PM2bM4M033+TJJ59kw4YN7N69mwcffLDM+1fZ+Tt37sxVV13FRx99xIULF1izZg0PP/xwZS9HCJeTsV/Gfke5Yux39FwlX29wcDC//vorK1eupF27dsydO5c2bdrY17tff/31nD59msmTJ2MymRg5ciTXXXcdFoul2nF4O0mmPezHH3/EYDDw2muv0bt3b9q1a1ftmqLO0qlTJwB++ukn+2Nms7nMhSKXctZr6Ny5M7/88kup/4gla39W5t5772XdunUcPnyYr7/+mvvuu8/+3M6dO8nPz+e9996jX79+tG/fvlp/wRfHlpKSwpEjR+yPpaamlrrA5NChQ6SkpPD6668zYMAAOnbsSEZGRqkBrngArGqw6dy5M1u2bCn12JYtW1AUxf59qglHYrz88ss5cOBAhd/Dyy+/nG3btpW6IKakRo0aYbFYSr3Hl64vrMjWrVsZMmQIo0eP5rLLLqNNmzal3vNGjRrRpEmTMhdcXeqRRx5hyZIlzJ8/n5iYGIYMGeLQ+YVwFxn7/yZjf+nzuWLsv1SbNm3w8/Mrc66tW7fSuXNn+32tVss111zDq6++yq5du4iNjS11kWJERAR333038+bN4+uvv2bLli2lZtAbCkmmPax9+/akpKSwcOFCjh8/zpIlS5gzZ45HYmnbti033XQTY8aMsf+HeOSRR8jOzq70L3NnvYbHHnuMlJQUHn74YQ4dOsR3333H5MmTHdp36NChREREcNdddxESEsINN9xQ6nUpisKMGTM4ceIEq1at4tVXX61WbAMHDqRbt26MHDmSHTt2sHv3bkaMGFHqY8nmzZvj5+fHBx98wLFjx/juu+946qmnSr13xUsX1q9fz/nz58nIyCj3fBMmTCApKYnx48fz+++/s27dOp588klGjBhh//iwJhyJ8e6776Z58+YMHz6cjRs3cuLECb777juWLVsG2D7as1qt3HzzzWzbto0TJ07w1Vdf8c033wC2j7NDQkKYOHEiR44cYd26dQ6/3+3bt2fz5s18//33/PHHH7zwwgv88ssvpbZ56aWXmDdvHlOnTuXQoUMcOHCAf/3rX6U+fiyuETt16lRGjx5do4sjhXAlGfv/JmP/31w19l8qMDCQsWPH8uKLL7J8+XKOHDnCG2+8werVq3n++ecBWL16NTNnzmTXrl2cPn2aVatWcebMGXtSP3nyZFasWMHhw4c5cuQIS5cuJTg42Klxegv5DeNhN954I5MnT+b555+na9eu/Pe//+Wdd97xWDyLFi2iS5cuDB06lGuvvZbGjRszaNAg/P39K9zHWa+hcePGrF27lh07dtC9e3eeeuop3n33XYf21el0/OMf/2D37t3cdddd+Pj42J+Lj4/ngw8+YN68eXTq1Inp06fz3nvvVSs2RVFYtWoVYWFhXHPNNdx4443ccMMN9OjRw76NwWDg008/ZcOGDXTu3Jlnn32W6dOnl0rkNBoNs2fP5vPPP6dp06Zcdtll5Z4vPj6eNWvWsGXLFrp168Y999zDsGHD7B+h1pQjMQYGBrJlyxa6dOnCXXfdRceOHRkzZgz5+fkAxMbG8uOPP9p/cXXu3JnJkyfbZ2EiIiL47LPP+Pnnn4mPj2fq1KllynBV5MUXX6R///7cfPPN9OnTh4yMjDKVAR588EEWL17MF198Qffu3bnmmmv45ptvSv1y8/f355577sFsNjN69OhavWdCuIKM/X+Tsf9vrhr7y/P666/z0EMP8fTTT9O5c2c+/fRTPv30UwYOHAjYltGsXbuWIUOG0K5dO/75z3/ywgsvMGrUKMA2zk6ZMoXLL7+cnj17snfvXr755hvCwsKcHmtdp6g1WWQjGgyLxUKHDh0YPnw4M2bM8HQ4QjjsjjvuID8/n7Vr13o6FCG8joz9QjhOOiCKUrZu3cqFCxe47LLLMBqNzJw5k5MnT3L//fd7OjQhHJKRkcEPP/zAypUr2bBhg6fDEcIryNgvRM1JMi1KsVgsvPbaaxw9ehQfHx+6dOnC999/T9euXT0dmhAOueyyy0hLS+Of//wn1157rafDEcIryNgvRM3JMg8hhBBCCCFqSC5AFEIIIYQQooYkmRZCCCGEEKKGJJkWQgghhBCihrz+AsSzZ8/abxsMhlKNG7yNxO9Z3hy/N8cODTf+uLg4F0RTt5Ucs8G7v/feHDtI/J7mzfF7c+zg/DFbZqaFEEIIIYSoIUmmhRBCCCGEqCFJpoUQQgghhKghr18zLYQQQghR16mqislkwmq1oigKycnJFBQUeDqsGvHm2KHy+FVVRaPR4O/vj6IoDh1PkmkhhBBCCBczmUz4+Pig09lSL51Oh1ar9XBUNePNsUPV8ZvNZkwmEwEBAQ4dT5Z5CCGEEEK4mNVqtSfSom7T6XRYrVaHt5dkWgghhBDCxRxdMiDqhup8v9zyJ9KcOXNISkoiLCyMGTNmlHleVVUWLVrEb7/9hp+fH48//jitWrVyR2hCCCGEEPVeeno6d955JwApKSlotVoiIiIA+Prrr/H19a1w3z179vDFF18wderUSs8xfPhw1qxZU+tYt2/fzty5c1myZEmtj+UObkmmr732WoYMGcLs2bPLff63337j/PnzzJo1iyNHjvDRRx/xxhtvuCM0IYQQQoh6LyIigg0bNgAwY8YMgoKCePTRR+3Pm83mCpehdOvWjW7dulV5Dmck0t7ILcl0p06duHDhQoXP//rrr1xzzTUoikK7du3Izc0lIyMDvV7vjvBEHbN/v449eyr+C9lVgoM15OQEuv28zuDNsYP3x9+/v0KTJp6OomHbu9eHxo0tREY6vs5RiIbu6aefJjw8nP3799O1a1eGDx/OSy+9hMlkwt/fn3fffZc2bdqUmimeMWMGZ8+e5dSpU/z11188+OCDjB49GoC2bdty5MgRtm/fzrvvvoter+fw4cPEx8fzwQcfoCgK3333Ha+88goRERF07dqVU6dOVToDnZGRwTPPPMPp06fx9/fn7bffplOnTvz0009MmTIFsC3JWLFiBbm5uTz22GMYjUYsFgtvvvkmvXv3dvn7WCdWwqenp2MwGOz3IyMjSU9PLzeZ3rhxIxs3bgRg2rRppfbT6XSl7nsbiR8++kjDU09pMZs9tbYs3EPndYZwTwdQS+GeDqDGpk618s9/eu//3frgH/+I4Pbb83nppWxPhyKEVzl+/DjLli1Dq9ViNBpZsWIFOp2OrVu38tZbb7FgwYIy+xw9epTPP/+c3Nxcrr76au699158fHxKbbN//342bdpETEwMN998Mzt37iQ+Pp7nnnuOFStW0KxZMx5//PEq45sxYwZdunTh448/5scff+Spp55iw4YNzJ07lzfeeINevXqRm5uLn58fn376Kf379+epp57CYrGQn5/vtPepMnUimVZVtcxjFS38TkhIICEhwX6/ZG/1htorvq6oTfxFRfDKK6EsWhTMtdeaeOONLHx9y/5cuFJERATp6eluPaezeHPs4P3xt2gRUaOf/bi4OBdE0/BYLJCRoSUlRa6pF95hypRQDh3yLTf/qalOnYp49dXq/zF544032svEZWdn8/TTT3PixAkURaGo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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot accuracy and loss plots\n", + "plot_history(history)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Hyperparameter Optimization" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def create_model(num_filters, kernel_size, vocab_size, embedding_dim, maxlen):\n", + " model = Sequential()\n", + " model.add(layers.Embedding(vocab_size, embedding_dim, input_length=maxlen))\n", + " model.add(layers.Conv1D(num_filters, kernel_size, activation='relu'))\n", + " model.add(layers.GlobalMaxPooling1D())\n", + " model.add(layers.Dense(10, activation='relu'))\n", + " model.add(layers.Dense(1, activation='sigmoid'))\n", + " model.compile(optimizer='adam',\n", + " loss='binary_crossentropy',\n", + " metrics=['accuracy'])\n", + " return model" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 3 folds for each of 5 candidates, totalling 15 fits\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n", + "[Parallel(n_jobs=1)]: Done 15 out of 15 | elapsed: 7.8min finished\n" + ] + }, + { + "data": { + "text/plain": [ + "({'vocab_size': 410796,\n", + " 'num_filters': 128,\n", + " 'maxlen': 100,\n", + " 'kernel_size': 7,\n", + " 'embedding_dim': 50},)" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from keras.wrappers.scikit_learn import KerasClassifier\n", + "from sklearn.model_selection import RandomizedSearchCV\n", + "\n", + "# main settings\n", + "epochs = 20\n", + "embedding_dim = 50\n", + "maxlen = 100\n", + "\n", + "sentences = data['cleaned_string'].values\n", + "y = data['Effectiveness'].values\n", + "\n", + "# train-test split\n", + "sentences_train, sentences_test, y_train, y_test = train_test_split(sentences, y, test_size=0.25, random_state=1000)\n", + "\n", + "# tokenize words\n", + "tokenizer = Tokenizer(num_words=5000)\n", + "tokenizer.fit_on_texts(sentences_train)\n", + "X_train = tokenizer.texts_to_sequences(sentences_train)\n", + "X_test = tokenizer.texts_to_sequences(sentences_test)\n", + "\n", + "# add 1 because of reserved 0 index\n", + "vocab_size = len(tokenizer.word_index) + 1\n", + "\n", + "# pad sequences with zeros\n", + "X_train = pad_sequences(X_train, padding='post', maxlen=maxlen)\n", + "X_test = pad_sequences(X_test, padding='post', maxlen=maxlen)\n", + "\n", + "# parameter grid for grid search\n", + "param_grid = dict(num_filters=[32, 64, 128],\n", + " kernel_size=[3, 5, 7],\n", + " vocab_size=[vocab_size],\n", + " embedding_dim=[embedding_dim],\n", + " maxlen=[maxlen])\n", + "\n", + "model = KerasClassifier(build_fn=create_model,\n", + " epochs=epochs, batch_size=10,\n", + " verbose=False)\n", + "\n", + "grid = RandomizedSearchCV(estimator=model, param_distributions=param_grid, cv=3, verbose=1, n_iter=5)\n", + "\n", + "grid_result = grid.fit(X_train, y_train)\n", + "\n", + "# Evaluate testing set\n", + "test_accuracy = grid.score(X_test, y_test)\n", + "grid_result.best_score_\n", + "grid_result.best_params_" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}