Files
Stomach_Cancer_Pytorch/model_data_processing/processing.py

67 lines
1.9 KiB
Python

import random
from merge_class.merge import merge
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(Datas, Size_List):
# Data_Dict_Data = shuffle_data(Data_Content, Labels, 2)
Train_Size, start = 0, 0
Image_List = []
Images, Labels = [], []
Merge = merge()
Train_Size = min(Size_List[0], Size_List[1])
for i in range(2, len(Size_List), 1):
Train_Size = min(Train_Size, Size_List[i])
for i in Size_List:
Image_List.append(Datas[start : Train_Size])
start = Train_Size
Train_Size += Train_Size
Image_List = Merge.merge_data_main(Image_List, 0, len(Image_List))
for Image in Image_List:
Images.append(Image[0])
Labels.append(Image[1])
return Images, Labels