Ejemplo n.º 1
0
idx_x = np.arange(0,368)
FileIO.save_mat('0_dataset/AB_156_to_186_walking.mat', is_walking = True)

#%%
x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
FileIO.load_st_AB_mat(data_path = 'data/AB_dataset/AB_', is_resize = True, 
                      leave_one_num = 1)
#%% UCI DSADS datase
# read data:[label,subjects,segments, time, sensors]
x_mat, y_mat = FileIO.read_UCI_DSADS()
FileIO.save_UCI_DSADS(x_mat, y_mat, file_path = 'data/1_dataset_UCI_DSADS/Raw/')
#%% extract features and output data
x_mat = utils.extract_UCI_features(x_mat)
FileIO.save_UCI_DSADS(x_mat, y_mat, file_path = 'data/1_dataset_UCI_DSADS/Features/')
#%% load UCI data
x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
FileIO.load_UCI_mat(data_path = 'data/1_dataset_UCI_DSADS/Features/',
                    feature_length = 6*45, is_resize = True, leave_one_num = 1)
#%%
x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
FileIO.load_UCI_mat(data_path = 'data/1_dataset_UCI_DSADS/Raw/',
                    feature_length = 125*45, is_resize = True, leave_one_num = 1)


            
            
        
Ejemplo n.º 2
0
def dataset_read(source,
                 target,
                 batch_size,
                 is_resize=False,
                 leave_one_num=-1,
                 dataset='NW',
                 sensor_num=0):
    S_train = {}
    S_val = {}
    S_test = {}
    T_train = {}
    T_val = {}
    T_test = {}

    if 'NW' == dataset:
        x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
        x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
        FileIO.load_st_AB_mat(data_path = 'data/AB_dataset/AB_', X_dim = 4,
                              is_resize = is_resize,
                              leave_one_num = leave_one_num,
                              sensor_num = sensor_num)
    elif 'UCI' == dataset:
        x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
        x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
        FileIO.load_UCI_mat(data_path = 'data/1_dataset_UCI_DSADS/Features/',
                        feature_length = 6*45, X_dim = 4,
                        is_resize = is_resize, leave_one_num = leave_one_num,
                        sensor_num = sensor_num)

    S_train['imgs'] = x_s_train
    S_train['labels'] = y_s_train
    T_train['imgs'] = x_t_train
    T_train['labels'] = y_t_train

    # input target samples for both
    S_val['imgs'] = x_s_val
    S_val['labels'] = y_s_val
    T_val['imgs'] = x_t_val
    T_val['labels'] = y_t_val

    S_test['imgs'] = x_s_test
    S_test['labels'] = y_s_test

    T_test['imgs'] = x_t_test
    T_test['labels'] = y_t_test

    train_loader = UnalignedDataLoader()
    train_loader.initialize(S_train, T_train, batch_size, batch_size)
    # train_loader.initialize(T_train, S_train, batch_size, batch_size)
    data_train = train_loader.load_data()

    test_loader = UnalignedDataLoader()
    test_loader.initialize(S_val, T_val, batch_size, batch_size)
    # test_loader.initialize(T_val, S_val, batch_size, batch_size)
    data_val = test_loader.load_data()

    final_test_loader = UnalignedDataLoader()
    final_test_loader.initialize(S_test, T_test, batch_size, batch_size)
    # final_test_loader.initialize(T_test, S_test, batch_size, batch_size)
    data_test = final_test_loader.load_data()
    print('Target test shape: {}'.format(T_test['labels'].shape))
    return data_train, data_val, data_test
