def process(signal): #输入信号为行向量,每一行为一个通道数据 sig = scipy_signal.filtfilt(notchB, notchA, signal) sig = scipy_signal.filtfilt(bpB, bpA, sig) sig = sig[:,-SRATE*EPOCH:] #update(sig) rr = [] for i in range(4): A,B,r = cca(sig[-4:,:],template[i]) rr.append(np.max(r)) return np.argsort(rr)[-1]
def _validate_fold(self, view_data, epochs, batch_size, ids, fold, fold_path, model_path): view_train, view_test = utils.prepare_simple_multiview_fold( utils.load_fold_ids(fold_path), view_data, ids) train_generator = batch_generator(view_train, batch_size[0], ids, view_data, True) test_generator = batch_generator(view_test, batch_size[1], ids, view_data, False) checkpointer = keras.callbacks.ModelCheckpoint( model_path + '_fold-{}.hdf5'.format(fold), monitor='val_loss', verbose=1, save_best_only=True, save_weights_only=True, mode='min') # train_generator = batch_generator([sorted(list(view_data[0].keys())), sorted(list(view_data[1].keys()))], batch_size[0], True, view_data, True) # checkpointer = keras.callbacks.ModelCheckpoint(model_path + '_fold-{}.hdf5'.format(fold), monitor='loss', verbose=1, save_best_only=True, save_weights_only=True, mode='min') history = self._model.fit_generator(generator=train_generator, steps_per_epoch=None, epochs=epochs, verbose=1, callbacks=[checkpointer], validation_data=test_generator, validation_steps=None, max_queue_size=1, workers=1, use_multiprocessing=False, initial_epoch=0) # history = self._model.fit_generator(generator=train_generator, steps_per_epoch=None, epochs=epochs, verbose=1, callbacks=[checkpointer], max_queue_size=1, workers=1, use_multiprocessing=False, initial_epoch=0) self._model.load_weights(model_path + '_fold-{}.hdf5'.format(fold)) train_generator = batch_generator(view_train, batch_size[0], ids, view_data, False) # train_generator = batch_generator([sorted(list(view_data[0].keys())), sorted(list(view_data[1].keys()))], batch_size[0], ids, view_data, True) predictions = self._model.predict_generator(train_generator, steps=None, max_queue_size=1, workers=1, use_multiprocessing=False, verbose=0) # train linear cca self._cca_model = cca.cca(self._emb_dims) self._cca_model.fit(predictions[:, :self._view_units[0][-1]], predictions[:, -self._view_units[1][-1]:]) del view_train, view_test return history
def predict(self, X, return_all=0, metric=None): T = X.copy() T /= np.linalg.norm(T, axis=1, keepdims=1) resultTable = np.zeros([T.shape[0], len(self.classes)]) for i in xrange(len(self.classes)): currentClass = self.classes[i] for k in xrange(T.shape[0]): if metric is None: a, b = cca(T[k:k + 1].T, self.FeatureSpaces[currentClass], N=1) resultTable[k, i] = corr(a, b)[0, 1] else: resultTable[k, i] = metric(T[k], self.FeatureSpaces[currentClass]) ind = np.argmax(resultTable, axis=1) if return_all: data = pd.DataFrame(resultTable, columns=self.classes) return self.classes[ind], data return self.classes[ind]
def predict(self, X, return_all=0, metric=None): T = X.copy() if T.ndim > 2: T = unfold(T,0) T /= np.linalg.norm(T, axis=1, keepdims=1) n = [T.shape[0], self.Nmz, 2] T = reshape(T, n) resultTable = np.zeros([T.shape[0], len(self.classes)]) for i in xrange(len(self.classes)): currentClass = self.classes[i] Z = prodTenMat(T, self.Polspaces_inv[currentClass], 2) for k in xrange(T.shape[0]): if metric is None: a, b = cca(Z[k], self.MZspaces[currentClass], N=1) resultTable[k, i] = corr(a, b)[0, 1] else: resultTable[k, i] = metric(Z[k], self.MZspaces[currentClass]) ind = np.argmax(resultTable, axis=1) if return_all: data = pd.DataFrame(resultTable, columns=self.classes) return self.classes[ind], data return self.classes[ind]
def tca_with_cca(k=1): from sklearn.cross_validation import train_test_split from sklearn.neural_network import MLPClassifier from sklearn import tree from sklearn import metrics import pandas as pd from cca import cca import numpy as np import tca import ascr file_path1 = 'sample.csv' file_path2 = 'out_of_sample.csv' #train_sample = pd.read_csv(file_path1) train_sample = pd.read_csv(file_path1).sample(frac=0.05, replace=True, random_state=k, axis=0) #train_sample=ascr.ascr(ascr.ascr(ascr.ascr(ascr.ascr(ascr.ascr(ascr.ascr(pd.read_csv(file_path1).sample(frac=0.02,replace=False, random_state=11, axis=0),'S1','T1'),'S2','T2'),'S3','T3'),'S4','T4'),'S5','T5'),'S6','T6') cca_s, cca_t = cca(H1=train_sample.loc[:, 'S1':'S_S7'], H2=train_sample.loc[:, 'T1':'T_S7']) ################################################################## x_train_st, x_test_st, y_train_st, y_test_st = train_test_split( np.append(cca_s, cca_t, axis=1), pd.concat([train_sample[['S_Y']], train_sample[['T_Y']]], axis=1, join='inner'), test_size=0.25, random_state=k) ################################################################## #x_test_st=x_test_st.values y_test_st = y_test_st.values y_train_st = y_train_st.values #x_train_st=x_train_st.values x_src = x_train_st[:, 0:6] x_tar = x_train_st[:, 6:12] y_src = y_train_st[:, 0:1] y_tar = y_train_st[:, 1:2] x_tar_o = x_test_st[:, 6:12] y_tar_o = y_test_st[:, 1:2] my_tca = tca.TCA(dim=6) V, x_src_tca, x_tar_tca, x_tar_o_tca = my_tca.fit_transform( x_src, x_tar, x_tar_o) acc_tar_o, y_tar_o_pre, kappa_tar = my_tca.classify_svm( x_src_tca, y_src, x_tar_o_tca, y_tar_o) #print('SVM',acc_tar_o,kappa_tar) # dr = tree.DecisionTreeClassifier() dr = dr.fit(x_src_tca, y_src) print('DT', metrics.accuracy_score(y_tar_o, dr.predict(x_tar_o_tca)), metrics.cohen_kappa_score(y_tar_o, dr.predict(x_tar_o_tca))) temp = pd.DataFrame( data={ 'SVM': [acc_tar_o], 'DT': [metrics.accuracy_score(y_tar_o, dr.predict(x_tar_o_tca))] }) print(temp) for i in ('sgd', 'adam', 'lbfgs'): nn = MLPClassifier(solver=i, alpha=1e-5, hidden_layer_sizes=(84, 6), random_state=k + 31) nn = nn.fit(x_src_tca, y_src) temp = pd.concat([ temp, pd.DataFrame(data={ i: [metrics.accuracy_score(y_tar_o, nn.predict(x_tar_o_tca))] }) ], axis=1, join='inner') print(temp) print(i, 'NN', metrics.accuracy_score(y_tar_o, nn.predict(x_tar_o_tca)), metrics.cohen_kappa_score(y_tar_o, nn.predict(x_tar_o_tca))) record = pd.read_csv('record.csv') print(record) record = pd.concat([record, temp], axis=0, join='inner') record.to_csv('record.csv', index=False) print(record)
#!/bin/python3 from dec import Oracle from cca import cca if __name__ == "__main__": init = open('./init') oracle = Oracle(init) print("plaintext:", cca(oracle))