Exemple #1
0
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]
Exemple #2
0
    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
Exemple #3
0
 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]
Exemple #4
0
 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]
Exemple #5
0
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)
Exemple #6
0
#!/bin/python3
from dec import Oracle
from cca import cca

if __name__ == "__main__":
    init = open('./init')
    oracle = Oracle(init)
    print("plaintext:", cca(oracle))