{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction: Getting Started with SVM\n", "In this notebook, we explain to download the dataset and getting started with all the predictive tasks using Support Vector Machine. We will be extracting spectral features, specifically 6 rhythmic features - total power in 6 frequency bands, namely, Delta (0.5-4 Hz), Theta (4-8 Hz), Alpha (8-14 Hz), Beta (14-30 Hz), Low Gamma (30-47 Hz), and High Gamma (47-64 Hz). For preprocessing, we filter EEG first with 0.5 Hz highpass and then remove Artifact with ICA based approach. " ] }, { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T12:52:49.613138Z", "start_time": "2020-05-22T12:52:47.677570Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T12:52:51.109772Z", "start_time": "2020-05-22T12:52:50.271005Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PhyAAt Processing lib Loaded...\n", "Version : 0.0.2\n" ] } ], "source": [ "#!pip install phyaat # if not installed yet\n", "\n", "import phyaat\n", "print('Version :' ,phyaat.__version__)\n", "import phyaat as ph" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download Data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T12:53:13.791404Z", "start_time": "2020-05-22T12:53:07.545858Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%[|][##################################################] S1\r" ] } ], "source": [ "# Download dataset of one subject only (subject=1)\n", "# To download data of all the subjects use subject =-1 or for specify for one e.g.subject=10\n", "\n", "dirPath = ph.download_data(baseDir='../PhyAAt_Data', subject=1,verbose=0,overwrite=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Locate the subject's file" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T12:53:53.823637Z", "start_time": "2020-05-22T12:53:53.813091Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total Subjects : 1\n" ] }, { "data": { "text/plain": [ "{'sigFile': '../PhyAAt_Data/phyaat_dataset/Signals/S1/S1_Signals.csv',\n", " 'txtFile': '../PhyAAt_Data/phyaat_dataset/Signals/S1/S1_Textscore.csv'}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "baseDir='../PhyAAt_Data' # or dirPath return path from above\n", "\n", "#returns a dictionary containing file names of all the subjects available in baseDir\n", "SubID = ph.ReadFilesPath(baseDir) \n", "\n", "#check files of subject=1\n", "SubID[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading data and preprocessing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create Subj (obj) with data of Subject=1" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T12:54:01.271048Z", "start_time": "2020-05-22T12:53:59.548714Z" } }, "outputs": [], "source": [ "# Create a Subj holding dataset of subject=1\n", "\n", "Subj = ph.Subject(SubID[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Filtering - removing DC" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T12:59:56.614948Z", "start_time": "2020-05-22T12:59:52.708653Z" } }, "outputs": [], "source": [ "#filtering with highpass filter of cutoff frequency 0.5Hz\n", "\n", "Subj.filter_EEG(band =[0.5],btype='highpass',order=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Artifact removal using ICA [ ~6mins]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:08:24.116527Z", "start_time": "2020-05-22T13:02:02.421303Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ICA Artifact Removal : extended-infomax\n", "100%|####################################################################################################|\n" ] } ], "source": [ "#Remving Artifact using ICA, setting window size to 1280 (10sec), which is larg, but takes less time\n", "\n", "Subj.correct(method='ICA',verbose=1,winsize=128*10) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature Extraction - Rhythmic Features [~2min]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:12:22.957813Z", "start_time": "2020-05-22T13:09:40.534782Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "100%|##################################################|100\\100|Sg - 0\n", "Done..\n", "100%|##################################################|100\\100|Sg - 1\n", "Done..\n", "100%|##################################################|100\\100|Sg - 2\n", "Done..\n", "100%|##################################################|43\\43|Sg - 0\n", "Done..\n", "100%|##################################################|43\\43|Sg - 1\n", "Done..\n", "100%|##################################################|43\\43|Sg - 2\n", "Done..\n", "DataShape: (290, 84) (290, 4) (120, 84) (120, 4)\n" ] } ], "source": [ "# setting task=-1, does extract the features from all the segmensts for all the four tasks and \n", "# returns y_train as (n,4), one coulum for each task. Next time extracting Xy for any particular\n", "# task won't extract the features agains, unless you force it by setting 'redo'=True.\n", "\n", "X_train,y_train,X_test, y_test = Subj.getXy_eeg(task=-1)\n", "\n", "print('DataShape: ',X_train.shape,y_train.shape,X_test.shape, y_test.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predictive Modeling with SVM" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:15:13.398531Z", "start_time": "2020-05-22T13:15:13.387190Z" } }, "outputs": [], "source": [ "from sklearn import svm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### T4 Task: LWR classification" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:16:44.863900Z", "start_time": "2020-05-22T13:16:44.850700Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DataShape: (290, 84) (290,) (120, 84) (120,)\n", "\n", "Class labels : [0 1 2]\n" ] } ], "source": [ "X_train,y_train, X_test,y_test = Subj.getXy_eeg(task=4)\n", "\n", "print('DataShape: ',X_train.shape,y_train.shape,X_test.shape, y_test.shape)\n", "print('\\nClass labels :',np.unique(y_train))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:16:51.506165Z", "start_time": "2020-05-22T13:16:51.464835Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Accuracy: 0.9551724137931035\n", "Testing Accuracy: 0.875\n" ] } ], "source": [ "# Normalization - SVM works well with normalized features\n", "means = X_train.mean(0)\n", "std = X_train.std(0)\n", "X_train = (X_train-means)/std\n", "X_test = (X_test-means)/std\n", "\n", "\n", "# Training\n", "clf = svm.SVC(kernel='rbf', C=1,gamma='auto')\n", "clf.fit(X_train,y_train)\n", "\n", "# Predition\n", "ytp = clf.predict(X_train)\n", "ysp = clf.predict(X_test)\n", "\n", "# Evaluation\n", "T4_trac = np.mean(y_train==ytp)\n", "T4_tsac = np.mean(y_test==ysp)\n", "print('Training Accuracy:',T4_trac)\n", "print('Testing Accuracy:',T4_tsac)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### T3 Task: Semanticity classification" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:17:15.909905Z", "start_time": "2020-05-22T13:17:15.902393Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DataShape: (100, 84) (100,) (43, 84) (43,)\n", "\n", "Class labels : [0 1]\n" ] } ], "source": [ "X_train,y_train, X_test,y_test = Subj.getXy_eeg(task=3)\n", "\n", "print('DataShape: ',X_train.shape,y_train.shape,X_test.shape, y_test.shape)\n", "print('\\nClass labels :',np.unique(y_train))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:17:44.998304Z", "start_time": "2020-05-22T13:17:44.976738Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Accuracy: 0.86\n", "Testing Accuracy: 0.6046511627906976\n" ] } ], "source": [ "# Normalization - SVM works well with normalized features\n", "means = X_train.mean(0)\n", "std = X_train.std(0)\n", "X_train = (X_train-means)/std\n", "X_test = (X_test-means)/std\n", "\n", "\n", "# Training\n", "clf = svm.SVC(kernel='rbf', C=1,gamma='auto')\n", "clf.fit(X_train,y_train)\n", "\n", "# Predition\n", "ytp = clf.predict(X_train)\n", "ysp = clf.predict(X_test)\n", "\n", "\n", "# Evaluation\n", "T3_trac = np.mean(y_train==ytp)\n", "T3_tsac = np.mean(y_test==ysp)\n", "print('Training Accuracy:',T3_trac)\n", "print('Testing Accuracy:',T3_tsac)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### T2 Task: Noise level prediction : Regression" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:24:28.385511Z", "start_time": "2020-05-22T13:24:28.374990Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DataShape: (100, 84) (100,) (43, 84) (43,)\n", "\n", "Noise levels : [ -6 -3 0 3 6 1000]\n", "New Noise levels : [-6 -3 0 3 6 10]\n" ] } ], "source": [ "X_train,y_train, X_test,y_test = Subj.getXy_eeg(task=2)\n", "\n", "print('DataShape: ',X_train.shape,y_train.shape,X_test.shape, y_test.shape)\n", "print('\\nNoise levels :',np.unique(y_train))\n", "\n", "#change 1000 dB to 10 dB\n", "y_train[y_train==1000]=10\n", "y_test[y_test==1000]=10\n", "\n", "print('New Noise levels :',np.unique(y_train))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:25:51.464007Z", "start_time": "2020-05-22T13:25:51.441827Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training MAE: 3.9959210189119596\n", "Testing MAE: 4.692983467091375\n" ] } ], "source": [ "# Normalization - SVM works well with normalized features\n", "means = X_train.mean(0)\n", "std = X_train.std(0)\n", "X_train = (X_train-means)/std\n", "X_test = (X_test-means)/std\n", "\n", "\n", "# Training\n", "clf = svm.SVR(kernel='rbf', C=1,gamma='auto')\n", "clf.fit(X_train,y_train)\n", "\n", "# Predition\n", "ytp = clf.predict(X_train)\n", "ysp = clf.predict(X_test)\n", "\n", "# Evaluation\n", "T2_tre = np.mean(np.abs(y_train-ytp))\n", "T2_tse = np.mean(np.abs(y_test-ysp))\n", "print('Training MAE:',T2_tre)\n", "print('Testing MAE:',T2_tse)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### T1 Task: Attention Level prediction: Regression" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:26:34.815699Z", "start_time": "2020-05-22T13:26:34.803815Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DataShape: (100, 84) (100,) (43, 84) (43,)\n", "\n", "Attention levels:\n", " [ 0 7 12 14 15 18 20 22 25 28 33 37 38 42 44 45 46 50\n", " 54 60 62 66 71 72 75 76 80 83 85 87 88 100]\n", "\n", "New Attention levels:\n", " [ 0 10 20 30 40 50 60 70 80 100]\n" ] } ], "source": [ "X_train,y_train, X_test,y_test = Subj.getXy_eeg(task=1)\n", "\n", "print('DataShape: ',X_train.shape,y_train.shape,X_test.shape, y_test.shape)\n", "print('\\nAttention levels:\\n',np.unique(y_train))\n", "\n", "# Round off around 10\n", "\n", "y_train = 10*(y_train//10)\n", "y_test = 10*(y_test//10)\n", "\n", "print('\\nNew Attention levels:\\n',np.unique(y_train))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T13:26:59.732496Z", "start_time": "2020-05-22T13:26:59.714559Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training MAE: 30.318536004889328\n", "Testing MAE: 32.7156301374038\n" ] } ], "source": [ "# Normalization - SVM works well with normalized features\n", "means = X_train.mean(0)\n", "std = X_train.std(0)\n", "X_train = (X_train-means)/std\n", "X_test = (X_test-means)/std\n", "\n", "\n", "# Training\n", "clf = svm.SVR(kernel='rbf', C=1,gamma='auto')\n", "clf.fit(X_train,y_train)\n", "\n", "# Predition\n", "ytp = clf.predict(X_train)\n", "ysp = clf.predict(X_test)\n", "\n", "# Evaluation\n", "T1_tre = np.mean(np.abs(y_train-ytp))\n", "T1_tse = np.mean(np.abs(y_test-ysp))\n", "print('Training MAE:',T1_tre)\n", "print('Testing MAE:',T1_tse)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## All results" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "ExecuteTime": { "end_time": "2020-05-22T17:17:54.322184Z", "start_time": "2020-05-22T17:17:53.813512Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(13,3))\n", "plt.subplot(141)\n", "plt.bar(1, [T1_tre])\n", "plt.bar(2, [T1_tse])\n", "plt.xlim([0,3])\n", "plt.xticks([])\n", "plt.xlabel('T1: Attention Level',fontsize=13)\n", "plt.ylabel('MAE')\n", "\n", "plt.subplot(142)\n", "plt.bar(1, [T2_tre])\n", "plt.bar(2, [T2_tse])\n", "plt.xticks([])\n", "plt.xlabel('T2: Noise Level',fontsize=13)\n", "plt.ylabel('MAE')\n", "\n", "\n", "plt.xlim([0,3])\n", "plt.subplot(143)\n", "plt.bar(1, [T3_trac])\n", "plt.bar(2, [T3_tsac])\n", "plt.xticks([])\n", "plt.xlabel('T3: Semanticity',fontsize=13)\n", "plt.ylabel('Accuracy')\n", "\n", "plt.xlim([0,3])\n", "plt.subplot(144)\n", "plt.bar(1, [T4_trac],label='Training')\n", "plt.bar(2, [T4_tsac],label='Testing')\n", "plt.xlim([0,3])\n", "plt.xticks([])\n", "plt.xlabel('T4: LWR',fontsize=13)\n", "plt.ylabel('Accuracy')\n", "plt.legend(bbox_to_anchor=(1,1))\n", "plt.subplots_adjust(wspace=0.5)\n", "fig.suptitle(\"Predictive Tasks with SVM\", fontsize=\"x-large\")\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.7.4" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "273.188px" }, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }