├── depV.pdf
├── Participant-1 - Colaboratory.pdf
├── README.md
├── Copy_of_STEP_1_Channel_Selection_(CSV_File_creation)_without_details.ipynb
├── Copy_of_channel_selection_and_feature_selection_BCI_arousal.ipynb
├── Participant_1_,Arousal,80_20.ipynb
└── Copy_of_channel_selection_and_feature_selection_BCI.ipynb
/depV.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dasparagjyoti/EEG-Channel-Selection-for-Emotion-Recognition/HEAD/depV.pdf
--------------------------------------------------------------------------------
/Participant-1 - Colaboratory.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dasparagjyoti/EEG-Channel-Selection-for-Emotion-Recognition/HEAD/Participant-1 - Colaboratory.pdf
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # EEG Channel Selection for Emotion Recognition
2 |
3 | - Developed an best EEG Channel Selection Model Using Technique Filter and Wrapper
4 | - Reduced the dimensionality of the EEG data by removing redundant and irrelevant EEG channels and select the subset of optimal channels that carries the most discriminative information
5 |
6 | # Working Methodology(Flowchart)
7 |
8 | 
9 |
10 | # Results
11 | 
12 |
13 | 
14 |
15 |
16 | 
17 |
18 |
19 | 
20 |
21 | 
22 |
--------------------------------------------------------------------------------
/Copy_of_STEP_1_Channel_Selection_(CSV_File_creation)_without_details.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Copy of STEP: 1--Channel Selection (CSV File creation) without details",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "display_name": "Python 3",
13 | "name": "python3"
14 | },
15 | "language_info": {
16 | "name": "python"
17 | }
18 | },
19 | "cells": [
20 | {
21 | "cell_type": "markdown",
22 | "metadata": {
23 | "id": "view-in-github",
24 | "colab_type": "text"
25 | },
26 | "source": [
27 | "
"
28 | ]
29 | },
30 | {
31 | "cell_type": "code",
32 | "metadata": {
33 | "colab": {
34 | "base_uri": "https://localhost:8080/"
35 | },
36 | "id": "Azg9wbOhz1XJ",
37 | "outputId": "f6c7f265-3eb6-4c9e-99d0-78afd6ec6c8f"
38 | },
39 | "source": [
40 | "from google.colab import drive \n",
41 | "drive._mount('/content/drive')\n",
42 | "!ls /content/drive/MyDrive/Deap"
43 | ],
44 | "execution_count": null,
45 | "outputs": [
46 | {
47 | "output_type": "stream",
48 | "name": "stdout",
49 | "text": [
50 | "Mounted at /content/drive\n",
51 | "s01.dat s05.dat s09.dat s13.dat s17.dat s21.dat s25.dat s29.dat\n",
52 | "s02.dat s06.dat s10.dat s14.dat s18.dat s22.dat s26.dat s30.dat\n",
53 | "s03.dat s07.dat s11.dat s15.dat s19.dat s23.dat s27.dat s31.dat\n",
54 | "s04.dat s08.dat s12.dat s16.dat s20.dat s24.dat s28.dat s32.dat\n"
55 | ]
56 | }
57 | ]
58 | },
59 | {
60 | "cell_type": "code",
61 | "metadata": {
62 | "id": "CYrTggoIbl42"
63 | },
64 | "source": [
65 | "import os\n",
66 | "import time\n",
67 | "import pickle\n",
68 | "import pandas as pd\n",
69 | "import numpy as np\n",
70 | "from scipy import signal\n",
71 | "from scipy.signal import welch\n",
72 | "from scipy.integrate import simps\n",
73 | "from scipy.stats import f_oneway\n",
74 | "\n",
75 | "from tqdm import tqdm\n",
76 | "\n",
77 | "#!pip install scikit-learn==0.20.3\n",
78 | "from sklearn.model_selection import train_test_split\n",
79 | "from sklearn.preprocessing import StandardScaler\n",
80 | "from sklearn.svm import SVC\n",
81 | "from sklearn.neighbors import KNeighborsClassifier\n",
82 | "from sklearn.neural_network import MLPClassifier\n",
83 | "from sklearn import model_selection\n",
84 | "from sklearn.metrics import classification_report, confusion_matrix\n",
85 | "import itertools\n",
86 | "from sklearn.metrics import accuracy_score\n",
87 | "from sklearn.metrics import f1_score\n",
88 | "from sklearn.metrics import precision_recall_curve\n",
89 | "\n",
90 | "from scipy.signal import butter, lfilter, sosfilt, sosfreqz, freqz\n",
91 | "from sklearn.decomposition import FastICA\n",
92 | "\n",
93 | "import matplotlib.pyplot as plt\n",
94 | "from matplotlib import cm\n",
95 | "import seaborn as sns\n",
96 | "import pandas as pd\n",
97 | "from sklearn import preprocessing\n",
98 | "%matplotlib inline"
99 | ],
100 | "execution_count": null,
101 | "outputs": []
102 | },
103 | {
104 | "cell_type": "code",
105 | "metadata": {
106 | "id": "udO6VWBziiQW"
107 | },
108 | "source": [
109 | "def butter_bandpass(lowcut, highcut, fs, order = 3):\n",
110 | " nyq = 0.5 * fs\n",
111 | " low = lowcut / nyq\n",
112 | " high = highcut / nyq\n",
113 | " b, a = butter(order, [low, high], btype='band', analog=False)\n",
114 | " return b, a\n",
115 | "def butter_bandpass_filter(data, lowcut, highcut, fs, order = 5):\n",
116 | " b, a = butter_bandpass(lowcut, highcut, fs, order = order)\n",
117 | " y = lfilter(b, a, data)\n",
118 | " return y\n",
119 | "def eye_movement_artifact(shyam): # parameter must be an 2D array like 32_channels*7860_data\n",
120 | " # Inverse that 2D array\n",
121 | " shyam = shyam.transpose()\n",
122 | " ica = FastICA()\n",
123 | " comps = ica.fit_transform(shyam)\n",
124 | " # invert the array \n",
125 | " data_after = comps.transpose()\n",
126 | " return data_after\n",
127 | "def signal_pro(data):\n",
128 | " mean_value, fs, lowcut, highcut = 0, 128, 0.5, 45\n",
129 | " # do the bandpass filter\n",
130 | " for i in range(40):\n",
131 | " for j in range(32):\n",
132 | " data[i][j] = butter_bandpass_filter(data[i][j], lowcut, highcut, fs, order=5)\n",
133 | " # creating dummy variable which contains same data information \n",
134 | " error_eye = np.zeros((40,32,7680))\n",
135 | " new_data = np.zeros((40,32,7680))\n",
136 | " for i in range(40):\n",
137 | " for j in range(32):\n",
138 | " for k in range(7680):\n",
139 | " error_eye[i][j][k] = data[i][j][k]\n",
140 | " new_data[i][j][k] = data[i][j][k]\n",
141 | " for i in range(40):\n",
142 | " error_eye[i] = eye_movement_artifact(error_eye[i])\n",
143 | " for i in range(40):\n",
144 | " for j in range(32):\n",
145 | " mean_value = np.mean(error_eye[i][j])\n",
146 | " for k in range(7680):\n",
147 | " if(data[i][j][k] > 0.0):\n",
148 | " # data is positive\n",
149 | " new_data[i][j][k] = data[i][j][k] - abs(mean_value)\n",
150 | " else: # data is negative\n",
151 | " new_data[i][j][k] = data[i][j][k] + abs(mean_value)\n",
152 | " return new_data"
153 | ],
154 | "execution_count": null,
155 | "outputs": []
156 | },
157 | {
158 | "cell_type": "code",
159 | "metadata": {
160 | "id": "z1ZQs2q3Hnno"
161 | },
162 | "source": [
163 | "def bandpower(data, sf, band, window_sec=None, relative=False):\n",
164 | " band = np.asarray(band)\n",
165 | " low, high = band\n",
166 | " # Define window length\n",
167 | " if window_sec is not None:\n",
168 | " nperseg = window_sec * sf\n",
169 | " else:\n",
170 | " nperseg = (2 / low) * sf\n",
171 | " # Compute the modified periodogram (Welch)\n",
172 | " freqs, psd = welch(data, sf, nperseg=nperseg)\n",
173 | " # Frequency resolution\n",
174 | " freq_res = freqs[1] - freqs[0]\n",
175 | " # Find closest indices of band in frequency vector\n",
176 | " idx_band = np.logical_and(freqs >= low, freqs <= high)\n",
177 | " # Integral approximation of the spectrum using Simpson's rule.\n",
178 | " bp = simps(psd[idx_band], dx=freq_res)\n",
179 | " if relative:\n",
180 | " bp /= simps(psd, dx=freq_res)\n",
181 | " return bp"
182 | ],
183 | "execution_count": null,
184 | "outputs": []
185 | },
186 | {
187 | "cell_type": "code",
188 | "metadata": {
189 | "id": "CN81MihX5ZbU"
190 | },
191 | "source": [
192 | "def get_band_power(trial, channel, band):\n",
193 | " bd = (0,0)\n",
194 | " if (band == \"theta\"): # drownsiness, emotional connection, intuition, creativity\n",
195 | " bd = (4,8)\n",
196 | " elif (band == \"alpha\"): # reflection, relaxation\n",
197 | " bd = (8,12)\n",
198 | " elif (band == \"beta\"): # concentration, problem solving, memory\n",
199 | " bd = (12,30)\n",
200 | " elif (band == \"gamma\"): # cognition, perception, learning, multi-tasking\n",
201 | " bd = (30,48)\n",
202 | " return bandpower(filter_data[trial,channel], 128, bd)"
203 | ],
204 | "execution_count": null,
205 | "outputs": []
206 | },
207 | {
208 | "cell_type": "code",
209 | "metadata": {
210 | "id": "I4DEPV9z4a4q"
211 | },
212 | "source": [
213 | "def get_csf_file(subject, filter_data):\n",
214 | " try:\n",
215 | " mypath = \"/content/drive/MyDrive/Sequential methods for channel selection/our code/\" + subject\n",
216 | " os.mkdir(mypath)\n",
217 | " except Exception as e:\n",
218 | " print(e)\n",
219 | " #---------------------------------------- Theta ---------------------------------------\n",
220 | " eeg_theta = []\n",
221 | " for i in range (len(filter_data)):\n",
222 | " for j in range (len(filter_data[0])):\n",
223 | " eeg_theta.append(get_band_power(i,j,\"theta\"))\n",
224 | " eeg_theta = np.reshape(eeg_theta, (40, 32))\n",
225 | " df_theta = pd.DataFrame(data = eeg_theta, columns=eeg_channels)\n",
226 | " # Normalize the datset\n",
227 | " draft = []\n",
228 | " for i in range(0, len(eeg_channels)):\n",
229 | " draft.append(eeg_channels[i] + '_theta')\n",
230 | " min_max_scaler = preprocessing.MinMaxScaler()\n",
231 | " df_theta = min_max_scaler.fit_transform(df_theta)\n",
232 | " df_theta = pd.DataFrame(df_theta, columns = draft)\n",
233 | " df_theta.to_csv(mypath + \"/\" + subject + \"_theta.csv\", index = False, encoding = 'utf-8-sig')\n",
234 | " #---------------------------------------- Alpha --------------------------------------------------\n",
235 | " eeg_alpha = []\n",
236 | " for i in range (len(filter_data)):\n",
237 | " for j in range (len(filter_data[0])):\n",
238 | " eeg_alpha.append(get_band_power(i,j,\"alpha\"))\n",
239 | " eeg_alpha = np.reshape(eeg_alpha, (40, 32))\n",
240 | "\n",
241 | " df_alpha = pd.DataFrame(data = eeg_alpha, columns=eeg_channels)\n",
242 | " draft = []\n",
243 | " for i in range(0, len(eeg_channels)):\n",
244 | " draft.append(eeg_channels[i] + '_alpha')\n",
245 | " min_max_scaler = preprocessing.MinMaxScaler()\n",
246 | " df_alpha = min_max_scaler.fit_transform(df_alpha)\n",
247 | " df_alpha = pd.DataFrame(df_alpha, columns = draft)\n",
248 | " df_alpha.to_csv(mypath + \"/\" + subject + \"_alpha.csv\", index=False, encoding='utf-8-sig')\n",
249 | " #---------------------------------------- Beta----------------------------------------------------\n",
250 | " eeg_beta = []\n",
251 | " for i in range (len(filter_data)):\n",
252 | " for j in range (len(filter_data[0])):\n",
253 | " eeg_beta.append(get_band_power(i,j,\"beta\"))\n",
254 | " eeg_beta = np.reshape(eeg_beta, (40, 32))\n",
255 | " df_beta = pd.DataFrame(data = eeg_beta, columns=eeg_channels)\n",
256 | " draft = []\n",
257 | " for i in range(0, len(eeg_channels)):\n",
258 | " draft.append(eeg_channels[i] + '_beta')\n",
259 | " min_max_scaler = preprocessing.MinMaxScaler()\n",
260 | " df_beta = min_max_scaler.fit_transform(df_beta)\n",
261 | " df_beta = pd.DataFrame(df_beta, columns = draft)\n",
262 | " df_beta.to_csv(mypath + \"/\" + subject + \"_beta.csv\", index=False, encoding='utf-8-sig')\n",
263 | " #---------------------------------------- Gamma-----------------------------------------------------\n",
264 | " eeg_gamma = []\n",
265 | " for i in range (len(filter_data)):\n",
266 | " for j in range (len(filter_data[0])):\n",
267 | " eeg_gamma.append(get_band_power(i,j,\"gamma\"))\n",
268 | " eeg_gamma = np.reshape(eeg_gamma, (40, 32))\n",
269 | " df_gamma = pd.DataFrame(data = eeg_gamma, columns=eeg_channels)\n",
270 | " draft = []\n",
271 | " for i in range(0, len(eeg_channels)):\n",
272 | " draft.append(eeg_channels[i] + '_gamma')\n",
273 | " min_max_scaler = preprocessing.MinMaxScaler()\n",
274 | " df_gamma = min_max_scaler.fit_transform(df_gamma)\n",
275 | " df_gamma = pd.DataFrame(df_gamma, columns = draft)\n",
276 | " df_gamma.to_csv(mypath + \"/\" + subject + \"_gamma.csv\", index=False, encoding='utf-8-sig')\n",
277 | " #---------------------------------------- All Band -----------------------------------------------------\n",
278 | " frames = [df_theta, df_alpha, df_beta, df_gamma]\n",
279 | " all_bands = pd.concat(frames, axis=1)\n",
280 | " all_bands.shape\n",
281 | " all_bands.to_csv(mypath + \"/\" + subject + \".csv\", index=False, encoding='utf-8-sig')"
282 | ],
283 | "execution_count": null,
284 | "outputs": []
285 | },
286 | {
287 | "cell_type": "code",
288 | "metadata": {
289 | "id": "lZehUFjMT-UP"
290 | },
291 | "source": [
292 | "subject_names = [\"s01\", \"s02\", \"s03\", \"s04\", \"s05\", \"s06\", \"s07\", \"s08\", \"s09\", \"s10\", \"s11\", \"s12\", \"s13\", \"s14\", \"s15\", \"s16\", \"s17\", \"s18\", \"s19\", \"s20\", \"s21\",\n",
293 | " \"s22\", \"s23\", \"s24\", \"s25\", \"s26\", \"s27\", \"s28\", \"s29\", \"s30\", \"s31\", \"s32\"]"
294 | ],
295 | "execution_count": null,
296 | "outputs": []
297 | },
298 | {
299 | "cell_type": "code",
300 | "metadata": {
301 | "id": "00R0E0kBcd0w"
302 | },
303 | "source": [
304 | "for subject in subject_names[1:]:\n",
305 | " eeg_channels = np.array([\"Fp1\", \"AF3\", \"F3\", \"F7\", \"FC5\", \"FC1\", \"C3\", \"T7\", \"CP5\", \"CP1\", \"P3\", \"P7\", \"PO3\", \"O1\", \"Oz\", \"Pz\", \"Fp2\", \"AF4\", \"Fz\", \"F4\", \"F8\", \"FC6\", \"FC2\", \"Cz\", \"C4\", \"T8\", \"CP6\", \"CP2\", \"P4\", \"P8\", \"PO4\", \"O2\"])\n",
306 | " with open('/content/drive/MyDrive/Deap/' + subject + '.dat', 'rb') as f:\n",
307 | " raw_data = pickle.load(f, encoding = 'latin1')\n",
308 | " data = raw_data['data']\n",
309 | " reduced_eeg_data = data[0:40, 0:32, 384:8064]\n",
310 | " filter_data = signal_pro(data)\n",
311 | " get_csf_file(subject, filter_data)"
312 | ],
313 | "execution_count": null,
314 | "outputs": []
315 | },
316 | {
317 | "cell_type": "code",
318 | "metadata": {
319 | "id": "M1wqMXLl0u36"
320 | },
321 | "source": [
322 | ""
323 | ],
324 | "execution_count": null,
325 | "outputs": []
326 | }
327 | ]
328 | }
--------------------------------------------------------------------------------
/Copy_of_channel_selection_and_feature_selection_BCI_arousal.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Copy of channel selection and feature selection BCI arousal",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "display_name": "Python 3",
13 | "name": "python3"
14 | },
15 | "language_info": {
16 | "name": "python"
17 | }
18 | },
19 | "cells": [
20 | {
21 | "cell_type": "markdown",
22 | "metadata": {
23 | "id": "view-in-github",
24 | "colab_type": "text"
25 | },
26 | "source": [
27 | "
"
28 | ]
29 | },
30 | {
31 | "cell_type": "markdown",
32 | "metadata": {
33 | "id": "q7tNC6EX54Fm"
34 | },
35 | "source": [
36 | "#**1. Data Preprocessing**#"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "metadata": {
42 | "id": "q5UDY40xrsZF"
43 | },
44 | "source": [
45 | "import pandas as pd\n",
46 | "import numpy as np\n",
47 | "\n",
48 | "import matplotlib.pyplot as plt\n",
49 | "import seaborn as sns\n",
50 | "%matplotlib inline\n",
51 | "\n",
52 | "from sklearn.model_selection import train_test_split\n",
53 | "\n",
54 | "from sklearn.feature_selection import chi2\n",
55 | "from sklearn.feature_selection import SelectKBest, SelectPercentile\n",
56 | "import warnings\n",
57 | "warnings.filterwarnings(\"ignore\")"
58 | ],
59 | "execution_count": null,
60 | "outputs": []
61 | },
62 | {
63 | "cell_type": "code",
64 | "metadata": {
65 | "colab": {
66 | "base_uri": "https://localhost:8080/"
67 | },
68 | "id": "Azg9wbOhz1XJ",
69 | "outputId": "f98d59ca-a412-40dc-f2ae-5b67d41b4f47"
70 | },
71 | "source": [
72 | "from google.colab import drive\n",
73 | "import pickle \n",
74 | "drive._mount('/content/drive')\n",
75 | "drive.mount('/content/drive', force_remount=True)"
76 | ],
77 | "execution_count": null,
78 | "outputs": [
79 | {
80 | "output_type": "stream",
81 | "name": "stdout",
82 | "text": [
83 | "Mounted at /content/drive\n",
84 | "Mounted at /content/drive\n"
85 | ]
86 | }
87 | ]
88 | },
89 | {
90 | "cell_type": "code",
91 | "metadata": {
92 | "id": "XpDYOiyPQ28F"
93 | },
94 | "source": [
95 | "with open('/content/drive/MyDrive/Deap/s01.dat', 'rb') as f:\n",
96 | " raw_data = pickle.load(f, encoding='latin1')"
97 | ],
98 | "execution_count": null,
99 | "outputs": []
100 | },
101 | {
102 | "cell_type": "code",
103 | "metadata": {
104 | "colab": {
105 | "base_uri": "https://localhost:8080/"
106 | },
107 | "id": "Smqczw7Rtm8k",
108 | "outputId": "ec80b7bd-31e6-4445-d536-b86ebc28b68c"
109 | },
110 | "source": [
111 | "pip install skfeature-chappers"
112 | ],
113 | "execution_count": null,
114 | "outputs": [
115 | {
116 | "output_type": "stream",
117 | "name": "stdout",
118 | "text": [
119 | "Collecting skfeature-chappers\n",
120 | " Downloading skfeature_chappers-1.1.0-py3-none-any.whl (66 kB)\n",
121 | "\u001b[?25l\r\u001b[K |█████ | 10 kB 21.1 MB/s eta 0:00:01\r\u001b[K |█████████▉ | 20 kB 26.5 MB/s eta 0:00:01\r\u001b[K |██████████████▉ | 30 kB 12.9 MB/s eta 0:00:01\r\u001b[K |███████████████████▊ | 40 kB 9.6 MB/s eta 0:00:01\r\u001b[K |████████████████████████▊ | 51 kB 5.1 MB/s eta 0:00:01\r\u001b[K |█████████████████████████████▋ | 61 kB 5.3 MB/s eta 0:00:01\r\u001b[K |████████████████████████████████| 66 kB 2.6 MB/s \n",
122 | "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from skfeature-chappers) (1.19.5)\n",
123 | "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.7/dist-packages (from skfeature-chappers) (1.0.1)\n",
124 | "Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from skfeature-chappers) (1.1.5)\n",
125 | "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->skfeature-chappers) (2.8.2)\n",
126 | "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->skfeature-chappers) (2018.9)\n",
127 | "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->skfeature-chappers) (1.15.0)\n",
128 | "Requirement already satisfied: scipy>=1.1.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->skfeature-chappers) (1.4.1)\n",
129 | "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->skfeature-chappers) (3.0.0)\n",
130 | "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->skfeature-chappers) (1.1.0)\n",
131 | "Installing collected packages: skfeature-chappers\n",
132 | "Successfully installed skfeature-chappers-1.1.0\n"
133 | ]
134 | }
135 | ]
136 | },
137 | {
138 | "cell_type": "code",
139 | "metadata": {
140 | "id": "kxJTyBtEeqHy"
141 | },
142 | "source": [
143 | "import numpy as np\n",
144 | "from skfeature.utility.construct_W import construct_W\n",
145 | "from scipy.sparse import diags\n",
146 | "\n",
147 | "def fisher_score(X, y):\n",
148 | " \"\"\"\n",
149 | " This function implements the fisher score feature selection, steps are as follows:\n",
150 | " 1. Construct the affinity matrix W in fisher score way\n",
151 | " 2. For the r-th feature, we define fr = X(:,r), D = diag(W*ones), ones = [1,...,1]', L = D - W\n",
152 | " 3. Let fr_hat = fr - (fr'*D*ones)*ones/(ones'*D*ones)\n",
153 | " 4. Fisher score for the r-th feature is score = (fr_hat'*D*fr_hat)/(fr_hat'*L*fr_hat)-1\n",
154 | " Input\n",
155 | " -----\n",
156 | " X: {numpy array}, shape (n_samples, n_features)\n",
157 | " input data\n",
158 | " y: {numpy array}, shape (n_samples,)\n",
159 | " input class labels\n",
160 | " Output\n",
161 | " ------\n",
162 | " score: {numpy array}, shape (n_features,)\n",
163 | " fisher score for each feature\n",
164 | " Reference\n",
165 | " ---------\n",
166 | " He, Xiaofei et al. \"Laplacian Score for Feature Selection.\" NIPS 2005.\n",
167 | " Duda, Richard et al. \"Pattern classification.\" John Wiley & Sons, 2012.\n",
168 | " \"\"\"\n",
169 | "\n",
170 | " # Construct weight matrix W in a fisherScore way\n",
171 | " kwargs = {\"neighbor_mode\": \"supervised\", \"fisher_score\": True, 'y': y}\n",
172 | " W = construct_W(X, **kwargs)\n",
173 | "\n",
174 | " # build the diagonal D matrix from affinity matrix W\n",
175 | " D = np.array(W.sum(axis=1))\n",
176 | " L = W\n",
177 | " tmp = np.dot(np.transpose(D), X)\n",
178 | " D = diags(np.transpose(D), [0])\n",
179 | " Xt = np.transpose(X)\n",
180 | " t1 = np.transpose(np.dot(Xt, D.todense()))\n",
181 | " t2 = np.transpose(np.dot(Xt, L.todense()))\n",
182 | " # compute the numerator of Lr\n",
183 | " D_prime = np.sum(np.multiply(t1, X), 0) - np.multiply(tmp, tmp)/D.sum()\n",
184 | " # compute the denominator of Lr\n",
185 | " L_prime = np.sum(np.multiply(t2, X), 0) - np.multiply(tmp, tmp)/D.sum()\n",
186 | " # avoid the denominator of Lr to be 0\n",
187 | " D_prime[D_prime < 1e-12] = 10000\n",
188 | " lap_score = 1 - np.array(np.multiply(L_prime, 1/D_prime))[0, :]\n",
189 | "\n",
190 | " # compute fisher score from laplacian score, where fisher_score = 1/lap_score - 1\n",
191 | " score = 1.0/lap_score - 1\n",
192 | " return np.transpose(score)\n",
193 | "\n",
194 | "\n",
195 | "def feature_ranking(score):\n",
196 | " \"\"\"\n",
197 | " Rank features in descending order according to fisher score, the larger the fisher score, the more important the\n",
198 | " feature is\n",
199 | " \"\"\"\n",
200 | " idx = np.argsort(score, 0)\n",
201 | " return idx[::-1]"
202 | ],
203 | "execution_count": null,
204 | "outputs": []
205 | },
206 | {
207 | "cell_type": "code",
208 | "metadata": {
209 | "colab": {
210 | "base_uri": "https://localhost:8080/"
211 | },
212 | "id": "EpI-gFzRjgGT",
213 | "outputId": "95339fda-f57f-4936-d5fd-c5522d399db5"
214 | },
215 | "source": [
216 | "data = raw_data['data']\n",
217 | "labels = raw_data['labels']\n",
218 | "\n",
219 | "print(\"Labels: \", labels.shape) # trial x label\n",
220 | "print(\"Data: \", data.shape) # trial x channel x data"
221 | ],
222 | "execution_count": null,
223 | "outputs": [
224 | {
225 | "output_type": "stream",
226 | "name": "stdout",
227 | "text": [
228 | "Labels: (40, 4)\n",
229 | "Data: (40, 40, 8064)\n"
230 | ]
231 | }
232 | ]
233 | },
234 | {
235 | "cell_type": "code",
236 | "metadata": {
237 | "id": "FTfibgB5c63Y"
238 | },
239 | "source": [
240 | "\"\"\"\n",
241 | "em_labels = []\n",
242 | "for i in range(0, labels.shape[0]):\n",
243 | "\tif (labels[i][0]>5): #high valence\n",
244 | "\t\tif(labels[i][1]>5): # high arousal\n",
245 | "\t\t\tem_labels.append(1) # HVHA\n",
246 | "\t\telse:\n",
247 | "\t\t\tem_labels.append(0) # HVLA\n",
248 | "\telse: # low valence\n",
249 | "\t\tif(labels[i][1]>5): # high arousal\n",
250 | "\t\t\tem_labels.append(2) #LVHA\n",
251 | "\t\telse:\n",
252 | "\t\t\tem_labels.append(3) # LVLA\n",
253 | "\"\"\"\n",
254 | "em_labels = []\n",
255 | "for i in range(0, labels.shape[0]):\n",
256 | "\tif (labels[i][1]>5): #high valence\n",
257 | "\t\t\tem_labels.append(0) # HVHA\n",
258 | "\telse: # low valence\n",
259 | "\t\t\tem_labels.append(1)"
260 | ],
261 | "execution_count": null,
262 | "outputs": []
263 | },
264 | {
265 | "cell_type": "code",
266 | "metadata": {
267 | "colab": {
268 | "base_uri": "https://localhost:8080/"
269 | },
270 | "id": "3jCP0SMBc9iu",
271 | "outputId": "edd7af9d-7af0-4dbc-9c30-4da0583d840f"
272 | },
273 | "source": [
274 | "print(em_labels)"
275 | ],
276 | "execution_count": null,
277 | "outputs": [
278 | {
279 | "output_type": "stream",
280 | "name": "stdout",
281 | "text": [
282 | "[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]\n"
283 | ]
284 | }
285 | ]
286 | },
287 | {
288 | "cell_type": "markdown",
289 | "metadata": {
290 | "id": "eQlRP4LrOMlk"
291 | },
292 | "source": [
293 | "# Fisher's Score for Theta Band"
294 | ]
295 | },
296 | {
297 | "cell_type": "code",
298 | "metadata": {
299 | "id": "Na1SqsWbr2y1"
300 | },
301 | "source": [
302 | "# load dataset\n",
303 | "data_theta = pd.read_csv('/content/drive/MyDrive/1df_theta.csv')\n",
304 | "# features from all the channels from the theta band only\n",
305 | "data_theta.shape\n",
306 | "data_theta['videos'] = em_labels\n",
307 | "data_theta['videos'].unique()\n",
308 | "X = data_theta[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
309 | "# taking only first 32 channels (EEG signals)\n",
310 | "y = data_theta['videos']\n",
311 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
312 | "X_train = np.array(X_train)\n",
313 | "y_train = np.array(y_train)\n",
314 | "f_score_theta = fisher_score(X_train, y_train)"
315 | ],
316 | "execution_count": null,
317 | "outputs": []
318 | },
319 | {
320 | "cell_type": "markdown",
321 | "metadata": {
322 | "id": "6jeXnumcG2JB"
323 | },
324 | "source": [
325 | "# Fisher Score for Alpha Band"
326 | ]
327 | },
328 | {
329 | "cell_type": "code",
330 | "metadata": {
331 | "id": "C7fJ9fMdGVbQ"
332 | },
333 | "source": [
334 | "# load dataset\n",
335 | "data_alpha = pd.read_csv('/content/drive/MyDrive/2df_alpha.csv')\n",
336 | "# features from all the channels from the theta band only\n",
337 | "data_alpha.shape\n",
338 | "data_alpha['videos'] = em_labels\n",
339 | "data_alpha['videos'].unique()\n",
340 | "X = data_alpha[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
341 | "# taking only first 32 channels (EEG signals)\n",
342 | "y = data_alpha['videos']\n",
343 | "y.head()\n",
344 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
345 | "X_train = np.array(X_train)\n",
346 | "y_train = np.array(y_train)\n",
347 | "f_score_alpha = fisher_score(X_train, y_train)"
348 | ],
349 | "execution_count": null,
350 | "outputs": []
351 | },
352 | {
353 | "cell_type": "markdown",
354 | "metadata": {
355 | "id": "Np4pvMpaWAhN"
356 | },
357 | "source": [
358 | "# Fisher Score for Beta Band"
359 | ]
360 | },
361 | {
362 | "cell_type": "code",
363 | "metadata": {
364 | "id": "9LA2tAAslnGK"
365 | },
366 | "source": [
367 | "# load dataset\n",
368 | "data_beta = pd.read_csv('/content/drive/MyDrive/3df_beta.csv')\n",
369 | "# features from all the channels from the theta band only\n",
370 | "data_beta.shape\n",
371 | "data_beta['videos'] = em_labels\n",
372 | "data_beta['videos'].unique()\n",
373 | "X = data_beta[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
374 | "# taking only first 32 channels (EEG signals)\n",
375 | "y = data_beta['videos']\n",
376 | "X_train = np.array(X_train)\n",
377 | "y_train = np.array(y_train)\n",
378 | "f_score_beta = fisher_score(X_train, y_train)"
379 | ],
380 | "execution_count": null,
381 | "outputs": []
382 | },
383 | {
384 | "cell_type": "markdown",
385 | "metadata": {
386 | "id": "uxn9t3hDWEBw"
387 | },
388 | "source": [
389 | "# Fisher Score for Gamma Band"
390 | ]
391 | },
392 | {
393 | "cell_type": "code",
394 | "metadata": {
395 | "id": "7Q0uOFsDWEBx"
396 | },
397 | "source": [
398 | "# load dataset\n",
399 | "data_gamma = pd.read_csv('/content/drive/MyDrive/4df_gamma.csv')\n",
400 | "# features from all the channels from the theta band only\n",
401 | "data_gamma.shape\n",
402 | "data_gamma['videos'] = em_labels\n",
403 | "data_gamma['videos'].unique()\n",
404 | "X = data_gamma[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
405 | "# taking only first 32 channels (EEG signals)\n",
406 | "y = data_gamma['videos']\n",
407 | "y.head()\n",
408 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
409 | "X_train = np.array(X_train)\n",
410 | "y_train = np.array(y_train)\n",
411 | "f_score_gamma = fisher_score(X_train, y_train)"
412 | ],
413 | "execution_count": null,
414 | "outputs": []
415 | },
416 | {
417 | "cell_type": "markdown",
418 | "metadata": {
419 | "id": "sUoClL1YB5aW"
420 | },
421 | "source": [
422 | "# Total Avearge F-Score(Theta,Alpha,Beta,Gamma)"
423 | ]
424 | },
425 | {
426 | "cell_type": "code",
427 | "metadata": {
428 | "id": "LCtwrlPCB5C1"
429 | },
430 | "source": [
431 | "final_f_score = (f_score_theta + f_score_alpha + f_score_beta + f_score_gamma)/4"
432 | ],
433 | "execution_count": null,
434 | "outputs": []
435 | },
436 | {
437 | "cell_type": "code",
438 | "metadata": {
439 | "colab": {
440 | "base_uri": "https://localhost:8080/"
441 | },
442 | "id": "GB2MaoDXJC0O",
443 | "outputId": "66e2e79e-7c0c-452f-b069-fbd3d2796ccc"
444 | },
445 | "source": [
446 | "fvalues = pd.Series(final_f_score)\n",
447 | "X_train = pd.DataFrame(X_train)\n",
448 | "fvalues.index = X.columns\n",
449 | "fvalues.sort_values(ascending=False)\n",
450 | "fvalues.to_csv('fscore_final.csv')\n",
451 | "print(fvalues)"
452 | ],
453 | "execution_count": null,
454 | "outputs": [
455 | {
456 | "output_type": "stream",
457 | "name": "stdout",
458 | "text": [
459 | "Fp1 0.169451\n",
460 | "AF3 0.232807\n",
461 | "F3 0.257078\n",
462 | "F7 0.079412\n",
463 | "FC5 0.203454\n",
464 | "FC1 0.196043\n",
465 | "C3 0.187472\n",
466 | "T7 0.140773\n",
467 | "CP5 0.215465\n",
468 | "CP1 0.201009\n",
469 | "P3 0.285845\n",
470 | "P7 0.325079\n",
471 | "PO3 0.249167\n",
472 | "O1 0.169598\n",
473 | "Oz 0.180071\n",
474 | "Pz 0.285443\n",
475 | "Fp2 0.202628\n",
476 | "AF4 0.162624\n",
477 | "Fz 0.147973\n",
478 | "F4 0.110062\n",
479 | "F8 0.114605\n",
480 | "FC6 0.130890\n",
481 | "FC2 0.130900\n",
482 | "Cz 0.005788\n",
483 | "C4 0.151903\n",
484 | "T8 0.195630\n",
485 | "CP6 0.149990\n",
486 | "CP2 0.140019\n",
487 | "P4 0.209854\n",
488 | "P8 0.130032\n",
489 | "PO4 0.184067\n",
490 | "O2 0.118841\n",
491 | "dtype: float64\n"
492 | ]
493 | }
494 | ]
495 | },
496 | {
497 | "cell_type": "code",
498 | "metadata": {
499 | "colab": {
500 | "base_uri": "https://localhost:8080/",
501 | "height": 510
502 | },
503 | "id": "4JomiwHHuhE8",
504 | "outputId": "98607323-28b7-4b57-931d-94e9f044f711"
505 | },
506 | "source": [
507 | "fvalues.sort_values(ascending = False).plot.bar(figsize=(10,8))"
508 | ],
509 | "execution_count": null,
510 | "outputs": [
511 | {
512 | "output_type": "execute_result",
513 | "data": {
514 | "text/plain": [
515 | ""
516 | ]
517 | },
518 | "metadata": {},
519 | "execution_count": 15
520 | },
521 | {
522 | "output_type": "display_data",
523 | "data": {
524 | "image/png": "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\n",
525 | "text/plain": [
526 | ""
527 | ]
528 | },
529 | "metadata": {
530 | "needs_background": "light"
531 | }
532 | }
533 | ]
534 | },
535 | {
536 | "cell_type": "markdown",
537 | "metadata": {
538 | "id": "GJHHjtp-rOo_"
539 | },
540 | "source": [
541 | "# Classification"
542 | ]
543 | },
544 | {
545 | "cell_type": "code",
546 | "metadata": {
547 | "id": "5PhZZyG55qSM"
548 | },
549 | "source": [
550 | "import numpy as np\n",
551 | "import pandas as pd\n",
552 | "from sklearn.model_selection import train_test_split\n",
553 | "from sklearn import svm\n",
554 | "from sklearn.metrics import accuracy_score"
555 | ],
556 | "execution_count": null,
557 | "outputs": []
558 | },
559 | {
560 | "cell_type": "code",
561 | "metadata": {
562 | "id": "RyDSZVATz2Pw"
563 | },
564 | "source": [
565 | "all_data = pd.read_csv(\"/content/drive/MyDrive/7AllMerged.csv\")\n",
566 | "data = all_data.drop('videos', axis = 1)"
567 | ],
568 | "execution_count": null,
569 | "outputs": []
570 | },
571 | {
572 | "cell_type": "code",
573 | "metadata": {
574 | "id": "rxoQsqyl-sC-"
575 | },
576 | "source": [
577 | "import pandas as pd\n",
578 | "from sklearn.model_selection import KFold \n",
579 | "from sklearn.neural_network import MLPClassifier\n",
580 | "from sklearn.metrics import accuracy_score\n",
581 | "\n",
582 | "#Loading the dataset\n",
583 | "def svmclassifier(channel_name):\n",
584 | " channel_names = []\n",
585 | " for i in range(0, len(channel_name)):\n",
586 | " draft = channel_name[i]\n",
587 | " channel_names.append(draft + \"Alpha\")\n",
588 | " channel_names.append(draft + \"Beta\")\n",
589 | " channel_names.append(draft + \"Gamma\")\n",
590 | " channel_names.append(draft + \"Theta\")\n",
591 | " x = data[channel_names]\n",
592 | " y = np.array(em_labels)\n",
593 | "\n",
594 | " # Implementing cross validation\n",
595 | " k = 10\n",
596 | " kf = KFold(n_splits = k)\n",
597 | "\n",
598 | " model = svm.SVC(kernel='poly')\n",
599 | " acc_score = []\n",
600 | "\n",
601 | " for train_index , test_index in kf.split(x):\n",
602 | " x_train , x_test = x.iloc[train_index,:],x.iloc[test_index,:]\n",
603 | " y_train , y_test = y[train_index] , y[test_index]\n",
604 | " model.fit(x_train, y_train)\n",
605 | " pred_values = model.predict(x_test)\n",
606 | " acc = accuracy_score(pred_values , y_test)\n",
607 | " acc_score.append(acc)\n",
608 | "\n",
609 | " avg_acc_score = sum(acc_score)/k\n",
610 | " #print('accuracy of each fold - {}'.format(acc_score))\n",
611 | " print('Avg accuracy : {}'.format(avg_acc_score))"
612 | ],
613 | "execution_count": null,
614 | "outputs": []
615 | },
616 | {
617 | "cell_type": "code",
618 | "metadata": {
619 | "colab": {
620 | "base_uri": "https://localhost:8080/"
621 | },
622 | "id": "dVWbJk9d6nXf",
623 | "outputId": "8270f940-dc53-4c99-9efc-26ae06038b93"
624 | },
625 | "source": [
626 | "svmclassifier([\"P7\"])"
627 | ],
628 | "execution_count": null,
629 | "outputs": [
630 | {
631 | "output_type": "stream",
632 | "name": "stdout",
633 | "text": [
634 | "Avg accuracy : 0.575\n"
635 | ]
636 | }
637 | ]
638 | },
639 | {
640 | "cell_type": "code",
641 | "metadata": {
642 | "colab": {
643 | "base_uri": "https://localhost:8080/"
644 | },
645 | "id": "sRWJudTJ7Gf9",
646 | "outputId": "05e57b13-bf9e-494c-80d1-3b581c24a940"
647 | },
648 | "source": [
649 | "svmclassifier([\"P7\", \"P3\"])"
650 | ],
651 | "execution_count": null,
652 | "outputs": [
653 | {
654 | "output_type": "stream",
655 | "name": "stdout",
656 | "text": [
657 | "Avg accuracy : 0.625\n"
658 | ]
659 | }
660 | ]
661 | },
662 | {
663 | "cell_type": "code",
664 | "metadata": {
665 | "colab": {
666 | "base_uri": "https://localhost:8080/"
667 | },
668 | "id": "SNPc-UdF7V3z",
669 | "outputId": "2b0f3891-aec5-4c95-a3c4-554bd3abb63a"
670 | },
671 | "source": [
672 | "svmclassifier([\"P7\", \"P3\", \"F3\"])"
673 | ],
674 | "execution_count": null,
675 | "outputs": [
676 | {
677 | "output_type": "stream",
678 | "name": "stdout",
679 | "text": [
680 | "Avg accuracy : 0.65\n"
681 | ]
682 | }
683 | ]
684 | },
685 | {
686 | "cell_type": "code",
687 | "metadata": {
688 | "colab": {
689 | "base_uri": "https://localhost:8080/"
690 | },
691 | "id": "p2lIplKV7pz0",
692 | "outputId": "0a6c4f3c-f507-4f93-c118-6bcbd7342bb1"
693 | },
694 | "source": [
695 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\"])"
696 | ],
697 | "execution_count": null,
698 | "outputs": [
699 | {
700 | "output_type": "stream",
701 | "name": "stdout",
702 | "text": [
703 | "Avg accuracy : 0.7\n"
704 | ]
705 | }
706 | ]
707 | },
708 | {
709 | "cell_type": "code",
710 | "metadata": {
711 | "colab": {
712 | "base_uri": "https://localhost:8080/"
713 | },
714 | "id": "n-zfq7Cw7qYZ",
715 | "outputId": "12f8ba79-9f39-41c2-ef3a-80948872b1ac"
716 | },
717 | "source": [
718 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\", \"Fp2\"])"
719 | ],
720 | "execution_count": null,
721 | "outputs": [
722 | {
723 | "output_type": "stream",
724 | "name": "stdout",
725 | "text": [
726 | "Avg accuracy : 0.7\n"
727 | ]
728 | }
729 | ]
730 | },
731 | {
732 | "cell_type": "code",
733 | "metadata": {
734 | "colab": {
735 | "base_uri": "https://localhost:8080/"
736 | },
737 | "id": "hpXC6LNZ7qbz",
738 | "outputId": "e1d97fb9-4443-47f0-e659-5cd0bf3f51be"
739 | },
740 | "source": [
741 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\", \"Fp2\", \"AF4\"])"
742 | ],
743 | "execution_count": null,
744 | "outputs": [
745 | {
746 | "output_type": "stream",
747 | "name": "stdout",
748 | "text": [
749 | "Avg accuracy : 0.7\n"
750 | ]
751 | }
752 | ]
753 | },
754 | {
755 | "cell_type": "code",
756 | "metadata": {
757 | "colab": {
758 | "base_uri": "https://localhost:8080/"
759 | },
760 | "id": "1UEVteo47qd8",
761 | "outputId": "8e50043f-95d9-479a-fc3d-124f89d67c6f"
762 | },
763 | "source": [
764 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\", \"Fp2\", \"AF4\", \"C4\"])"
765 | ],
766 | "execution_count": null,
767 | "outputs": [
768 | {
769 | "output_type": "stream",
770 | "name": "stdout",
771 | "text": [
772 | "Avg accuracy : 0.7\n"
773 | ]
774 | }
775 | ]
776 | }
777 | ]
778 | }
--------------------------------------------------------------------------------
/Participant_1_,Arousal,80_20.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Participant-1 ,Arousal,80-20",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "display_name": "Python 3",
13 | "name": "python3"
14 | },
15 | "language_info": {
16 | "name": "python"
17 | }
18 | },
19 | "cells": [
20 | {
21 | "cell_type": "markdown",
22 | "metadata": {
23 | "id": "view-in-github",
24 | "colab_type": "text"
25 | },
26 | "source": [
27 | "
"
28 | ]
29 | },
30 | {
31 | "cell_type": "markdown",
32 | "metadata": {
33 | "id": "q7tNC6EX54Fm"
34 | },
35 | "source": [
36 | "#**1. Data Preprocessing**#"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "metadata": {
42 | "id": "q5UDY40xrsZF"
43 | },
44 | "source": [
45 | "import pandas as pd\n",
46 | "import numpy as np\n",
47 | "\n",
48 | "import matplotlib.pyplot as plt\n",
49 | "import seaborn as sns\n",
50 | "%matplotlib inline\n",
51 | "\n",
52 | "from sklearn.model_selection import train_test_split\n",
53 | "\n",
54 | "from sklearn.feature_selection import chi2\n",
55 | "from sklearn.feature_selection import SelectKBest, SelectPercentile\n",
56 | "import warnings\n",
57 | "warnings.filterwarnings(\"ignore\")"
58 | ],
59 | "execution_count": null,
60 | "outputs": []
61 | },
62 | {
63 | "cell_type": "code",
64 | "metadata": {
65 | "colab": {
66 | "base_uri": "https://localhost:8080/"
67 | },
68 | "id": "Azg9wbOhz1XJ",
69 | "outputId": "a6f7589f-d8df-45e7-c9d8-298846281a6e"
70 | },
71 | "source": [
72 | "from google.colab import drive\n",
73 | "import pickle \n",
74 | "drive._mount('/content/drive')\n",
75 | "drive.mount('/content/drive', force_remount=True)"
76 | ],
77 | "execution_count": null,
78 | "outputs": [
79 | {
80 | "output_type": "stream",
81 | "name": "stdout",
82 | "text": [
83 | "Mounted at /content/drive\n",
84 | "Mounted at /content/drive\n"
85 | ]
86 | }
87 | ]
88 | },
89 | {
90 | "cell_type": "code",
91 | "metadata": {
92 | "id": "XpDYOiyPQ28F"
93 | },
94 | "source": [
95 | "with open('/content/drive/MyDrive/Deap/s01.dat', 'rb') as f:\n",
96 | " raw_data = pickle.load(f, encoding='latin1')"
97 | ],
98 | "execution_count": null,
99 | "outputs": []
100 | },
101 | {
102 | "cell_type": "code",
103 | "metadata": {
104 | "id": "Smqczw7Rtm8k"
105 | },
106 | "source": [
107 | "pip install skfeature-chappers"
108 | ],
109 | "execution_count": null,
110 | "outputs": []
111 | },
112 | {
113 | "cell_type": "code",
114 | "metadata": {
115 | "id": "kxJTyBtEeqHy"
116 | },
117 | "source": [
118 | "import numpy as np\n",
119 | "from skfeature.utility.construct_W import construct_W\n",
120 | "from scipy.sparse import diags\n",
121 | "\n",
122 | "def fisher_score(X, y):\n",
123 | " \"\"\"\n",
124 | " This function implements the fisher score feature selection, steps are as follows:\n",
125 | " 1. Construct the affinity matrix W in fisher score way\n",
126 | " 2. For the r-th feature, we define fr = X(:,r), D = diag(W*ones), ones = [1,...,1]', L = D - W\n",
127 | " 3. Let fr_hat = fr - (fr'*D*ones)*ones/(ones'*D*ones)\n",
128 | " 4. Fisher score for the r-th feature is score = (fr_hat'*D*fr_hat)/(fr_hat'*L*fr_hat)-1\n",
129 | " Input\n",
130 | " -----\n",
131 | " X: {numpy array}, shape (n_samples, n_features)\n",
132 | " input data\n",
133 | " y: {numpy array}, shape (n_samples,)\n",
134 | " input class labels\n",
135 | " Output\n",
136 | " ------\n",
137 | " score: {numpy array}, shape (n_features,)\n",
138 | " fisher score for each feature\n",
139 | " Reference\n",
140 | " ---------\n",
141 | " He, Xiaofei et al. \"Laplacian Score for Feature Selection.\" NIPS 2005.\n",
142 | " Duda, Richard et al. \"Pattern classification.\" John Wiley & Sons, 2012.\n",
143 | " \"\"\"\n",
144 | "\n",
145 | " # Construct weight matrix W in a fisherScore way\n",
146 | " kwargs = {\"neighbor_mode\": \"supervised\", \"fisher_score\": True, 'y': y}\n",
147 | " W = construct_W(X, **kwargs)\n",
148 | "\n",
149 | " # build the diagonal D matrix from affinity matrix W\n",
150 | " D = np.array(W.sum(axis=1))\n",
151 | " L = W\n",
152 | " tmp = np.dot(np.transpose(D), X)\n",
153 | " D = diags(np.transpose(D), [0])\n",
154 | " Xt = np.transpose(X)\n",
155 | " t1 = np.transpose(np.dot(Xt, D.todense()))\n",
156 | " t2 = np.transpose(np.dot(Xt, L.todense()))\n",
157 | " # compute the numerator of Lr\n",
158 | " D_prime = np.sum(np.multiply(t1, X), 0) - np.multiply(tmp, tmp)/D.sum()\n",
159 | " # compute the denominator of Lr\n",
160 | " L_prime = np.sum(np.multiply(t2, X), 0) - np.multiply(tmp, tmp)/D.sum()\n",
161 | " # avoid the denominator of Lr to be 0\n",
162 | " D_prime[D_prime < 1e-12] = 10000\n",
163 | " lap_score = 1 - np.array(np.multiply(L_prime, 1/D_prime))[0, :]\n",
164 | "\n",
165 | " # compute fisher score from laplacian score, where fisher_score = 1/lap_score - 1\n",
166 | " score = 1.0/lap_score - 1\n",
167 | " return np.transpose(score)\n",
168 | "\n",
169 | "\n",
170 | "def feature_ranking(score):\n",
171 | " \"\"\"\n",
172 | " Rank features in descending order according to fisher score, the larger the fisher score, the more important the\n",
173 | " feature is\n",
174 | " \"\"\"\n",
175 | " idx = np.argsort(score, 0)\n",
176 | " return idx[::-1]"
177 | ],
178 | "execution_count": null,
179 | "outputs": []
180 | },
181 | {
182 | "cell_type": "code",
183 | "metadata": {
184 | "colab": {
185 | "base_uri": "https://localhost:8080/"
186 | },
187 | "id": "EpI-gFzRjgGT",
188 | "outputId": "bcc3bdef-57c0-4cc1-900b-1da4e9835f68"
189 | },
190 | "source": [
191 | "data = raw_data['data']\n",
192 | "labels = raw_data['labels']\n",
193 | "\n",
194 | "print(\"Labels: \", labels.shape) # trial x label\n",
195 | "print(\"Data: \", data.shape) # trial x channel x data"
196 | ],
197 | "execution_count": null,
198 | "outputs": [
199 | {
200 | "output_type": "stream",
201 | "name": "stdout",
202 | "text": [
203 | "Labels: (40, 4)\n",
204 | "Data: (40, 40, 8064)\n"
205 | ]
206 | }
207 | ]
208 | },
209 | {
210 | "cell_type": "code",
211 | "metadata": {
212 | "id": "FTfibgB5c63Y"
213 | },
214 | "source": [
215 | "\"\"\"\n",
216 | "em_labels = []\n",
217 | "for i in range(0, labels.shape[0]):\n",
218 | "\tif (labels[i][0]>5): #high valence\n",
219 | "\t\tif(labels[i][1]>5): # high arousal\n",
220 | "\t\t\tem_labels.append(1) # HVHA\n",
221 | "\t\telse:\n",
222 | "\t\t\tem_labels.append(0) # HVLA\n",
223 | "\telse: # low valence\n",
224 | "\t\tif(labels[i][1]>5): # high arousal\n",
225 | "\t\t\tem_labels.append(2) #LVHA\n",
226 | "\t\telse:\n",
227 | "\t\t\tem_labels.append(3) # LVLA\n",
228 | "\"\"\"\n",
229 | "em_labels = []\n",
230 | "for i in range(0, labels.shape[0]):\n",
231 | "\tif (labels[i][1]>5): #high arousal\n",
232 | "\t\t\tem_labels.append(0) # HVHA\n",
233 | "\telse: # low arousal\n",
234 | "\t\t\tem_labels.append(1)"
235 | ],
236 | "execution_count": null,
237 | "outputs": []
238 | },
239 | {
240 | "cell_type": "code",
241 | "metadata": {
242 | "colab": {
243 | "base_uri": "https://localhost:8080/"
244 | },
245 | "id": "3jCP0SMBc9iu",
246 | "outputId": "d1d1800a-ce18-419a-c42a-8c129a4fbcd9"
247 | },
248 | "source": [
249 | "print(em_labels)"
250 | ],
251 | "execution_count": null,
252 | "outputs": [
253 | {
254 | "output_type": "stream",
255 | "name": "stdout",
256 | "text": [
257 | "[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]\n"
258 | ]
259 | }
260 | ]
261 | },
262 | {
263 | "cell_type": "markdown",
264 | "metadata": {
265 | "id": "eQlRP4LrOMlk"
266 | },
267 | "source": [
268 | "# Fisher's Score for Theta Band"
269 | ]
270 | },
271 | {
272 | "cell_type": "code",
273 | "metadata": {
274 | "id": "Na1SqsWbr2y1"
275 | },
276 | "source": [
277 | "# load dataset\n",
278 | "data_theta = pd.read_csv('/content/drive/MyDrive/1df_theta.csv')\n",
279 | "# features from all the channels from the theta band only\n",
280 | "data_theta.shape\n",
281 | "data_theta['videos'] = em_labels\n",
282 | "data_theta['videos'].unique()\n",
283 | "X = data_theta[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
284 | "# taking only first 32 channels (EEG signals)\n",
285 | "y = data_theta['videos']\n",
286 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
287 | "X_train = np.array(X_train)\n",
288 | "y_train = np.array(y_train)\n",
289 | "f_score_theta = fisher_score(X_train, y_train)"
290 | ],
291 | "execution_count": null,
292 | "outputs": []
293 | },
294 | {
295 | "cell_type": "markdown",
296 | "metadata": {
297 | "id": "6jeXnumcG2JB"
298 | },
299 | "source": [
300 | "# Fisher Score for Alpha Band"
301 | ]
302 | },
303 | {
304 | "cell_type": "code",
305 | "metadata": {
306 | "id": "C7fJ9fMdGVbQ"
307 | },
308 | "source": [
309 | "# load dataset\n",
310 | "data_alpha = pd.read_csv('/content/drive/MyDrive/2df_alpha.csv')\n",
311 | "# features from all the channels from the theta band only\n",
312 | "data_alpha.shape\n",
313 | "data_alpha['videos'] = em_labels\n",
314 | "data_alpha['videos'].unique()\n",
315 | "X = data_alpha[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
316 | "# taking only first 32 channels (EEG signals)\n",
317 | "y = data_alpha['videos']\n",
318 | "y.head()\n",
319 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
320 | "X_train = np.array(X_train)\n",
321 | "y_train = np.array(y_train)\n",
322 | "f_score_alpha = fisher_score(X_train, y_train)"
323 | ],
324 | "execution_count": null,
325 | "outputs": []
326 | },
327 | {
328 | "cell_type": "markdown",
329 | "metadata": {
330 | "id": "Np4pvMpaWAhN"
331 | },
332 | "source": [
333 | "# Fisher Score for Beta Band"
334 | ]
335 | },
336 | {
337 | "cell_type": "code",
338 | "metadata": {
339 | "id": "9LA2tAAslnGK"
340 | },
341 | "source": [
342 | "# load dataset\n",
343 | "data_beta = pd.read_csv('/content/drive/MyDrive/3df_beta.csv')\n",
344 | "# features from all the channels from the theta band only\n",
345 | "data_beta.shape\n",
346 | "data_beta['videos'] = em_labels\n",
347 | "data_beta['videos'].unique()\n",
348 | "X = data_beta[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
349 | "# taking only first 32 channels (EEG signals)\n",
350 | "y = data_beta['videos']\n",
351 | "X_train = np.array(X_train)\n",
352 | "y_train = np.array(y_train)\n",
353 | "f_score_beta = fisher_score(X_train, y_train)"
354 | ],
355 | "execution_count": null,
356 | "outputs": []
357 | },
358 | {
359 | "cell_type": "markdown",
360 | "metadata": {
361 | "id": "uxn9t3hDWEBw"
362 | },
363 | "source": [
364 | "# Fisher Score for Gamma Band"
365 | ]
366 | },
367 | {
368 | "cell_type": "code",
369 | "metadata": {
370 | "id": "7Q0uOFsDWEBx"
371 | },
372 | "source": [
373 | "# load dataset\n",
374 | "data_gamma = pd.read_csv('/content/drive/MyDrive/4df_gamma.csv')\n",
375 | "# features from all the channels from the theta band only\n",
376 | "data_gamma.shape\n",
377 | "data_gamma['videos'] = em_labels\n",
378 | "data_gamma['videos'].unique()\n",
379 | "X = data_gamma[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
380 | "# taking only first 32 channels (EEG signals)\n",
381 | "y = data_gamma['videos']\n",
382 | "y.head()\n",
383 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
384 | "X_train = np.array(X_train)\n",
385 | "y_train = np.array(y_train)\n",
386 | "f_score_gamma = fisher_score(X_train, y_train)"
387 | ],
388 | "execution_count": null,
389 | "outputs": []
390 | },
391 | {
392 | "cell_type": "markdown",
393 | "metadata": {
394 | "id": "sUoClL1YB5aW"
395 | },
396 | "source": [
397 | "# Total Avearge F-Score(Theta,Alpha,Beta,Gamma)"
398 | ]
399 | },
400 | {
401 | "cell_type": "code",
402 | "metadata": {
403 | "id": "LCtwrlPCB5C1"
404 | },
405 | "source": [
406 | "final_f_score = (f_score_theta + f_score_alpha + f_score_beta + f_score_gamma)/4"
407 | ],
408 | "execution_count": null,
409 | "outputs": []
410 | },
411 | {
412 | "cell_type": "code",
413 | "metadata": {
414 | "colab": {
415 | "base_uri": "https://localhost:8080/"
416 | },
417 | "id": "GB2MaoDXJC0O",
418 | "outputId": "9a5fef7e-ddff-49b0-82b6-13eabe5ba89a"
419 | },
420 | "source": [
421 | "fvalues = pd.Series(final_f_score)\n",
422 | "X_train = pd.DataFrame(X_train)\n",
423 | "fvalues.index = X.columns\n",
424 | "fvalues.sort_values(ascending=False)\n",
425 | "fvalues.to_csv('fscore_final.csv')\n",
426 | "print(fvalues)"
427 | ],
428 | "execution_count": null,
429 | "outputs": [
430 | {
431 | "output_type": "stream",
432 | "name": "stdout",
433 | "text": [
434 | "Fp1 0.169451\n",
435 | "AF3 0.232807\n",
436 | "F3 0.257078\n",
437 | "F7 0.079412\n",
438 | "FC5 0.203454\n",
439 | "FC1 0.196043\n",
440 | "C3 0.187472\n",
441 | "T7 0.140773\n",
442 | "CP5 0.215465\n",
443 | "CP1 0.201009\n",
444 | "P3 0.285845\n",
445 | "P7 0.325079\n",
446 | "PO3 0.249167\n",
447 | "O1 0.169598\n",
448 | "Oz 0.180071\n",
449 | "Pz 0.285443\n",
450 | "Fp2 0.202628\n",
451 | "AF4 0.162624\n",
452 | "Fz 0.147973\n",
453 | "F4 0.110062\n",
454 | "F8 0.114605\n",
455 | "FC6 0.130890\n",
456 | "FC2 0.130900\n",
457 | "Cz 0.005788\n",
458 | "C4 0.151903\n",
459 | "T8 0.195630\n",
460 | "CP6 0.149990\n",
461 | "CP2 0.140019\n",
462 | "P4 0.209854\n",
463 | "P8 0.130032\n",
464 | "PO4 0.184067\n",
465 | "O2 0.118841\n",
466 | "dtype: float64\n"
467 | ]
468 | }
469 | ]
470 | },
471 | {
472 | "cell_type": "code",
473 | "metadata": {
474 | "colab": {
475 | "base_uri": "https://localhost:8080/",
476 | "height": 510
477 | },
478 | "id": "4JomiwHHuhE8",
479 | "outputId": "6e0dd584-b289-4ea6-d274-d88904c14af4"
480 | },
481 | "source": [
482 | "fvalues.sort_values(ascending = False).plot.bar(figsize=(10,8))"
483 | ],
484 | "execution_count": null,
485 | "outputs": [
486 | {
487 | "output_type": "execute_result",
488 | "data": {
489 | "text/plain": [
490 | ""
491 | ]
492 | },
493 | "metadata": {},
494 | "execution_count": 16
495 | },
496 | {
497 | "output_type": "display_data",
498 | "data": {
499 | "image/png": "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\n",
500 | "text/plain": [
501 | ""
502 | ]
503 | },
504 | "metadata": {
505 | "needs_background": "light"
506 | }
507 | }
508 | ]
509 | },
510 | {
511 | "cell_type": "code",
512 | "metadata": {
513 | "colab": {
514 | "base_uri": "https://localhost:8080/"
515 | },
516 | "id": "4InNTnkPUZwn",
517 | "outputId": "2b187341-ff29-4e4e-8b2c-21500bd38410"
518 | },
519 | "source": [
520 | "shyam = fvalues.sort_values(ascending = False)\n",
521 | "da = pd.DataFrame(shyam)\n",
522 | "da.to_csv(\"channel_rank.csv\")\n",
523 | "cr = pd.read_csv(\"channel_rank.csv\")\n",
524 | "list(cr[\"Unnamed: 0\"])"
525 | ],
526 | "execution_count": null,
527 | "outputs": [
528 | {
529 | "output_type": "execute_result",
530 | "data": {
531 | "text/plain": [
532 | "['P7',\n",
533 | " 'P3',\n",
534 | " 'Pz',\n",
535 | " 'F3',\n",
536 | " 'PO3',\n",
537 | " 'AF3',\n",
538 | " 'CP5',\n",
539 | " 'P4',\n",
540 | " 'FC5',\n",
541 | " 'Fp2',\n",
542 | " 'CP1',\n",
543 | " 'FC1',\n",
544 | " 'T8',\n",
545 | " 'C3',\n",
546 | " 'PO4',\n",
547 | " 'Oz',\n",
548 | " 'O1',\n",
549 | " 'Fp1',\n",
550 | " 'AF4',\n",
551 | " 'C4',\n",
552 | " 'CP6',\n",
553 | " 'Fz',\n",
554 | " 'T7',\n",
555 | " 'CP2',\n",
556 | " 'FC2',\n",
557 | " 'FC6',\n",
558 | " 'P8',\n",
559 | " 'O2',\n",
560 | " 'F8',\n",
561 | " 'F4',\n",
562 | " 'F7',\n",
563 | " 'Cz']"
564 | ]
565 | },
566 | "metadata": {},
567 | "execution_count": 23
568 | }
569 | ]
570 | },
571 | {
572 | "cell_type": "markdown",
573 | "metadata": {
574 | "id": "GJHHjtp-rOo_"
575 | },
576 | "source": [
577 | "# Classification"
578 | ]
579 | },
580 | {
581 | "cell_type": "code",
582 | "metadata": {
583 | "id": "5PhZZyG55qSM"
584 | },
585 | "source": [
586 | "import numpy as np\n",
587 | "import pandas as pd\n",
588 | "from sklearn.model_selection import train_test_split\n",
589 | "from sklearn import svm\n",
590 | "from sklearn.metrics import accuracy_score"
591 | ],
592 | "execution_count": null,
593 | "outputs": []
594 | },
595 | {
596 | "cell_type": "code",
597 | "metadata": {
598 | "id": "RyDSZVATz2Pw"
599 | },
600 | "source": [
601 | "all_data = pd.read_csv(\"/content/drive/MyDrive/7AllMerged.csv\")\n",
602 | "data = all_data.drop('videos', axis = 1)"
603 | ],
604 | "execution_count": null,
605 | "outputs": []
606 | },
607 | {
608 | "cell_type": "code",
609 | "metadata": {
610 | "id": "rxoQsqyl-sC-"
611 | },
612 | "source": [
613 | "import pandas as pd\n",
614 | "from sklearn.model_selection import KFold \n",
615 | "from sklearn.neural_network import MLPClassifier\n",
616 | "from sklearn.metrics import accuracy_score\n",
617 | "\n",
618 | "#Loading the dataset\n",
619 | "def svmclassifier(channel_name):\n",
620 | " channel_names = []\n",
621 | " for i in range(0, len(channel_name)):\n",
622 | " draft = channel_name[i]\n",
623 | " channel_names.append(draft + \"Alpha\")\n",
624 | " channel_names.append(draft + \"Beta\")\n",
625 | " channel_names.append(draft + \"Gamma\")\n",
626 | " channel_names.append(draft + \"Theta\")\n",
627 | " x = data[channel_names]\n",
628 | " y = np.array(em_labels)\n",
629 | " x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
630 | " classifier = svm.SVC(kernel = 'poly')\n",
631 | " classifier.fit(x_train, y_train)\n",
632 | " x_train_prediction = classifier.predict(x_train)\n",
633 | " training_data_accuray = accuracy_score(x_train_prediction, y_train)\n",
634 | " print('Accuracy on training data : ', training_data_accuray)\n",
635 | " x_test_prediction = classifier.predict(x_test)\n",
636 | " test_data_accuray = accuracy_score(x_test_prediction, y_test)\n",
637 | " print('Accuracy on test data : ', test_data_accuray)"
638 | ],
639 | "execution_count": null,
640 | "outputs": []
641 | },
642 | {
643 | "cell_type": "code",
644 | "metadata": {
645 | "colab": {
646 | "base_uri": "https://localhost:8080/"
647 | },
648 | "id": "dVWbJk9d6nXf",
649 | "outputId": "8869c4eb-4576-44c3-8748-de744042998e"
650 | },
651 | "source": [
652 | "svmclassifier([\"P7\"])"
653 | ],
654 | "execution_count": null,
655 | "outputs": [
656 | {
657 | "output_type": "stream",
658 | "name": "stdout",
659 | "text": [
660 | "Accuracy on training data : 0.78125\n",
661 | "Accuracy on test data : 0.5\n"
662 | ]
663 | }
664 | ]
665 | },
666 | {
667 | "cell_type": "code",
668 | "metadata": {
669 | "colab": {
670 | "base_uri": "https://localhost:8080/"
671 | },
672 | "id": "e_TW8u-SU6bo",
673 | "outputId": "9ed0ed09-2f7b-4157-f3a1-89697dadd9a5"
674 | },
675 | "source": [
676 | "svmclassifier(['P7', 'Pz', 'PO3', 'AF3']) #, 'CP5', 'P4', 'FC5', 'Fp2', 'CP1', 'FC1', 'T8', 'C3', 'PO4', 'Oz', 'O1', 'Fp1', 'AF4', 'C4', 'CP6', 'Fz', 'T7', 'CP2', 'FC2', 'FC6', 'P8', 'O2', 'F8', 'F4', 'F7','Cz'])"
677 | ],
678 | "execution_count": null,
679 | "outputs": [
680 | {
681 | "output_type": "stream",
682 | "name": "stdout",
683 | "text": [
684 | "Accuracy on training data : 0.75\n",
685 | "Accuracy on test data : 0.5\n"
686 | ]
687 | }
688 | ]
689 | },
690 | {
691 | "cell_type": "code",
692 | "metadata": {
693 | "colab": {
694 | "base_uri": "https://localhost:8080/"
695 | },
696 | "id": "UNnX0xq4ViuP",
697 | "outputId": "23350c38-5c76-4ead-b1ea-d4d03a97b9ab"
698 | },
699 | "source": [
700 | "svmclassifier(['P7', 'Pz', 'PO3', 'AF3', 'CP5'])#, 'P4', 'FC5', 'Fp2', 'CP1', 'FC1', 'T8', 'C3', 'PO4', 'Oz', 'O1', 'Fp1', 'AF4', 'C4', 'CP6', 'Fz', 'T7', 'CP2', 'FC2', 'FC6', 'P8', 'O2', 'F8', 'F4', 'F7','Cz'])"
701 | ],
702 | "execution_count": null,
703 | "outputs": [
704 | {
705 | "output_type": "stream",
706 | "name": "stdout",
707 | "text": [
708 | "Accuracy on training data : 0.78125\n",
709 | "Accuracy on test data : 0.5\n"
710 | ]
711 | }
712 | ]
713 | },
714 | {
715 | "cell_type": "code",
716 | "metadata": {
717 | "colab": {
718 | "base_uri": "https://localhost:8080/"
719 | },
720 | "id": "ORhgOGo2Vixa",
721 | "outputId": "c61f95d0-561a-45b3-8132-c1308264f6bf"
722 | },
723 | "source": [
724 | "svmclassifier(['P7', 'Pz', 'PO3', 'AF3', 'CP5', 'Fp2', 'PO4', 'O1', 'AF4', 'C4','FC2', 'FC6'])"
725 | ],
726 | "execution_count": null,
727 | "outputs": [
728 | {
729 | "output_type": "stream",
730 | "name": "stdout",
731 | "text": [
732 | "Accuracy on training data : 0.875\n",
733 | "Accuracy on test data : 0.625\n"
734 | ]
735 | }
736 | ]
737 | },
738 | {
739 | "cell_type": "code",
740 | "metadata": {
741 | "id": "HP9PD4_yVpgv"
742 | },
743 | "source": [
744 | ""
745 | ],
746 | "execution_count": null,
747 | "outputs": []
748 | },
749 | {
750 | "cell_type": "code",
751 | "metadata": {
752 | "id": "r0c0WUZsVpj6"
753 | },
754 | "source": [
755 | ""
756 | ],
757 | "execution_count": null,
758 | "outputs": []
759 | },
760 | {
761 | "cell_type": "code",
762 | "metadata": {
763 | "id": "yxmYLEp_jz18"
764 | },
765 | "source": [
766 | ""
767 | ],
768 | "execution_count": null,
769 | "outputs": []
770 | },
771 | {
772 | "cell_type": "code",
773 | "metadata": {
774 | "id": "-K3GuIzCjyQH"
775 | },
776 | "source": [
777 | ""
778 | ],
779 | "execution_count": null,
780 | "outputs": []
781 | },
782 | {
783 | "cell_type": "code",
784 | "metadata": {
785 | "colab": {
786 | "base_uri": "https://localhost:8080/"
787 | },
788 | "id": "sRWJudTJ7Gf9",
789 | "outputId": "7273df65-9eff-4906-ff8e-634aed61128f"
790 | },
791 | "source": [
792 | "svmclassifier(['P7', 'P3', 'Pz', 'F3', 'PO3', 'AF3', 'CP5', 'P4', 'FC5', 'Fp2', 'CP1', 'FC1', 'T8', 'C3', 'PO4', 'Oz', 'O1', 'Fp1', 'AF4',\\\n",
793 | " 'C4', 'CP6', 'Fz', 'T7', 'CP2', 'FC2', 'FC6', 'P8', 'O2', 'F8', 'F4', 'F7','Cz'])"
794 | ],
795 | "execution_count": null,
796 | "outputs": [
797 | {
798 | "output_type": "stream",
799 | "name": "stdout",
800 | "text": [
801 | "Accuracy on training data : 0.875\n",
802 | "Accuracy on test data : 0.25\n"
803 | ]
804 | }
805 | ]
806 | },
807 | {
808 | "cell_type": "code",
809 | "metadata": {
810 | "colab": {
811 | "base_uri": "https://localhost:8080/"
812 | },
813 | "id": "SNPc-UdF7V3z",
814 | "outputId": "e9928fb8-3e55-47ae-b7e4-79c231fd8f73"
815 | },
816 | "source": [
817 | "svmclassifier([\"P7\", \"P3\", \"F3\"])"
818 | ],
819 | "execution_count": null,
820 | "outputs": [
821 | {
822 | "output_type": "stream",
823 | "name": "stdout",
824 | "text": [
825 | "Avg accuracy : 0.65\n"
826 | ]
827 | }
828 | ]
829 | },
830 | {
831 | "cell_type": "code",
832 | "metadata": {
833 | "colab": {
834 | "base_uri": "https://localhost:8080/"
835 | },
836 | "id": "p2lIplKV7pz0",
837 | "outputId": "b7590573-30e8-4ed5-d97e-3cf2d3e43a3b"
838 | },
839 | "source": [
840 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\"])"
841 | ],
842 | "execution_count": null,
843 | "outputs": [
844 | {
845 | "output_type": "stream",
846 | "name": "stdout",
847 | "text": [
848 | "Avg accuracy : 0.7\n"
849 | ]
850 | }
851 | ]
852 | },
853 | {
854 | "cell_type": "code",
855 | "metadata": {
856 | "colab": {
857 | "base_uri": "https://localhost:8080/"
858 | },
859 | "id": "n-zfq7Cw7qYZ",
860 | "outputId": "55b3d0a6-5bbd-4d4c-e397-22910658a42f"
861 | },
862 | "source": [
863 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\", \"Fp2\"])"
864 | ],
865 | "execution_count": null,
866 | "outputs": [
867 | {
868 | "output_type": "stream",
869 | "name": "stdout",
870 | "text": [
871 | "Avg accuracy : 0.7\n"
872 | ]
873 | }
874 | ]
875 | },
876 | {
877 | "cell_type": "code",
878 | "metadata": {
879 | "colab": {
880 | "base_uri": "https://localhost:8080/"
881 | },
882 | "id": "hpXC6LNZ7qbz",
883 | "outputId": "e1c73adc-4ec0-47ae-c636-53feb5a0dd42"
884 | },
885 | "source": [
886 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\", \"Fp2\", \"AF4\"])"
887 | ],
888 | "execution_count": null,
889 | "outputs": [
890 | {
891 | "output_type": "stream",
892 | "name": "stdout",
893 | "text": [
894 | "Avg accuracy : 0.7\n"
895 | ]
896 | }
897 | ]
898 | },
899 | {
900 | "cell_type": "code",
901 | "metadata": {
902 | "colab": {
903 | "base_uri": "https://localhost:8080/"
904 | },
905 | "id": "1UEVteo47qd8",
906 | "outputId": "f4bcbd71-4641-47c4-e9d0-212fc82f6dc6"
907 | },
908 | "source": [
909 | "svmclassifier([\"P7\", \"P3\", \"F3\", \"AF3\", \"Fp2\", \"AF4\", \"C4\"]) # this set"
910 | ],
911 | "execution_count": null,
912 | "outputs": [
913 | {
914 | "output_type": "stream",
915 | "name": "stdout",
916 | "text": [
917 | "Avg accuracy : 0.7\n"
918 | ]
919 | }
920 | ]
921 | },
922 | {
923 | "cell_type": "code",
924 | "metadata": {
925 | "colab": {
926 | "base_uri": "https://localhost:8080/"
927 | },
928 | "id": "q67hvpRUGiGL",
929 | "outputId": "b7d36096-fda3-4391-80dc-a1fbc21b995e"
930 | },
931 | "source": [
932 | "svmclassifier([\"P7\", \"F3\", \"AF3\", \"Fp2\", \"AF4\", \"C4\"]) # remove one by onethis set \n",
933 | "# back the channel\n",
934 | "# Now this [\"P7\", \"F3\", \"AF3\", \"Fp2\", \"AF4\", \"C4\"] set is my optimal solution"
935 | ],
936 | "execution_count": null,
937 | "outputs": [
938 | {
939 | "output_type": "stream",
940 | "name": "stdout",
941 | "text": [
942 | "Avg accuracy : 0.725\n"
943 | ]
944 | }
945 | ]
946 | },
947 | {
948 | "cell_type": "code",
949 | "metadata": {
950 | "colab": {
951 | "base_uri": "https://localhost:8080/"
952 | },
953 | "id": "t0KN9lzbG0x4",
954 | "outputId": "ba8f5cdb-88e0-496d-b48b-4ad685a488a3"
955 | },
956 | "source": [
957 | "svmclassifier([\"P7\", \"F3\", \"AF3\", \"Fp2\", \"AF4\", \"C4\"]) # this is optimal solution"
958 | ],
959 | "execution_count": null,
960 | "outputs": [
961 | {
962 | "output_type": "stream",
963 | "name": "stdout",
964 | "text": [
965 | "Avg accuracy : 0.7\n"
966 | ]
967 | }
968 | ]
969 | },
970 | {
971 | "cell_type": "code",
972 | "metadata": {
973 | "colab": {
974 | "base_uri": "https://localhost:8080/"
975 | },
976 | "id": "ZgXsIaxXEFRI",
977 | "outputId": "f662e5ef-4244-4d01-d93f-17d7ac787b89"
978 | },
979 | "source": [
980 | "svmclassifier([\"P7\", \"F3\", \"AF3\", \"Fp2\", \"AF4\", \"C4\"])"
981 | ],
982 | "execution_count": null,
983 | "outputs": [
984 | {
985 | "output_type": "stream",
986 | "name": "stdout",
987 | "text": [
988 | "Avg accuracy : 0.725\n"
989 | ]
990 | }
991 | ]
992 | },
993 | {
994 | "cell_type": "code",
995 | "metadata": {
996 | "id": "J3kHmoT6GFPH"
997 | },
998 | "source": [
999 | ""
1000 | ],
1001 | "execution_count": null,
1002 | "outputs": []
1003 | }
1004 | ]
1005 | }
--------------------------------------------------------------------------------
/Copy_of_channel_selection_and_feature_selection_BCI.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "Copy of channel selection and feature selection BCI",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "display_name": "Python 3",
13 | "name": "python3"
14 | },
15 | "language_info": {
16 | "name": "python"
17 | }
18 | },
19 | "cells": [
20 | {
21 | "cell_type": "markdown",
22 | "metadata": {
23 | "id": "view-in-github",
24 | "colab_type": "text"
25 | },
26 | "source": [
27 | "
"
28 | ]
29 | },
30 | {
31 | "cell_type": "markdown",
32 | "metadata": {
33 | "id": "q7tNC6EX54Fm"
34 | },
35 | "source": [
36 | "#**1. Data Preprocessing**#"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "metadata": {
42 | "id": "q5UDY40xrsZF"
43 | },
44 | "source": [
45 | "import pandas as pd\n",
46 | "import numpy as np\n",
47 | "\n",
48 | "import matplotlib.pyplot as plt\n",
49 | "import seaborn as sns\n",
50 | "%matplotlib inline\n",
51 | "\n",
52 | "from sklearn.model_selection import train_test_split\n",
53 | "\n",
54 | "from sklearn.feature_selection import chi2\n",
55 | "from sklearn.feature_selection import SelectKBest, SelectPercentile\n",
56 | "import warnings\n",
57 | "warnings.filterwarnings(\"ignore\")"
58 | ],
59 | "execution_count": null,
60 | "outputs": []
61 | },
62 | {
63 | "cell_type": "code",
64 | "metadata": {
65 | "colab": {
66 | "base_uri": "https://localhost:8080/"
67 | },
68 | "id": "Azg9wbOhz1XJ",
69 | "outputId": "d51191c5-1533-49b5-c233-ebef6cf9c66a"
70 | },
71 | "source": [
72 | "from google.colab import drive\n",
73 | "import pickle \n",
74 | "drive._mount('/content/drive')\n",
75 | "drive.mount('/content/drive', force_remount=True)"
76 | ],
77 | "execution_count": null,
78 | "outputs": [
79 | {
80 | "output_type": "stream",
81 | "name": "stdout",
82 | "text": [
83 | "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n",
84 | "Mounted at /content/drive\n"
85 | ]
86 | }
87 | ]
88 | },
89 | {
90 | "cell_type": "code",
91 | "metadata": {
92 | "id": "XpDYOiyPQ28F"
93 | },
94 | "source": [
95 | "with open('/content/drive/MyDrive/s01.dat', 'rb') as f:\n",
96 | " raw_data = pickle.load(f, encoding='latin1')"
97 | ],
98 | "execution_count": null,
99 | "outputs": []
100 | },
101 | {
102 | "cell_type": "code",
103 | "metadata": {
104 | "id": "kxJTyBtEeqHy"
105 | },
106 | "source": [
107 | "import numpy as np\n",
108 | "from skfeature.utility.construct_W import construct_W\n",
109 | "\n",
110 | "def fisher_score(X, y):\n",
111 | " \"\"\"\n",
112 | " This function implements the fisher score feature selection, steps are as follows:\n",
113 | " 1. Construct the affinity matrix W in fisher score way\n",
114 | " 2. For the r-th feature, we define fr = X(:,r), D = diag(W*ones), ones = [1,...,1]', L = D - W\n",
115 | " 3. Let fr_hat = fr - (fr'*D*ones)*ones/(ones'*D*ones)\n",
116 | " 4. Fisher score for the r-th feature is score = (fr_hat'*D*fr_hat)/(fr_hat'*L*fr_hat)-1\n",
117 | " Input\n",
118 | " -----\n",
119 | " X: {numpy array}, shape (n_samples, n_features)\n",
120 | " input data\n",
121 | " y: {numpy array}, shape (n_samples,)\n",
122 | " input class labels\n",
123 | " Output\n",
124 | " ------\n",
125 | " score: {numpy array}, shape (n_features,)\n",
126 | " fisher score for each feature\n",
127 | " Reference\n",
128 | " ---------\n",
129 | " He, Xiaofei et al. \"Laplacian Score for Feature Selection.\" NIPS 2005.\n",
130 | " Duda, Richard et al. \"Pattern classification.\" John Wiley & Sons, 2012.\n",
131 | " \"\"\"\n",
132 | "\n",
133 | " # Construct weight matrix W in a fisherScore way\n",
134 | " kwargs = {\"neighbor_mode\": \"supervised\", \"fisher_score\": True, 'y': y}\n",
135 | " W = construct_W(X, **kwargs)\n",
136 | "\n",
137 | " # build the diagonal D matrix from affinity matrix W\n",
138 | " D = np.array(W.sum(axis=1))\n",
139 | " L = W\n",
140 | " tmp = np.dot(np.transpose(D), X)\n",
141 | " D = diags(np.transpose(D), [0])\n",
142 | " Xt = np.transpose(X)\n",
143 | " t1 = np.transpose(np.dot(Xt, D.todense()))\n",
144 | " t2 = np.transpose(np.dot(Xt, L.todense()))\n",
145 | " # compute the numerator of Lr\n",
146 | " D_prime = np.sum(np.multiply(t1, X), 0) - np.multiply(tmp, tmp)/D.sum()\n",
147 | " # compute the denominator of Lr\n",
148 | " L_prime = np.sum(np.multiply(t2, X), 0) - np.multiply(tmp, tmp)/D.sum()\n",
149 | " # avoid the denominator of Lr to be 0\n",
150 | " D_prime[D_prime < 1e-12] = 10000\n",
151 | " lap_score = 1 - np.array(np.multiply(L_prime, 1/D_prime))[0, :]\n",
152 | "\n",
153 | " # compute fisher score from laplacian score, where fisher_score = 1/lap_score - 1\n",
154 | " score = 1.0/lap_score - 1\n",
155 | " return np.transpose(score)\n",
156 | "\n",
157 | "\n",
158 | "def feature_ranking(score):\n",
159 | " \"\"\"\n",
160 | " Rank features in descending order according to fisher score, the larger the fisher score, the more important the\n",
161 | " feature is\n",
162 | " \"\"\"\n",
163 | " idx = np.argsort(score, 0)\n",
164 | " return idx[::-1]"
165 | ],
166 | "execution_count": null,
167 | "outputs": []
168 | },
169 | {
170 | "cell_type": "code",
171 | "metadata": {
172 | "colab": {
173 | "base_uri": "https://localhost:8080/"
174 | },
175 | "id": "EpI-gFzRjgGT",
176 | "outputId": "d3738964-eb13-496c-d2f0-ad1821741871"
177 | },
178 | "source": [
179 | "data = raw_data['data']\n",
180 | "labels = raw_data['labels']\n",
181 | "\n",
182 | "print(\"Labels: \", labels.shape) # trial x label\n",
183 | "print(\"Data: \", data.shape) # trial x channel x data"
184 | ],
185 | "execution_count": null,
186 | "outputs": [
187 | {
188 | "output_type": "stream",
189 | "name": "stdout",
190 | "text": [
191 | "Labels: (40, 4)\n",
192 | "Data: (40, 40, 8064)\n"
193 | ]
194 | }
195 | ]
196 | },
197 | {
198 | "cell_type": "code",
199 | "metadata": {
200 | "id": "FTfibgB5c63Y"
201 | },
202 | "source": [
203 | "\"\"\"\n",
204 | "em_labels = []\n",
205 | "for i in range(0, labels.shape[0]):\n",
206 | "\tif (labels[i][0]>5): #high valence\n",
207 | "\t\tif(labels[i][1]>5): # high arousal\n",
208 | "\t\t\tem_labels.append(1) # HVHA\n",
209 | "\t\telse:\n",
210 | "\t\t\tem_labels.append(0) # HVLA\n",
211 | "\telse: # low valence\n",
212 | "\t\tif(labels[i][1]>5): # high arousal\n",
213 | "\t\t\tem_labels.append(2) #LVHA\n",
214 | "\t\telse:\n",
215 | "\t\t\tem_labels.append(3) # LVLA\n",
216 | "\"\"\"\n",
217 | "em_labels = []\n",
218 | "for i in range(0, labels.shape[0]):\n",
219 | "\tif (labels[i][0]>5): #high valence\n",
220 | "\t\t\tem_labels.append(0) # HVHA\n",
221 | "\telse: # low valence\n",
222 | "\t\t\tem_labels.append(1)"
223 | ],
224 | "execution_count": null,
225 | "outputs": []
226 | },
227 | {
228 | "cell_type": "code",
229 | "metadata": {
230 | "colab": {
231 | "base_uri": "https://localhost:8080/"
232 | },
233 | "id": "3jCP0SMBc9iu",
234 | "outputId": "8a955e55-13a1-4f83-e774-5aaedc0d2e1f"
235 | },
236 | "source": [
237 | "print(em_labels)"
238 | ],
239 | "execution_count": null,
240 | "outputs": [
241 | {
242 | "output_type": "stream",
243 | "name": "stdout",
244 | "text": [
245 | "[0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]\n"
246 | ]
247 | }
248 | ]
249 | },
250 | {
251 | "cell_type": "markdown",
252 | "metadata": {
253 | "id": "eQlRP4LrOMlk"
254 | },
255 | "source": [
256 | "# Fisher's Score for Theta Band"
257 | ]
258 | },
259 | {
260 | "cell_type": "code",
261 | "metadata": {
262 | "id": "Na1SqsWbr2y1"
263 | },
264 | "source": [
265 | "# load dataset\n",
266 | "data_theta = pd.read_csv('/content/drive/MyDrive/1df_theta.csv')\n",
267 | "# features from all the channels from the theta band only\n",
268 | "data_theta.shape\n",
269 | "data_theta['videos'] = em_labels\n",
270 | "data_theta['videos'].unique()\n",
271 | "X = data_theta[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
272 | "# taking only first 32 channels (EEG signals)\n",
273 | "y = data_theta['videos']\n",
274 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
275 | "X_train = np.array(X_train)\n",
276 | "y_train = np.array(y_train)\n",
277 | "f_score_theta = fisher_score(X_train, y_train)"
278 | ],
279 | "execution_count": null,
280 | "outputs": []
281 | },
282 | {
283 | "cell_type": "markdown",
284 | "metadata": {
285 | "id": "6jeXnumcG2JB"
286 | },
287 | "source": [
288 | "# Fisher Score for Alpha Band"
289 | ]
290 | },
291 | {
292 | "cell_type": "code",
293 | "metadata": {
294 | "id": "C7fJ9fMdGVbQ"
295 | },
296 | "source": [
297 | "# load dataset\n",
298 | "data_alpha = pd.read_csv('/content/drive/MyDrive/2df_alpha.csv')\n",
299 | "# features from all the channels from the theta band only\n",
300 | "data_alpha.shape\n",
301 | "data_alpha['videos'] = em_labels\n",
302 | "data_alpha['videos'].unique()\n",
303 | "X = data_alpha[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
304 | "# taking only first 32 channels (EEG signals)\n",
305 | "y = data_alpha['videos']\n",
306 | "y.head()\n",
307 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
308 | "X_train = np.array(X_train)\n",
309 | "y_train = np.array(y_train)\n",
310 | "f_score_alpha = fisher_score(X_train, y_train)"
311 | ],
312 | "execution_count": null,
313 | "outputs": []
314 | },
315 | {
316 | "cell_type": "markdown",
317 | "metadata": {
318 | "id": "Np4pvMpaWAhN"
319 | },
320 | "source": [
321 | "# Fisher Score for Beta Band"
322 | ]
323 | },
324 | {
325 | "cell_type": "code",
326 | "metadata": {
327 | "id": "9LA2tAAslnGK"
328 | },
329 | "source": [
330 | "# load dataset\n",
331 | "data_beta = pd.read_csv('/content/drive/MyDrive/3df_beta.csv')\n",
332 | "# features from all the channels from the theta band only\n",
333 | "data_beta.shape\n",
334 | "data_beta['videos'] = em_labels\n",
335 | "data_beta['videos'].unique()\n",
336 | "X = data_beta[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
337 | "# taking only first 32 channels (EEG signals)\n",
338 | "y = data_beta['videos']\n",
339 | "X_train = np.array(X_train)\n",
340 | "y_train = np.array(y_train)\n",
341 | "f_score_beta = fisher_score(X_train, y_train)"
342 | ],
343 | "execution_count": null,
344 | "outputs": []
345 | },
346 | {
347 | "cell_type": "markdown",
348 | "metadata": {
349 | "id": "uxn9t3hDWEBw"
350 | },
351 | "source": [
352 | "# Fisher Score for Gamma Band"
353 | ]
354 | },
355 | {
356 | "cell_type": "code",
357 | "metadata": {
358 | "id": "7Q0uOFsDWEBx"
359 | },
360 | "source": [
361 | "# load dataset\n",
362 | "data_gamma = pd.read_csv('/content/drive/MyDrive/4df_gamma.csv')\n",
363 | "# features from all the channels from the theta band only\n",
364 | "data_gamma.shape\n",
365 | "data_gamma['videos'] = em_labels\n",
366 | "data_gamma['videos'].unique()\n",
367 | "X = data_gamma[['Fp1',\t'AF3',\t'F3',\t'F7',\t'FC5',\t'FC1',\t'C3',\t'T7',\t'CP5',\t'CP1',\t'P3',\t'P7',\t'PO3',\t'O1',\t'Oz',\t'Pz',\t'Fp2',\t'AF4',\t'Fz',\t'F4',\t'F8',\t'FC6',\t'FC2',\t'Cz',\t'C4',\t'T8',\t'CP6',\t'CP2',\t'P4',\t'P8',\t'PO4',\t'O2']]\n",
368 | "# taking only first 32 channels (EEG signals)\n",
369 | "y = data_gamma['videos']\n",
370 | "y.head()\n",
371 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
372 | "X_train = np.array(X_train)\n",
373 | "y_train = np.array(y_train)\n",
374 | "f_score_gamma = fisher_score(X_train, y_train)"
375 | ],
376 | "execution_count": null,
377 | "outputs": []
378 | },
379 | {
380 | "cell_type": "markdown",
381 | "metadata": {
382 | "id": "sUoClL1YB5aW"
383 | },
384 | "source": [
385 | "# Total Avearge F-Score(Theta,Alpha,Beta,Gamma)"
386 | ]
387 | },
388 | {
389 | "cell_type": "code",
390 | "metadata": {
391 | "id": "LCtwrlPCB5C1"
392 | },
393 | "source": [
394 | "final_f_score = (f_score_theta + f_score_alpha + f_score_beta + f_score_gamma)/4"
395 | ],
396 | "execution_count": null,
397 | "outputs": []
398 | },
399 | {
400 | "cell_type": "code",
401 | "metadata": {
402 | "colab": {
403 | "base_uri": "https://localhost:8080/"
404 | },
405 | "id": "GB2MaoDXJC0O",
406 | "outputId": "a3316bbd-3001-4e4b-cba7-1999f6c14d7d"
407 | },
408 | "source": [
409 | "fvalues = pd.Series(final_f_score)\n",
410 | "X_train = pd.DataFrame(X_train)\n",
411 | "fvalues.index = X.columns\n",
412 | "fvalues.sort_values(ascending=False)\n",
413 | "fvalues.to_csv('fscore_final.csv')\n",
414 | "print(fvalues)"
415 | ],
416 | "execution_count": null,
417 | "outputs": [
418 | {
419 | "output_type": "stream",
420 | "name": "stdout",
421 | "text": [
422 | "Fp1 0.001774\n",
423 | "AF3 0.005493\n",
424 | "F3 0.003601\n",
425 | "F7 0.006026\n",
426 | "FC5 0.010173\n",
427 | "FC1 0.007053\n",
428 | "C3 0.019712\n",
429 | "T7 0.020898\n",
430 | "CP5 0.014118\n",
431 | "CP1 0.007893\n",
432 | "P3 0.007443\n",
433 | "P7 0.018133\n",
434 | "PO3 0.001538\n",
435 | "O1 0.002034\n",
436 | "Oz 0.000358\n",
437 | "Pz 0.005698\n",
438 | "Fp2 0.007796\n",
439 | "AF4 0.016211\n",
440 | "Fz 0.055144\n",
441 | "F4 0.025343\n",
442 | "F8 0.005955\n",
443 | "FC6 0.010683\n",
444 | "FC2 0.052024\n",
445 | "Cz 0.002295\n",
446 | "C4 0.029237\n",
447 | "T8 0.017139\n",
448 | "CP6 0.024783\n",
449 | "CP2 0.007043\n",
450 | "P4 0.013315\n",
451 | "P8 0.004628\n",
452 | "PO4 0.008457\n",
453 | "O2 0.002314\n",
454 | "dtype: float64\n"
455 | ]
456 | }
457 | ]
458 | },
459 | {
460 | "cell_type": "code",
461 | "metadata": {
462 | "colab": {
463 | "base_uri": "https://localhost:8080/",
464 | "height": 510
465 | },
466 | "id": "4JomiwHHuhE8",
467 | "outputId": "f9559df8-c158-44c9-9dee-882427f5dcd6"
468 | },
469 | "source": [
470 | "fvalues.sort_values(ascending = False).plot.bar(figsize=(10,8))"
471 | ],
472 | "execution_count": null,
473 | "outputs": [
474 | {
475 | "output_type": "execute_result",
476 | "data": {
477 | "text/plain": [
478 | ""
479 | ]
480 | },
481 | "metadata": {},
482 | "execution_count": 136
483 | },
484 | {
485 | "output_type": "display_data",
486 | "data": {
487 | "image/png": "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\n",
488 | "text/plain": [
489 | ""
490 | ]
491 | },
492 | "metadata": {
493 | "needs_background": "light"
494 | }
495 | }
496 | ]
497 | },
498 | {
499 | "cell_type": "markdown",
500 | "metadata": {
501 | "id": "GJHHjtp-rOo_"
502 | },
503 | "source": [
504 | "# Classification"
505 | ]
506 | },
507 | {
508 | "cell_type": "markdown",
509 | "metadata": {
510 | "id": "Wt54ccMkHIIV"
511 | },
512 | "source": [
513 | "##Taking 'Fz' Feature(Highest Score)"
514 | ]
515 | },
516 | {
517 | "cell_type": "code",
518 | "metadata": {
519 | "id": "5PhZZyG55qSM"
520 | },
521 | "source": [
522 | "import numpy as np\n",
523 | "import pandas as pd\n",
524 | "from sklearn.model_selection import train_test_split\n",
525 | "from sklearn import svm\n",
526 | "from sklearn.metrics import accuracy_score"
527 | ],
528 | "execution_count": null,
529 | "outputs": []
530 | },
531 | {
532 | "cell_type": "code",
533 | "metadata": {
534 | "id": "RyDSZVATz2Pw"
535 | },
536 | "source": [
537 | "all_data = pd.read_csv(\"/content/drive/MyDrive/7AllMerged.csv\")\n",
538 | "data = all_data.drop('videos', axis = 1)\n",
539 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\"]]\n",
540 | "y = np.array(em_labels)"
541 | ],
542 | "execution_count": null,
543 | "outputs": []
544 | },
545 | {
546 | "cell_type": "code",
547 | "metadata": {
548 | "id": "xsyfwE3cZ0Wv"
549 | },
550 | "source": [
551 | "feature_name = all_data.columns\n",
552 | "feature_name = np.array(feature_name)"
553 | ],
554 | "execution_count": null,
555 | "outputs": []
556 | },
557 | {
558 | "cell_type": "code",
559 | "metadata": {
560 | "id": "33lHLy5X6G4b"
561 | },
562 | "source": [
563 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)"
564 | ],
565 | "execution_count": null,
566 | "outputs": []
567 | },
568 | {
569 | "cell_type": "code",
570 | "metadata": {
571 | "id": "7-s0QaD8SYlR",
572 | "colab": {
573 | "base_uri": "https://localhost:8080/"
574 | },
575 | "outputId": "7a30562b-aa19-4db1-a7c2-699a57ac87aa"
576 | },
577 | "source": [
578 | "classifier = svm.SVC(kernel='poly')\n",
579 | "classifier.fit(x_train, y_train)\n",
580 | "x_train_prediction = classifier.predict(x_train)\n",
581 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
582 | "print('Accuracy on training data : ', training_data_accuray)\n",
583 | "x_test_prediction = classifier.predict(x_test)\n",
584 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
585 | "print('Accuracy on test data : ', test_data_accuray)"
586 | ],
587 | "execution_count": null,
588 | "outputs": [
589 | {
590 | "output_type": "stream",
591 | "name": "stdout",
592 | "text": [
593 | "Accuracy on training data : 0.6875\n",
594 | "Accuracy on test data : 0.75\n"
595 | ]
596 | }
597 | ]
598 | },
599 | {
600 | "cell_type": "markdown",
601 | "metadata": {
602 | "id": "WDsIxFnVHbvI"
603 | },
604 | "source": [
605 | "##Taking Fz and Fc2 Feature"
606 | ]
607 | },
608 | {
609 | "cell_type": "code",
610 | "metadata": {
611 | "id": "2rKDoB6kHcsy",
612 | "colab": {
613 | "base_uri": "https://localhost:8080/"
614 | },
615 | "outputId": "32c3ab48-8831-4f7f-f2bf-b3d1abac5a44"
616 | },
617 | "source": [
618 | "data = all_data.drop('videos', axis = 1)\n",
619 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"]]\n",
620 | "y = np.array(em_labels)\n",
621 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
622 | "classifier = svm.SVC(kernel='poly')\n",
623 | "classifier.fit(x_train,y_train)\n",
624 | "x_train_prediction = classifier.predict(x_train)\n",
625 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
626 | "print('Accuracy on training data : ', training_data_accuray)\n",
627 | "x_test_prediction = classifier.predict(x_test)\n",
628 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
629 | "print('Accuracy on test data : ', test_data_accuray)"
630 | ],
631 | "execution_count": null,
632 | "outputs": [
633 | {
634 | "output_type": "stream",
635 | "name": "stdout",
636 | "text": [
637 | "Accuracy on training data : 0.6875\n",
638 | "Accuracy on test data : 0.75\n"
639 | ]
640 | }
641 | ]
642 | },
643 | {
644 | "cell_type": "markdown",
645 | "metadata": {
646 | "id": "fu0jhQw9bWiB"
647 | },
648 | "source": [
649 | "##Taking Fz and Fc2, F4 Feature"
650 | ]
651 | },
652 | {
653 | "cell_type": "code",
654 | "metadata": {
655 | "id": "csYgHSlEbVCA",
656 | "colab": {
657 | "base_uri": "https://localhost:8080/"
658 | },
659 | "outputId": "2b0fad71-7f81-43d9-d975-05074b7dbfe4"
660 | },
661 | "source": [
662 | "data = all_data.drop('videos', axis = 1)\n",
663 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\", \"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\"]]\n",
664 | "y = np.array(em_labels)\n",
665 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
666 | "classifier = svm.SVC(kernel='poly')\n",
667 | "classifier.fit(x_train,y_train)\n",
668 | "x_train_prediction = classifier.predict(x_train)\n",
669 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
670 | "print('Accuracy on training data : ', training_data_accuray)\n",
671 | "x_test_prediction = classifier.predict(x_test)\n",
672 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
673 | "print('Accuracy on test data : ', test_data_accuray)"
674 | ],
675 | "execution_count": null,
676 | "outputs": [
677 | {
678 | "output_type": "stream",
679 | "name": "stdout",
680 | "text": [
681 | "Accuracy on training data : 0.65625\n",
682 | "Accuracy on test data : 0.875\n"
683 | ]
684 | }
685 | ]
686 | },
687 | {
688 | "cell_type": "markdown",
689 | "metadata": {
690 | "id": "4cQmHxXnkzX2"
691 | },
692 | "source": [
693 | "##Taking Fz and Fc2, F4, CP6 Feature"
694 | ]
695 | },
696 | {
697 | "cell_type": "code",
698 | "metadata": {
699 | "id": "3xM5zXPok0Iv",
700 | "colab": {
701 | "base_uri": "https://localhost:8080/"
702 | },
703 | "outputId": "d8c9d1cc-eaf4-4e99-f185-8ac36a1c4fd2"
704 | },
705 | "source": [
706 | "data = all_data.drop('videos', axis = 1)\n",
707 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\",\\\n",
708 | " \"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\", \"CP6Theta\",\"CP6Alpha\",\"CP6Beta\",\"CP6Gamma\"]]\n",
709 | "y = np.array(em_labels)\n",
710 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
711 | "classifier = svm.SVC(kernel='poly')\n",
712 | "classifier.fit(x_train,y_train)\n",
713 | "x_train_prediction = classifier.predict(x_train)\n",
714 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
715 | "print('Accuracy on training data : ', training_data_accuray)\n",
716 | "x_test_prediction = classifier.predict(x_test)\n",
717 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
718 | "print('Accuracy on test data : ', test_data_accuray)"
719 | ],
720 | "execution_count": null,
721 | "outputs": [
722 | {
723 | "output_type": "stream",
724 | "name": "stdout",
725 | "text": [
726 | "Accuracy on training data : 0.65625\n",
727 | "Accuracy on test data : 0.875\n"
728 | ]
729 | }
730 | ]
731 | },
732 | {
733 | "cell_type": "markdown",
734 | "metadata": {
735 | "id": "LWvyfxP0fjkD"
736 | },
737 | "source": [
738 | "##Taking Fz and Fc2, F4, CP6, AF4 Feature"
739 | ]
740 | },
741 | {
742 | "cell_type": "code",
743 | "metadata": {
744 | "id": "NK0tszlNfjkD",
745 | "colab": {
746 | "base_uri": "https://localhost:8080/"
747 | },
748 | "outputId": "f4f6eb43-a506-43ea-f49f-d754dd513c77"
749 | },
750 | "source": [
751 | "data = all_data.drop('videos', axis = 1)\n",
752 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"\\\n",
753 | " ,\"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\", \"CP6Theta\",\"CP6Alpha\",\"CP6Beta\",\"CP6Gamma\"\\\n",
754 | " ,\"AF4Theta\",\"AF4Alpha\",\"AF4Beta\",\"AF4Gamma\"]]\n",
755 | "y = np.array(em_labels)\n",
756 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
757 | "classifier = svm.SVC(kernel='poly')\n",
758 | "classifier.fit(x_train,y_train)\n",
759 | "x_train_prediction = classifier.predict(x_train)\n",
760 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
761 | "print('Accuracy on training data : ', training_data_accuray)\n",
762 | "x_test_prediction = classifier.predict(x_test)\n",
763 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
764 | "print('Accuracy on test data : ', test_data_accuray)"
765 | ],
766 | "execution_count": null,
767 | "outputs": [
768 | {
769 | "output_type": "stream",
770 | "name": "stdout",
771 | "text": [
772 | "Accuracy on training data : 0.625\n",
773 | "Accuracy on test data : 0.875\n"
774 | ]
775 | }
776 | ]
777 | },
778 | {
779 | "cell_type": "markdown",
780 | "metadata": {
781 | "id": "F3I-Eaa5nZxR"
782 | },
783 | "source": [
784 | "##Taking Fz and Fc2, F4, CP6, AF4, CP1 Feature"
785 | ]
786 | },
787 | {
788 | "cell_type": "code",
789 | "metadata": {
790 | "colab": {
791 | "base_uri": "https://localhost:8080/"
792 | },
793 | "id": "PNn69PIhmrw3",
794 | "outputId": "7edca0d2-18cc-4d5e-f177-c19abd8159c9"
795 | },
796 | "source": [
797 | "data = all_data.drop('videos', axis = 1)\n",
798 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"\\\n",
799 | " ,\"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\", \"CP6Theta\",\"CP6Alpha\",\"CP6Beta\",\"CP6Gamma\"\\\n",
800 | " ,\"AF4Theta\",\"AF4Alpha\",\"AF4Beta\",\"AF4Gamma\", \"CP1Theta\",\"CP1Alpha\",\"CP1Beta\",\"CP1Gamma\"]]\n",
801 | "y = np.array(em_labels)\n",
802 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
803 | "classifier = svm.SVC(kernel='poly')\n",
804 | "classifier.fit(x_train,y_train)\n",
805 | "x_train_prediction = classifier.predict(x_train)\n",
806 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
807 | "print('Accuracy on training data : ', training_data_accuray)\n",
808 | "x_test_prediction = classifier.predict(x_test)\n",
809 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
810 | "print('Accuracy on test data : ', test_data_accuray)"
811 | ],
812 | "execution_count": null,
813 | "outputs": [
814 | {
815 | "output_type": "stream",
816 | "name": "stdout",
817 | "text": [
818 | "Accuracy on training data : 0.65625\n",
819 | "Accuracy on test data : 0.875\n"
820 | ]
821 | }
822 | ]
823 | },
824 | {
825 | "cell_type": "markdown",
826 | "metadata": {
827 | "id": "TbPfS-zQoH6J"
828 | },
829 | "source": [
830 | "##Taking Fz and Fc2, F4, CP6, AF4, CP1, FC1 Feature"
831 | ]
832 | },
833 | {
834 | "cell_type": "code",
835 | "metadata": {
836 | "colab": {
837 | "base_uri": "https://localhost:8080/"
838 | },
839 | "id": "mewHyapnn5Vi",
840 | "outputId": "19e888ab-eb00-4da8-fced-ab1ebb3d3b20"
841 | },
842 | "source": [
843 | "data = all_data.drop('videos', axis = 1)\n",
844 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"\\\n",
845 | " ,\"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\", \"CP6Theta\",\"CP6Alpha\",\"CP6Beta\",\"CP6Gamma\"\\\n",
846 | " ,\"AF4Theta\",\"AF4Alpha\",\"AF4Beta\",\"AF4Gamma\", \"CP1Theta\",\"CP1Alpha\",\"CP1Beta\",\"CP1Gamma\",\n",
847 | " \"FC1Theta\",\"FC1Alpha\",\"FC1Beta\",\"FC1Gamma\"]]\n",
848 | "y = np.array(em_labels)\n",
849 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
850 | "classifier = svm.SVC(kernel='poly')\n",
851 | "classifier.fit(x_train,y_train)\n",
852 | "x_train_prediction = classifier.predict(x_train)\n",
853 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
854 | "print('Accuracy on training data : ', training_data_accuray)\n",
855 | "x_test_prediction = classifier.predict(x_test)\n",
856 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
857 | "print('Accuracy on test data : ', test_data_accuray)"
858 | ],
859 | "execution_count": null,
860 | "outputs": [
861 | {
862 | "output_type": "stream",
863 | "name": "stdout",
864 | "text": [
865 | "Accuracy on training data : 0.65625\n",
866 | "Accuracy on test data : 0.875\n"
867 | ]
868 | }
869 | ]
870 | },
871 | {
872 | "cell_type": "markdown",
873 | "metadata": {
874 | "id": "ufo7iueIol43"
875 | },
876 | "source": [
877 | "##Taking Fz and Fc2, F4, CP6, AF4, CP1, FC1, CP2 Feature"
878 | ]
879 | },
880 | {
881 | "cell_type": "code",
882 | "metadata": {
883 | "colab": {
884 | "base_uri": "https://localhost:8080/"
885 | },
886 | "id": "FDqF62INoR-t",
887 | "outputId": "fa26dd39-ddbb-404a-f189-74e31fa235f0"
888 | },
889 | "source": [
890 | "data = all_data.drop('videos', axis = 1)\n",
891 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"\\\n",
892 | " ,\"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\", \"CP6Theta\",\"CP6Alpha\",\"CP6Beta\",\"CP6Gamma\"\\\n",
893 | " ,\"AF4Theta\",\"AF4Alpha\",\"AF4Beta\",\"AF4Gamma\", \"CP1Theta\",\"CP1Alpha\",\"CP1Beta\",\"CP1Gamma\",\n",
894 | " \"FC1Theta\",\"FC1Alpha\",\"FC1Beta\",\"FC1Gamma\", \"CP2Theta\",\"CP2Alpha\",\"CP2Beta\",\"CP2Gamma\"]]\n",
895 | "y = np.array(em_labels)\n",
896 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
897 | "classifier = svm.SVC(kernel='poly')\n",
898 | "classifier.fit(x_train,y_train)\n",
899 | "x_train_prediction = classifier.predict(x_train)\n",
900 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
901 | "print('Accuracy on training data : ', training_data_accuray)\n",
902 | "x_test_prediction = classifier.predict(x_test)\n",
903 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
904 | "print('Accuracy on test data : ', test_data_accuray)"
905 | ],
906 | "execution_count": null,
907 | "outputs": [
908 | {
909 | "output_type": "stream",
910 | "name": "stdout",
911 | "text": [
912 | "Accuracy on training data : 0.65625\n",
913 | "Accuracy on test data : 0.875\n"
914 | ]
915 | }
916 | ]
917 | },
918 | {
919 | "cell_type": "code",
920 | "metadata": {
921 | "colab": {
922 | "base_uri": "https://localhost:8080/"
923 | },
924 | "id": "LGJk4O81oy9n",
925 | "outputId": "572ec827-ef53-40c6-dc8a-0b4ccc618131"
926 | },
927 | "source": [
928 | "data = all_data.drop('videos', axis = 1)\n",
929 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"\\\n",
930 | " ,\"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\", \"CP6Theta\",\"CP6Alpha\",\"CP6Beta\",\"CP6Gamma\"\\\n",
931 | " ,\"AF4Theta\",\"AF4Alpha\",\"AF4Beta\",\"AF4Gamma\", \"CP1Theta\",\"CP1Alpha\",\"CP1Beta\",\"CP1Gamma\"\\\n",
932 | " ,\"FC1Theta\",\"FC1Alpha\",\"FC1Beta\",\"FC1Gamma\", \"CP2Theta\",\"CP2Alpha\",\"CP2Beta\",\"CP2Gamma\"]]\n",
933 | "y = np.array(em_labels)\n",
934 | "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 0)\n",
935 | "classifier = svm.SVC(kernel='poly')\n",
936 | "classifier.fit(x_train,y_train)\n",
937 | "x_train_prediction = classifier.predict(x_train)\n",
938 | "training_data_accuray = accuracy_score(x_train_prediction,y_train)\n",
939 | "print('Accuracy on training data : ', training_data_accuray)\n",
940 | "x_test_prediction = classifier.predict(x_test)\n",
941 | "test_data_accuray = accuracy_score(x_test_prediction,y_test)\n",
942 | "print('Accuracy on test data : ', test_data_accuray)"
943 | ],
944 | "execution_count": null,
945 | "outputs": [
946 | {
947 | "output_type": "stream",
948 | "name": "stdout",
949 | "text": [
950 | "Accuracy on training data : 0.65625\n",
951 | "Accuracy on test data : 0.875\n"
952 | ]
953 | }
954 | ]
955 | },
956 | {
957 | "cell_type": "code",
958 | "metadata": {
959 | "colab": {
960 | "base_uri": "https://localhost:8080/"
961 | },
962 | "id": "dxdmG9gppgOS",
963 | "outputId": "8f1305f5-de08-47d8-de0a-285a86433065"
964 | },
965 | "source": [
966 | "#Loading the dataset\n",
967 | "data = all_data.drop('videos', axis = 1)\n",
968 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\"]]\n",
969 | "\"\"\"\n",
970 | "x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"\\\n",
971 | " ,\"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\", \"CP6Theta\",\"CP6Alpha\",\"CP6Beta\",\"CP6Gamma\"\\\n",
972 | " ,\"AF4Theta\",\"AF4Alpha\",\"AF4Beta\",\"AF4Gamma\", \"CP1Theta\",\"CP1Alpha\",\"CP1Beta\",\"CP1Gamma\"\\\n",
973 | " ,\"FC1Theta\",\"FC1Alpha\",\"FC1Beta\",\"FC1Gamma\", \"CP2Theta\",\"CP2Alpha\",\"CP2Beta\",\"CP2Gamma\"]]\n",
974 | "\"\"\"\n",
975 | "y = np.array(em_labels)\n",
976 | "\n",
977 | "#Implementing cross validation\n",
978 | "from sklearn.model_selection import KFold\n",
979 | "k = 10\n",
980 | "kf = KFold(n_splits=k, random_state=None)\n",
981 | "#model = LogisticRegression(solver= 'liblinear')\n",
982 | "model = svm.SVC(kernel='poly')\n",
983 | "\n",
984 | "acc_score = []\n",
985 | "\n",
986 | "for train_index , test_index in kf.split(x):\n",
987 | " x_train , x_test = x.iloc[train_index,:],x.iloc[test_index,:]\n",
988 | " y_train , y_test = y[train_index] , y[test_index]\n",
989 | " \n",
990 | " model.fit(x_train,y_train)\n",
991 | " pred_values = model.predict(x_test)\n",
992 | " \n",
993 | " acc = accuracy_score(pred_values , y_test)\n",
994 | " acc_score.append(acc)\n",
995 | " \n",
996 | "avg_acc_score = sum(acc_score)/k\n",
997 | "\n",
998 | "print('accuracy of each fold - {}'.format(acc_score))\n",
999 | "print('Avg accuracy : {}'.format(avg_acc_score))"
1000 | ],
1001 | "execution_count": null,
1002 | "outputs": [
1003 | {
1004 | "output_type": "stream",
1005 | "name": "stdout",
1006 | "text": [
1007 | "accuracy of each fold - [1.0, 0.75, 0.25, 0.5, 0.75, 0.75, 0.0, 0.25, 0.5, 0.5]\n",
1008 | "Avg accuracy : 0.525\n"
1009 | ]
1010 | }
1011 | ]
1012 | },
1013 | {
1014 | "cell_type": "code",
1015 | "metadata": {
1016 | "id": "04LrRu6IqS38"
1017 | },
1018 | "source": [
1019 | "#Importing required libraries\n",
1020 | "#from sklearn.datasets import load_breast_cancer\n",
1021 | "import pandas as pd\n",
1022 | "from sklearn.model_selection import KFold \n",
1023 | "from sklearn.neural_network import MLPClassifier\n",
1024 | "from sklearn.metrics import accuracy_score\n",
1025 | "\n",
1026 | "#Loading the dataset\n",
1027 | "def mlpclassifier(mystr):\n",
1028 | " data = all_data.drop('videos', axis = 1)\n",
1029 | " #x = data[[\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\"]]\n",
1030 | " x = data[mystr]\n",
1031 | " y = np.array(em_labels)\n",
1032 | "\n",
1033 | " #Implementing cross validation\n",
1034 | "\n",
1035 | " k = 10\n",
1036 | " kf = KFold(n_splits=k, random_state=None)\n",
1037 | " model = MLPClassifier(alpha=1e-5,hidden_layer_sizes=(100, ), random_state=1)\n",
1038 | " \n",
1039 | " acc_score = []\n",
1040 | "\n",
1041 | " for train_index , test_index in kf.split(x):\n",
1042 | " x_train , x_test = x.iloc[train_index,:],x.iloc[test_index,:]\n",
1043 | " y_train , y_test = y[train_index] , y[test_index]\n",
1044 | " \n",
1045 | " model.fit(x_train,y_train)\n",
1046 | " pred_values = model.predict(x_test)\n",
1047 | " print(\"Train accuracy: \", )\n",
1048 | " \n",
1049 | " acc = accuracy_score(pred_values , y_test)\n",
1050 | " acc_score.append(acc)\n",
1051 | " \n",
1052 | " avg_acc_score = sum(acc_score)/k\n",
1053 | "\n",
1054 | " print('accuracy of each fold - {}'.format(acc_score))\n",
1055 | " print('Avg accuracy : {}'.format(avg_acc_score))"
1056 | ],
1057 | "execution_count": null,
1058 | "outputs": []
1059 | },
1060 | {
1061 | "cell_type": "code",
1062 | "metadata": {
1063 | "colab": {
1064 | "base_uri": "https://localhost:8080/"
1065 | },
1066 | "id": "T_r3TeRRrUY_",
1067 | "outputId": "5f5d7a7a-cd38-40ae-bdcd-5231bed9001b"
1068 | },
1069 | "source": [
1070 | "mlpclassifier([\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"])"
1071 | ],
1072 | "execution_count": null,
1073 | "outputs": [
1074 | {
1075 | "output_type": "stream",
1076 | "name": "stdout",
1077 | "text": [
1078 | "accuracy of each fold - [0.25, 0.0, 1.0, 0.75, 0.25, 0.0, 0.25, 0.75, 1.0, 0.75]\n",
1079 | "Avg accuracy : 0.5\n"
1080 | ]
1081 | }
1082 | ]
1083 | },
1084 | {
1085 | "cell_type": "code",
1086 | "metadata": {
1087 | "colab": {
1088 | "base_uri": "https://localhost:8080/"
1089 | },
1090 | "id": "5M7I6VtStFmV",
1091 | "outputId": "5603bcbc-fc28-40c0-9506-8a6e949ba9b0"
1092 | },
1093 | "source": [
1094 | "mlpclassifier([\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\", \"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\"])"
1095 | ],
1096 | "execution_count": null,
1097 | "outputs": [
1098 | {
1099 | "output_type": "stream",
1100 | "name": "stdout",
1101 | "text": [
1102 | "accuracy of each fold - [0.5, 0.75, 0.5, 0.5, 0.75, 1.0, 0.25, 0.5, 0.75, 0.5]\n",
1103 | "Avg accuracy : 0.6\n"
1104 | ]
1105 | }
1106 | ]
1107 | },
1108 | {
1109 | "cell_type": "code",
1110 | "metadata": {
1111 | "colab": {
1112 | "base_uri": "https://localhost:8080/"
1113 | },
1114 | "id": "V160V7tBtUO4",
1115 | "outputId": "52292219-dbfb-4c39-c518-f26e4e1a0fe9"
1116 | },
1117 | "source": [
1118 | "mlpclassifier([\"FzTheta\",\"FzAlpha\",\"FzBeta\",\"FzGamma\", \"FC2Theta\",\"FC2Alpha\",\"FC2Beta\",\"FC2Gamma\"\\\n",
1119 | " ,\"F4Theta\",\"F4Alpha\",\"F4Beta\",\"F4Gamma\"])"
1120 | ],
1121 | "execution_count": null,
1122 | "outputs": [
1123 | {
1124 | "output_type": "stream",
1125 | "name": "stdout",
1126 | "text": [
1127 | "accuracy of each fold - [0.5, 0.75, 0.5, 0.5, 0.75, 1.0, 0.25, 0.5, 0.75, 0.5]\n",
1128 | "Avg accuracy : 0.6\n"
1129 | ]
1130 | }
1131 | ]
1132 | },
1133 | {
1134 | "cell_type": "code",
1135 | "metadata": {
1136 | "id": "jQLRi_01tpB5"
1137 | },
1138 | "source": [
1139 | ""
1140 | ],
1141 | "execution_count": null,
1142 | "outputs": []
1143 | }
1144 | ]
1145 | }
--------------------------------------------------------------------------------