Exemplo n.º 1
0
def create_np():
    names_dict, label_list = points_dict()
    for file_tmp in os.listdir("./Data/CoordinatesInput"):
        if file_tmp.endswith(".txt"):
            str_file = file_tmp.title()
            str_file_pre = './Data/CoordinatesInput/%s.txt' % (str_file[:-4])
            str_file_np = './Data/npData/%s' % (str_file[:-4])
            with open(str_file_pre, 'r') as f:
                print(str_file)
                all_coordinates = []
                for line in f:
                    line = line.strip('\n')
                    tmp = ''
                    coordinates_list = []
                    for sign in line:
                        if sign != '[' and sign != ']' and sign != "'" and sign != '"' and sign != ' ':
                            if sign == ',':
                                coordinates_list.append(tmp)
                                tmp = ''
                            else:
                                tmp += sign
                    coordinates_list.append(tmp)
                    all_coordinates.append(coordinates_list)

            if len(all_coordinates) > 0:
                data = np.zeros([len(all_coordinates), 6])
                for idx, item1 in enumerate(all_coordinates):
                    for idy, item2 in enumerate(item1):
                        data[idx][idy] = float(item2)

                tmp = data[:, :2]
                unique_coordinate = npi.unique(tmp)
                label = npi.indices(unique_coordinate, tmp)
                max_cluster = np.max(label) + 1
                count = np.zeros(max_cluster)
                for i in label:
                    count[i] += 1

                temp = count
                idc = np.zeros(max_cluster)
                for i in range(max_cluster):
                    idx = np.argmax(temp)
                    idc[idx] = max_cluster - (i + 1)
                    temp[idx] = 0

                for idx, count_label in enumerate(idc):
                    if count_label < max_cluster - math.floor(max_cluster * 0.1):
                        label[np.where(label == idx)] = max_cluster

                j = 0
                for i in range(max_cluster + 1):
                    tmp = np.where(label == i)
                    if len(tmp[0]) > 0:
                        data[np.where(label == i), 5] = label_list[names_dict[str_file[:-4]]][j]
                        j += 1

                np.save(str_file_np, data)
Exemplo n.º 2
0
def main():
    unique_trajectories = np.load('./Data/trajectories_uniques.npy')

    lst_labels = []
    with open('./Data/Labels/labels_uniques_%d.txt' % k1, 'r') as f:
        for line in f:
            tmp = line.strip('\n')
            lst_labels.append(int(tmp))

    lst_labels_ls = []
    str_file = './Data/clusters_trajectories/labels_%d_%d.txt' % (k1, k2)
    with open(str_file, 'r') as f:
        for line in f:
            tmp = line.strip('\n')
            lst_labels_ls.append(int(tmp))

    items = []
    with open('./Data/cross_validation.txt', 'r') as f:
        for line in f:
            tmp = line.strip('\n')
            items.append(int(tmp))

    lst_labels_true = []
    for label in lst_labels:
        lst_labels_true.append(lst_labels_ls[label])

    trajectory_dict = {}
    for i, trajectory in enumerate(unique_trajectories):
        tmp = []
        for stop_area in trajectory:
            tmp.append(int(float(stop_area)))
        trajectory_dict[repr(tmp)] = lst_labels_true[i]

    names_dict, label_list = points_dict()
    n = len(names_dict)
    results_cv = np.zeros([n, 1])
    results = np.load('./Data/Results_RNN/blstm_results.npy')
    max_results = np.argmax(results)
    parameters = np.load('./Data/Results_RNN/blstm2_parameters_cv%d.npy' % max_results)

    for i, file_tmp in enumerate(os.listdir("./Data/Trajectories")):
        str_file1 = file_tmp.title()
        str_file1 = str_file1[:-4]
        with open('./Data/Trajectories/%s.txt' % (str_file1), 'r') as f:
            ls_testing = []
            trajectories_testing = []
            for line in f:
                lst = re.split(r'[ ]', line)
                lst.pop(-1)
                tmp = []
                for stop_area in lst:
                    tmp.append(int(float(stop_area)))
                trajectories_testing.append(tmp)
                ls_testing.append(trajectory_dict[repr(tmp)])

        ls_training= []
        trajectories_traininig = []
        for file_tmp in os.listdir("./Data/Trajectories"):
            str_file2 = file_tmp.title()
            str_file2 = str_file2[:-4]
            if str_file1 != str_file2:
                with open('./Data/Trajectories/%s.txt' % (str_file2), 'r') as f:
                    for line in f:
                        lst = re.split(r'[ ]', line)
                        lst.pop(-1)
                        tmp = []
                        for stop_area in lst:
                            tmp.append(int(float(stop_area)))
                        trajectories_traininig.append(tmp)
                        ls_training.append(trajectory_dict[repr(tmp)])

        print('run test blstm %s %d' % (str_file1, i))
        run_test(trajectories_traininig, trajectories_testing, ls_training, ls_testing, parameters, str_file1)