From 8a6573fa1671ab8bf14319636a381381a781db45 Mon Sep 17 00:00:00 2001 From: Gaurav Kumar Raghav Date: Fri, 6 Jul 2018 23:19:34 +0530 Subject: [PATCH] Add files via upload --- creating_vector.py | 42 +++++++++++++++++++++++++++++++++++ load_deap.py | 45 +++++++++++++++++++++++++++++++++++++ svm_clas.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+) create mode 100644 creating_vector.py create mode 100644 load_deap.py create mode 100644 svm_clas.py diff --git a/creating_vector.py b/creating_vector.py new file mode 100644 index 0000000..fdf58a9 --- /dev/null +++ b/creating_vector.py @@ -0,0 +1,42 @@ +import csv +from collections import defaultdict +import numpy as np +from scipy.signal import * +from numpy.fft import * +from scipy import * +from pylab import * +import pywt +fout_data = open("train.csv",'a') +vec = [] +chan = ['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'] +columns = defaultdict(list) # each value in each column is appended to a list + +with open("features_raw.csv") as f: + reader = csv.DictReader(f) # read rows into a dictionary format + for row in reader: # read a row as {column1: value1, column2: value2,...} + for (k,v) in row.items(): # go over each column name and value + columns[k].append(v) # append the value into the appropriate list + # based on column name k +for i in chan: + x = np.array(columns[i]).astype(np.float) + coeffs = pywt.wavedec(x, 'db4', level=6) + cA2, cD1, cD2,cD3,cD4,cD5,cD6 = coeffs + cD5 = np.std(cD5) + cD4 = np.std(cD4) + cD3 = np.std(cD3) + cD2 = np.std(cD2) + cD1 = np.std(cD1) + if i =="O2": + fout_data.write(str(cD5)+",") + fout_data.write(str(cD4)+",") + fout_data.write(str(cD3)+",") + fout_data.write(str(cD2)+",") + fout_data.write(str(cD1)) + else: + fout_data.write(str(cD5)+",") + fout_data.write(str(cD4)+",") + fout_data.write(str(cD3)+",") + fout_data.write(str(cD2)+",") + fout_data.write(str(cD1)+",") +fout_data.write("\n") +fout_data.close() diff --git a/load_deap.py b/load_deap.py new file mode 100644 index 0000000..748cf3c --- /dev/null +++ b/load_deap.py @@ -0,0 +1,45 @@ +import cPickle +import os +from multiprocessing import Pool +import sys +import numpy as np +chan = ['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'] +nLabel, nTrial, nUser, nChannel, nTime = 4, 40, 32, 32, 8064 +print "Program started \n" +fout_labels0 = open("labels_0.dat",'w') +fout_labels1 = open("labels_1.dat",'w') +fout_labels2 = open("labels_2.dat",'w') +fout_labels3 = open("labels_3.dat",'w') +for i in range(nUser):#4, 40, 32, 32, 8064 + if i < 10: + name = '%0*d' % (2,i+1) + else: + name = i+1 + fname = "/data_preprocessed_python/data_preprocessed_python/s"+str(name)+".dat" + x = cPickle.load(open(fname, 'rb')) + print fname + for tr in range(nTrial): + fout_data = open("features_raw.csv",'w') + for ch in chan: + fout_data.write(ch+",") + fout_data.write("\n") + for dat in range(nTime): + for ch in range(nChannel): + if ch <32: + if ch == 31: + fout_data.write(str(x['data'][tr][ch][dat])); + else: + fout_data.write(str(x['data'][tr][ch][dat])+","); + fout_data.write("\n"); + fout_labels0.write(str(x['labels'][tr][0]) + "\n"); + fout_labels1.write(str(x['labels'][tr][1]) + "\n"); + fout_labels2.write(str(x['labels'][tr][2]) + "\n"); + fout_labels3.write(str(x['labels'][tr][3]) + "\n"); + fout_data.close() + os.system('python creating_vector.py') + print "user "+ str(i) +" trail"+ str(tr) +fout_labels0.close() +fout_labels1.close() +fout_labels2.close() +fout_labels3.close() +print "\n"+"Print Successful" diff --git a/svm_clas.py b/svm_clas.py new file mode 100644 index 0000000..1db7801 --- /dev/null +++ b/svm_clas.py @@ -0,0 +1,55 @@ +from sklearn import svm +import numpy as np +train_y = [] +train_a = [] +train_x = np.genfromtxt('train.csv',delimiter=',') +f = open("labels_0.dat","r") +for i in f: + train_y.append(i) +train_y = np.array(train_y).astype(np.float) +train_y = train_y.astype(np.int) +train_x = np.array(train_x) +#print "valence",train_y +#print train_x +#print "train_x",train_x +clf = svm.SVC() +clf.fit(train_x, train_y) + + +f = open("labels_1.dat","r") +for i in f: + train_a.append(i) +train_a = np.array(train_a).astype(np.float) +train_a = train_a.astype(np.int) +#print "arousal",train_a[1040:1280] +#print "train_x",len(train_x[0:26]) +clf1 = svm.SVC() +clf1.fit(train_x, train_a) +#print test_a +predict_al = clf1.predict(train_x) +#print "alrosal",predict_al +predict_val = clf.predict(train_x) +#print "valence",predict_val +val_count = al_count = 0 +for i in range(len(train_y)): + if train_y[i] == predict_val[i]: + val_count = val_count+1 + if train_a[i] == predict_al[i]: + al_count = al_count+1 +print "predicted valence",(float(val_count)/len(train_y))*100 +print "predicted arousal",(float(al_count)/len(train_y))*100 +# classifier efficiency +''' +predicted valence 98.046875 percentage +predicted arousal 97.890625 percentage + +predicted valence 95.0 +predicted arousal 96.09375 +''' +# output +''' +predicted valence 17.9166666667 +predicted arousal 13.3333333333 +''' +#chan = ['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'] +