67 lines
1.9 KiB
Python
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 |