import numpy as np import joblib from Utils import get_color import matplotlib.pyplot as plt from DimensionReduction import get_normalize # 获取一位受试者的训练数据 train_data = np.array(joblib.load('data/event_data_by_S_single.pkl')[0]) train_event = np.array(joblib.load('data/event_labels_by_S_single.pkl')[0]) non_p300_wave_avg = np.zeros(200) p300_wave_avg = np.zeros(200) for i in range(60): wave = np.array(get_normalize(train_data[i])).T[0] if train_event[i] == 0: non_p300_wave_avg = non_p300_wave_avg + wave else: p300_wave_avg = p300_wave_avg + wave non_p300_wave_avg = non_p300_wave_avg / 50 p300_wave_avg = p300_wave_avg / 10 print(train_data.shape) print(train_data.shape, train_event.shape) default_colors = ['r', 'b'] colors = get_color(range(8)) x = range(0, 800, 4)
return labels_predict, ARI(labels, labels_predict) sim_data = Similarity(dim_data, alpha=0.6, beta=0.3) pred, ari = calc_and_output(sim_data) rel = RelevanceMatrix(pred) print(len(rel[rel > 1e-10])) sim_next = sim_data l0 = len(sim_next[sim_next > 1e-10]) while l0 != 0: print('l0:', l0) # print(sim_next, rel) sim_next = 0.01 * sim_next + 0.99 * rel pred, ari = calc_and_output(sim_next) rel = get_normalize(RelevanceMatrix(pred)) l0 = len(sim_next[sim_next > 1e-5]) # calc_and_output(sim_dis) # calc_and_output(sim_cor) # calc_and_output(sim_mu) # # x = [] # y = [] # z = [] # step = 0.1 # n_steps = int(1 / step) + 1 # m_z = np.zeros((n_steps, n_steps)) # # range_index = np.arange(0, 1.1, 0.1) # # range_index = [round(i, 2) for i in range_index]
test_event_data_by_S = [] for i in range(5): test_data = test_data_by_S[i] test_event = test_event_by_S[i] char_len = test_data.shape[0] print(char_len) event_data_s = [] for j in range(9): char_name = char_names[j] event = test_event[j] for k in range(len(event)): # 剔除实验开始结束时的标记 event if k % 13 != 0: # 开始和结束时间在数据表中的索引 event_start = event[k][1] - 1 event_end = event_start + 200 # 获取对应时间段的采样数据 event_data = get_normalize( np.array(cb_filter(test_data[j])[event_start:event_end])) event_data_s.append(event_data) test_event_data_by_S.append(event_data_s) joblib.dump(test_event_data_by_S, 'data/test_event_data_by_S.pkl')
event_data = np.zeros((200, 20)) for k in range(1, 13): event_label = get_true_label(char_name, k) event_labels.append(event_label) event_data = np.zeros((200, 20)) for idx in range(1, len(event)): # 0 - 66 # 剔除实验开始结束时的标记 event 求五个轮次中同一行列的均值 if event[idx][0] == k: # 开始和结束时间在数据表中的索引 event_start = event[idx][1] - 1 event_end = event_start + 200 # 获取对应时间段的采样数据 event_data = event_data + get_normalize( np.array( cb_filter(train_data[j])[event_start:event_end])) event_data = event_data / 5 event_data_s.append(event_data) print(len(event_data_s)) event_data_by_S.append(event_data_s) event_labels_by_S.append(event_labels) joblib.dump(event_data_by_S, 'data/event_data_by_S.pkl') joblib.dump(event_labels_by_S, 'data/event_labels_by_S.pkl') print(len(event_data_by_S[0])) print(event_labels_by_S[0])