Files
2024-12-07 02:00:39 +08:00

74 lines
3.5 KiB
Python

import numpy as np
import pandas as pd
from decimal import Decimal, ROUND_HALF_UP
class Calculate():
def __init__(self) -> None:
self.Loss, self.Accuracy, self.Precision, self.Recall, self.F1, self.AUC = 0, 0, 0, 0, 0, 0
self.Loss_Record, self.Accuracy_Record, self.Precision_Record, self.Recall_Record, self.F1_Record, self.AUC_Record = [], [], [], [], [], []
self.History = []
pass
def Append_numbers(self, Loss, Accuracy, Precision, Recall, AUC, F1):
self.Loss_Record.append(Loss)
self.Accuracy_Record.append(Accuracy)
self.Precision_Record.append(Precision)
self.Recall_Record.append(Recall)
self.F1_Record.append(F1)
self.AUC_Record.append(AUC)
pass
def Calculate_Mean(self):
Loss_Mean = np.mean(self.Loss_Record)
Accuracy_Mean = np.mean(self.Accuracy_Record)
Precision_Mean = np.mean(self.Precision_Record)
Recall_Mean = np.mean(self.Recall_Record)
F1_Mean = np.mean(self.F1_Record)
AUC_Mean = np.mean(self.AUC_Record)
Mean_DataFram = pd.DataFrame(
{
"loss" : "{:.2f}".format(Loss_Mean),
"precision" : "{:.2f}%".format(Precision_Mean * 100),
"recall" : "{:.2f}%".format(Recall_Mean * 100),
"accuracy" : "{:.2f}%".format(Accuracy_Mean * 100),
"f" : "{:.2f}%".format(F1_Mean * 100),
"AUC" : "{:.2f}%".format(AUC_Mean * 100)
}, index = [0]
)
self.History.append(Mean_DataFram)
return Mean_DataFram
def Calculate_Std(self):
Loss_Std = Decimal(str(np.std(self.Loss_Record))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
Accuracy_Std = Decimal(str(np.std(self.Accuracy_Record))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
Precision_Std = Decimal(str(np.std(self.Precision_Record))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
Recall_Std = Decimal(str(np.std(self.Recall_Record))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
F1_Std = Decimal(str(np.std(self.F1_Record))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
AUC_Std = Decimal(str(np.std(self.AUC_Record))).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
Std_DataFram = pd.DataFrame(
{
"loss" : "{:.2f}".format(Loss_Std),
"precision" : "{:.2f}".format(Precision_Std),
"recall" : "{:.2f}".format(Recall_Std),
"accuracy" : "{:.2f}".format(Accuracy_Std),
"f" : "{:.2f}".format(F1_Std),
"AUC" : "{:.2f}".format(AUC_Std)
}, index = [0]
)
self.History.append(Std_DataFram)
return Std_DataFram
def Output_Style(self):
Result = pd.DataFrame(
{
"loss" : "{}±{}".format(self.History[0]["loss"][0], self.History[1]["loss"][0]),
"precision" : "{}±{}".format(self.History[0]["precision"][0], self.History[1]["precision"][0]),
"recall" : "{}±{}".format(self.History[0]["recall"][0], self.History[1]["recall"][0]),
"accuracy" : "{}±{}".format(self.History[0]["accuracy"][0], self.History[1]["accuracy"][0]),
"f" : "{}±{}".format(self.History[0]["f"][0], self.History[1]["f"][0]),
"AUC" : "{}±{}".format(self.History[0]["AUC"][0], self.History[1]["AUC"][0])
}, index = [0]
)
return Result