import random def calculate_confusion_matrix(predict, result): '''計算並畫出混淆矩陣''' tp, fp, tn, fn = 0 for i in range(len(predict)): if predict[i] == [1., 0., 0.] and result[i] == [1., 0., 0.]: pass def shuffle_data(image, label, mode = 1): ''' ## 被用來做資料打亂的用途 ### 有兩種不同的需求 1. 打亂影像資料(讀完檔後的影像) => 回傳Label與Image Root兩個List 2. 打亂路徑資料(影像的路徑資料,還沒讀檔前) => 回傳打亂後的Dict ''' if mode == 1: shuffle_image, shuffle_label = [], [] total = list(zip(image, label)) random.shuffle(total) for total_data in total: shuffle_image.append(total_data[0]) shuffle_label.append(total_data[1]) return shuffle_image, shuffle_label else: shuffle_image = { label[0] : [] } for i in range(1, len(label)): shuffle_image.update({label[i] : []}) for Label in label: shuffle_image[Label] = image[Label] random.shuffle(shuffle_image[Label]) return shuffle_image def Balance_Process(Data_Dict_Data, Labels): # Data_Dict_Data = shuffle_data(Data_Content, Labels, 2) Train_Size = 0 Train_Size = min(len(Data_Dict_Data[Labels[0]]), len(Data_Dict_Data[Labels[1]])) for i in range(1, len(Labels) - 1): Train_Size = min(Train_Size, len(Data_Dict_Data[Labels[i + 1]])) for i in range(len(Labels)): Data_Dict_Data[Labels[i]] = Data_Dict_Data[Labels[i]][0 : Train_Size] return Data_Dict_Data, Train_Size