Ejemplo n.º 3
0
def traditional_har(dataset='UCI'):
    if 'UCI' == dataset:
        sub_num = 8
        class_num = 19
        feature_length = 6
        sensor_num = 45
    elif 'NW' == dataset:
        sub_num = 10
        class_num = 7
    acc_s_LDA = np.zeros(sub_num)
    acc_t_LDA = np.zeros(sub_num)
    acc_s_SVM = np.zeros(sub_num)
    acc_t_SVM = np.zeros(sub_num)
    acc_s_ANN = np.zeros(sub_num)
    acc_t_ANN = np.zeros(sub_num)
    for i in range(sub_num):
        # load UCI dataset
        if 'UCI' == dataset:
            x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
            x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
            FileIO.load_UCI_mat(data_path = 'data/1_dataset_UCI_DSADS/Features/',
                            feature_length = feature_length*45, X_dim = 2,
                            leave_one_num = i)
            x_s_train = x_s_train[:, 0:feature_length * sensor_num]
            x_s_val = x_s_val[:, 0:feature_length * sensor_num]
            x_s_test = x_s_test[:, 0:feature_length * sensor_num]
            x_t_train = x_t_train[:, 0:feature_length * sensor_num]
            x_t_val = x_t_val[:, 0:feature_length * sensor_num]
            x_t_test = x_t_test[:, 0:feature_length * sensor_num]

        # load NW dataset
        elif 'NW' == dataset:
            x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
            x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
            FileIO.load_st_AB_mat(data_path = 'data/AB_dataset/AB_', X_dim = 2,
            leave_one_num = i)

        # print(y_s_train.shape[0] + y_s_val.shape[0] + y_s_test.shape[0],
        #       y_t_train.shape[0] + y_t_val.shape[0] + y_t_test.shape[0])
        # LDA, no domain adaptation
        clf = LDA()
        clf.fit(x_s_train, y_s_train)
        y_s_test_pred = clf.predict(x_s_test)

        start = time.clock()
        for i in range(8):
            out_prediction = clf.predict(x_s_test[[i]])
        end = time.clock()
        print('LDA: forward time for each segment:%.30f' %
              ((end - start) / 8.))

        acc = accuracy_score(y_s_test, y_s_test_pred)
        print("LDA: source domain accuracy: %.2f%%" % acc)
        acc_s_LDA[i] = acc

        y_t_test_pred = clf.predict(x_t_test)
        acc = accuracy_score(y_t_test, y_t_test_pred)
        print("LDA: target domain accuracy: %.2f%%" % (acc))
        acc_t_LDA[i] = acc

        # SVM, no domain adaptation
        clf = svm.LinearSVC(max_iter=5000)
        clf.fit(x_s_train, y_s_train)
        y_s_test_pred = clf.predict(x_s_test)

        start = time.clock()
        for i in range(8):
            out_prediction = clf.predict(x_s_test[[i]])
        end = time.clock()
        print('SVM: forward time for each segment:%.30f' %
              ((end - start) / 8.))

        acc = accuracy_score(y_s_test, y_s_test_pred)
        print("SVM: source domain accuracy: %.2f%%" % acc)
        acc_s_SVM[i] = acc

        y_t_test_pred = clf.predict(x_t_test)
        acc = accuracy_score(y_t_test, y_t_test_pred)
        print("SVM: target domain accuracy: %.2f%%" % (acc))
        acc_t_SVM[i] = acc

        #%% ANN, no domain adaptation

        # load UCI dataset
        if 'UCI' == dataset:
            x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
            x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
            FileIO.load_UCI_mat(data_path = 'data/1_dataset_UCI_DSADS/Features/',
                                is_one_hot = True, is_normalized = True,
                            feature_length = feature_length*45,
                            X_dim = 2, leave_one_num = i)

        # load NW dataset
        if 'NW' == dataset:
            x_s_train, y_s_train, x_s_val, y_s_val, x_s_test, y_s_test, \
            x_t_train, y_t_train, x_t_val, y_t_val, x_t_test, y_t_test = \
            FileIO.load_st_AB_mat(data_path = 'data/AB_dataset/AB_', X_dim = 2,
                                  is_one_hot = True, is_normalized = True,
                                  leave_one_num = i)

        clf = MLPClassifier(solver='sgd',
                            activation='tanh',
                            learning_rate='adaptive',
                            learning_rate_init=0.1,
                            hidden_layer_sizes=(10, class_num),
                            max_iter=2000)
        clf.fit(x_s_train, y_s_train)
        y_s_test_pred = clf.predict(x_s_test)
        acc = accuracy_score(y_s_test, y_s_test_pred)

        start = time.clock()
        for i in range(8):
            out_prediction = clf.predict(x_s_test[[i]])
        end = time.clock()
        print('ANN: forward time for each segment:%.30f' %
              ((end - start) / 8.))

        print("ANN: source domain accuracy: %.2f%%" % acc)
        acc_s_ANN[i] = acc

        y_t_test_pred = clf.predict(x_t_test)
        acc = accuracy_score(y_t_test, y_t_test_pred)
        print("ANN: target domain accuracy: %.2f%%" % (acc))
        acc_t_ANN[i] = acc

    print('LDA: mean of test acc in the source domain:', np.mean(acc_s_LDA))
    print('LDA: mean of test acc in the target domain:', np.mean(acc_t_LDA))
    print('SVM: mean of test acc in the source domain:', np.mean(acc_s_SVM))
    print('SVM: mean of test acc in the target domain:', np.mean(acc_t_SVM))
    print('ANN: mean of test acc in the source domain:', np.mean(acc_s_ANN))
    print('ANN: mean of test acc in the target domain:', np.mean(acc_t_ANN))

    return np.transpose(np.c_[acc_s_LDA, acc_t_LDA, acc_s_SVM, acc_t_SVM,
                              acc_s_ANN, acc_t_ANN])