├── K-foldCrossValidation.py ├── Small dataset.py ├── dep.py ├── labels.py ├── network.py ├── nor.py ├── scores_10fold.txt └── scratch.py /K-foldCrossValidation.py: -------------------------------------------------------------------------------- 1 | # MLP for Pima Indians Dataset with 10-fold cross validation 2 | from keras.models import Sequential 3 | from keras.layers import Dense, Dropout 4 | from keras.layers import Embedding 5 | from keras.layers import Conv1D, GlobalAveragePooling1D, MaxPooling1D 6 | from sklearn.model_selection import StratifiedKFold 7 | import numpy 8 | # fix random seed for reproducibility 9 | 10 | """ 11 | model.metrics_names[0] : 'loss' 12 | model.metrics_names[1] : 'acc' 13 | """ 14 | seed = 7 15 | numpy.random.seed(seed) 16 | # define 10-fold cross validation test harness 17 | kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed) 18 | cvscores = [] 19 | for train, test in kfold.split(dataset, labels): 20 | model = Sequential() 21 | model.add(Conv1D(32, 5, activation='relu', input_shape=(600,1))) 22 | model.add(Conv1D(64, 1, activation='relu')) 23 | model.add(MaxPooling1D(1)) 24 | model.add(Conv1D(128, 1, activation='relu')) 25 | model.add(Conv1D(128, 1, activation='relu')) 26 | model.add(GlobalAveragePooling1D()) 27 | model.add(Dropout(0.5)) 28 | model.add(Dense(1, activation='sigmoid')) 29 | model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy']) 30 | model.fit(dataset[train], labels[train], batch_size=20, epochs=1) 31 | #evaluate 32 | scores = model.evaluate(dataset[test], labels[test], batch_size=15, verbose=0) 33 | #print(score) 34 | # evaluate the model 35 | #scores = model.evaluate(X[test], Y[test], verbose=0) 36 | print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) 37 | cvscores.append(scores[1] * 100) 38 | print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores), numpy.std(cvscores))) 39 | with open('scores_10fold.txt', 'w') as f: 40 | for item in cvscores: 41 | f.write("%s\n" % item) -------------------------------------------------------------------------------- /Small dataset.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | # MLP for Dataset with 10-fold cross validation 4 | from keras.models import Sequential 5 | from keras.layers import Dense 6 | from sklearn.model_selection import StratifiedKFold 7 | import numpy 8 | 9 | # fix random seed for reproducibility 10 | seed = 7 11 | numpy.random.seed(seed) 12 | 13 | 14 | # load pima indians dataset 15 | dataset = numpy.loadtxt("/home/spectre/Downloads/abcd.csv", delimiter=",") 16 | # split into input (X) and output (Y) variables 17 | X = dataset[:,0:8] 18 | Y = dataset[:,8] 19 | # define 10-fold cross validation test harness 20 | kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed) 21 | cvscores = [] 22 | for train, test in kfold.split(X, Y): 23 | # create model 24 | model = Sequential() 25 | model.add(Dense(12, input_dim=8, activation='relu')) 26 | model.add(Dense(8, activation='relu')) 27 | model.add(Dense(1, activation='sigmoid')) 28 | # Compile model 29 | model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 30 | # Fit the model 31 | model.fit(X[train], Y[train], epochs=150, batch_size=10, verbose=0) 32 | # evaluate the model 33 | scores = model.evaluate(X[test], Y[test], verbose=0) 34 | print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) 35 | cvscores.append(scores[1] * 100) 36 | print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores), numpy.std(cvscores))) 37 | -------------------------------------------------------------------------------- /dep.py: -------------------------------------------------------------------------------- 1 | from scipy import stats 2 | import numpy as np 3 | 4 | dep_left_cl=[] 5 | i=1 6 | while(i<31): 7 | data=[] 8 | f=open('G:\Major project\Depression work data\depression-mat\\leftclosed'+str(i)+'.txt') 9 | for line in f: 10 | data.append(line.rstrip("\n").strip(" ")) 11 | data = list(filter(None, data)) 12 | data=np.asarray(data[:60000]).astype(float) 13 | data = stats.zscore(data, axis=0) 14 | temp=np.array_split(data,100) 15 | dep_left_cl.extend(temp) 16 | i=i+1 17 | 18 | 19 | dep_right_cl=[] 20 | i=1 21 | while(i<31): 22 | data=[] 23 | f=open('G:\Major project\Depression work data\depression-mat\\leftclosed'+str(i)+'.txt') 24 | for line in f: 25 | data.append(line.rstrip("\n").strip(" ")) 26 | data = list(filter(None,data)) 27 | data=np.asarray(data[:60000]).astype(float) 28 | data = stats.zscore(data, axis=0) 29 | temp=np.array_split(data,100) 30 | dep_right_cl.extend(temp) 31 | i=i+1 32 | 33 | dep_left_op=[] 34 | i=1 35 | while(i<31): 36 | data=[] 37 | f=open('G:\Major project\Depression work data\depression-mat\\leftclosed'+str(i)+'.txt') 38 | for line in f: 39 | data.append(line.rstrip("\n").strip(" ")) 40 | data = list(filter(None,data)) 41 | data=np.asarray(data[:60000]).astype(float) 42 | data = stats.zscore(data, axis=0) 43 | temp=np.array_split(data,100) 44 | dep_left_op.extend(temp) 45 | i=i+1 46 | 47 | dep_right_op=[] 48 | i=1 49 | while(i<31): 50 | data=[] 51 | f=open('G:\Major project\Depression work data\depression-mat\\leftclosed'+str(i)+'.txt') 52 | for line in f: 53 | data.append(line.rstrip("\n").strip(" ")) 54 | data = list(filter(None,data)) 55 | data=np.asarray(data[:60000]).astype(float) 56 | data = stats.zscore(data, axis=0) 57 | temp=np.array_split(data,100) 58 | dep_right_op .extend(temp) 59 | i=i+1 60 | 61 | -------------------------------------------------------------------------------- /labels.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | y_zeroes = np.zeros(12000) 4 | y_ones = np.ones(12000) 5 | y_train=np.append(y_ones, y_zeroes,) -------------------------------------------------------------------------------- /network.py: -------------------------------------------------------------------------------- 1 | from keras.models import Sequential 2 | from keras.layers import Dense, Dropout 3 | from keras.layers import Embedding 4 | from keras.layers import Conv1D, GlobalAveragePooling1D, MaxPooling1D 5 | from sklearn.model_selection import cross_val_score 6 | from sklearn.model_selection import train_test_split 7 | import numpy as np 8 | 9 | 10 | #keras.layers.Conv1D(filters, kernel_size, strides=1, padding='valid', data_format='channels_last', dilation_rate=1, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None) 11 | 12 | #CNN network 13 | model = Sequential() 14 | model.add(Conv1D(32, 5, activation='relu', input_shape=(600,1))) 15 | model.add(Conv1D(64, 1, activation='relu')) 16 | model.add(MaxPooling1D(1)) 17 | model.add(Conv1D(128, 1, activation='relu')) 18 | model.add(Conv1D(128, 1, activation='relu')) 19 | model.add(GlobalAveragePooling1D()) 20 | model.add(Dropout(0.5)) 21 | model.add(Dense(1, activation='sigmoid')) 22 | model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy']) 23 | 24 | #Data Splitting 25 | X_train, X_test, y_train, y_test = train_test_split(dataset, labels, test_size=0.1, random_state=0) 26 | 27 | #training 28 | model.fit(X_train, y_train, batch_size=20, epochs=1) 29 | 30 | #evaluate 31 | score = model.evaluate(X_test, y_test, batch_size=15) 32 | #print(score) 33 | 34 | #Prediction-No 35 | a=np.expand_dims(dataset[23000], axis=0) 36 | output=model.predict(a) 37 | print(output) 38 | 39 | 40 | #Prediction-Yes 41 | a=np.expand_dims(dataset[100], axis=0) 42 | output=model.predict(a) 43 | print(output) 44 | 45 | #Cross-Validation 46 | #scores = cross_val_score(model, dataset, labels, cv=10, scoring='accuracy') 47 | #Does work with scikit because you need to wrap it in scikit wrapper 48 | -------------------------------------------------------------------------------- /nor.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Fri Sep 21 07:02:33 2018 4 | 5 | @author: sandh 6 | """ 7 | 8 | from scipy import stats 9 | import numpy as np 10 | nor_left_cl=[] 11 | i=1 12 | while(i<31): 13 | data=[] 14 | f=open('G:\Major project\Depression work data\\normal-mat\\leftclosed'+str(i)+'.txt') 15 | for line in f: 16 | data.append(line.rstrip("\n").strip(" ")) 17 | data = list(filter(None,data)) 18 | data=np.asarray(data[:60000]).astype(float) 19 | data = stats.zscore(data, axis=0) 20 | temp=np.array_split(data,100) 21 | nor_left_cl.extend(temp) 22 | i=i+1 23 | 24 | nor_right_cl=[] 25 | i=1 26 | while(i<31): 27 | data=[] 28 | f=open('G:\Major project\Depression work data\\normal-mat\\leftclosed'+str(i)+'.txt') 29 | for line in f: 30 | data.append(line.rstrip("\n").strip(" ")) 31 | data = list(filter(None,data)) 32 | data=np.asarray(data[:60000]).astype(float) 33 | data = stats.zscore(data, axis=0) 34 | temp=np.array_split(data,100) 35 | nor_right_cl.extend(temp) 36 | i=i+1 37 | 38 | nor_left_op=[] 39 | i=1 40 | while(i<31): 41 | data=[] 42 | f=open('G:\Major project\Depression work data\\normal-mat\\leftclosed'+str(i)+'.txt') 43 | for line in f: 44 | data.append(line.rstrip("\n").strip(" ")) 45 | data = list(filter(None,data)) 46 | data=np.asarray(data[:60000]).astype(float) 47 | data = stats.zscore(data, axis=0) 48 | temp=np.array_split(data,100) 49 | nor_left_op.extend(temp) 50 | i=i+1 51 | 52 | nor_right_op=[] 53 | i=1 54 | while(i<31): 55 | data=[] 56 | f=open('G:\Major project\Depression work data\\normal-mat\\leftclosed'+str(i)+'.txt') 57 | for line in f: 58 | data.append(line.rstrip("\n").strip(" ")) 59 | data = list(filter(None,data)) 60 | data=np.asarray(data[:60000]).astype(float) 61 | data = stats.zscore(data, axis=0) 62 | temp=np.array_split(data,100) 63 | nor_right_op .extend(temp) 64 | i=i+1 65 | -------------------------------------------------------------------------------- /scores_10fold.txt: -------------------------------------------------------------------------------- 1 | 95.9166668727994 2 | 95.66666692495346 3 | 95.79166689887643 4 | 96.75000017508864 5 | 96.50000017136335 6 | 96.00000021979213 7 | 95.7083335518837 8 | 96.04166686534882 9 | 96.08333352953196 10 | 95.79166688024998 11 | -------------------------------------------------------------------------------- /scratch.py: -------------------------------------------------------------------------------- 1 | from keras.models import Sequential 2 | from keras.layers import Dense, Dropout 3 | from keras.layers import Embedding 4 | from keras.layers import Conv1D, GlobalAveragePooling1D, MaxPooling1D 5 | from sklearn.model_selection import cross_val_score 6 | from sklearn.model_selection import train_test_split 7 | import numpy as np 8 | 9 | #CNN network 10 | model = Sequential() 11 | ##keras.layers.Conv1D(filters, kernel_size, strides=1, padding='valid', data_format='channels_last', dilation_rate=1, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None) 12 | 13 | model.add(Conv1D(32, 5, activation='relu', input_shape=(600,1))) 14 | #model.add(Conv1D(64, 1, activation='relu')) 15 | #keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0.0) 16 | model.add(MaxPooling1D(2)) 17 | #model.add(Conv1D(2, 5, activation='relu')) 18 | #model.add(Conv1D(128, 1, activation='relu')) 19 | #model.add(Dropout(0.1)) 20 | 21 | model.add(GlobalAveragePooling1D()) 22 | model.add(Dense(1024)) 23 | model.add(Dense(32)) 24 | model.add(Dense(1)) 25 | 26 | model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy']) 27 | 28 | #Data Splitting 29 | X_train, X_test, y_train, y_test = train_test_split(dataset, labels, test_size=0.1, random_state=0) 30 | 31 | #training 32 | model.fit(X_train, y_train, batch_size=20, epochs=1) 33 | 34 | #evaluate 35 | score = model.evaluate(X_test, y_test, batch_size=10) 36 | #print(score) 37 | 38 | #Prediction 39 | a=np.expand_dims(dataset[23000], axis=0) 40 | output=model.predict(a) 41 | print(output) 42 | 43 | 44 | #Cross-Validation 45 | #scores = cross_val_score(model, dataset, labels, cv=10, scoring='accuracy') 46 | #Does work with scikit because you need to wrap it in scikit wrapper 47 | --------------------------------------------------------------------------------