修正test结果

This commit is contained in:
andrew 2022-10-07 14:09:31 +08:00
parent 8209b13e08
commit ba8aaea01b
10 changed files with 335 additions and 90 deletions

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)
@ -450,5 +474,5 @@ if __name__ == '__main__':
for exam_index, test_exam_path in enumerate(all_output_path):
# test_exam_path = exam_path / test_exam_path
set_environment(exam_index)
# test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="all_test")

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)
@ -446,9 +470,9 @@ def segment_to_event(df_segment, dataset_type):
# shap_values = explainer.shap_values()
if __name__ == '__main__':
all_output_path = list(exam_path.rglob("KFold_0"))
all_output_path = list(exam_path.rglob("KFold_*"))
for exam_index, test_exam_path in enumerate(all_output_path):
# test_exam_path = exam_path / test_exam_path
set_environment(exam_index)
# test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="all_test")

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)
@ -446,9 +470,9 @@ def segment_to_event(df_segment, dataset_type):
# shap_values = explainer.shap_values()
if __name__ == '__main__':
all_output_path = list(exam_path.rglob("KFold_0"))
all_output_path = list(exam_path.rglob("KFold_*"))
for exam_index, test_exam_path in enumerate(all_output_path):
# test_exam_path = exam_path / test_exam_path
set_environment(exam_index)
# test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="all_test")

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)
@ -446,9 +470,9 @@ def segment_to_event(df_segment, dataset_type):
# shap_values = explainer.shap_values()
if __name__ == '__main__':
all_output_path = list(exam_path.rglob("KFold_0"))
all_output_path = list(exam_path.rglob("KFold_*"))
for exam_index, test_exam_path in enumerate(all_output_path):
# test_exam_path = exam_path / test_exam_path
set_environment(exam_index)
# test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="test")
test_and_analysis_and_visual(dataset_type="all_test")

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)

View File

@ -7,7 +7,7 @@
@email:2021022362@m.scnu.edu.cn
@time:2022/02/21
"""
import logging
import os
import sys
@ -69,13 +69,30 @@ columns = ["sampNo", "segmentNo", "label_type", "new_label", "SP", "EP", "pred"]
columns2 = ["sampNo", "severity", "origin_P", "origin_N", "pred_P", "pred_N", "T", "F", "TP", "TN", "FP", "FN",
"acc", "recall", "spec", "pre", "NPV", "F1score", "support"]
logging.getLogger('matplotlib.font_manager').disabled = True
logging.getLogger('matplotlib.ticker').disabled = True
logger = logging.getLogger()
logger.setLevel(logging.INFO)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter("%(asctime)s: %(message)s"))
logger.addHandler(ch)
if (exam_path / "test.log").exists():
(exam_path / "test.log").unlink()
fh = logging.FileHandler(exam_path / "test.log", mode='a')
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter("%(message)s"))
logger.addHandler(fh)
logger.info("------------------------------------")
def set_environment(i):
global output_path, segments_results_save_path, events_results_save_path, model_path, label_path, data_path, \
model, model_name, train_set, test_set
output_path = all_output_path[i]
print(output_path)
logger.info(output_path)
segments_results_save_path = (output_path / "segments_results")
segments_results_save_path.mkdir(exist_ok=True)
events_results_save_path = (output_path / "events_results")
@ -102,6 +119,12 @@ def test_and_analysis_and_visual(dataset_type):
sampNo = train_set
elif dataset_type == "all_test":
sampNo = test_set
else:
sampNo = None
logger.info("出错了")
exam_name = Path("./").absolute().name
test_dataset = TestApneaDataset2(data_path, label_path, select_sampno=sampNo, dataset_type=dataset_type,
segment_augment=my_segment_augment)
test_loader = DataLoader(test_dataset, batch_size=128, pin_memory=True, num_workers=0)
@ -142,7 +165,8 @@ def test_and_analysis_and_visual(dataset_type):
test_loss /= len(test_loader)
calc_metrics.compute()
print(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
logger.info(f"EXAM_NAME: {exam_name} SampNO: {sampNo}")
logger.info(calc_metrics.get_matrix(loss=test_loss, epoch=0, epoch_type="test"))
calc_metrics.reset()
df_segment["thresh_label"] = 1 * (df_segment["label_type"] > event_thresh).copy()
@ -177,7 +201,7 @@ def test_and_analysis_and_visual(dataset_type):
def analysis_results(df_result, base_path, dataset_type, is_event=False):
if df_result.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return None
(base_path / dataset_type).mkdir(exist_ok=True, parents=True)
@ -314,11 +338,11 @@ def analysis_results(df_result, base_path, dataset_type, is_event=False):
def confusionMatrix(df_analysis, base_path, dataset_type):
if df_analysis is None:
print(base_path, dataset_type, "is None")
logger.info(base_path, dataset_type, "is None")
return
if df_analysis.empty:
print(base_path, dataset_type, "is_empty")
logger.info(base_path, dataset_type, "is_empty")
return
classes = ["normal", "SA"]
(base_path / dataset_type / "confusionMatrix").mkdir(exist_ok=True, parents=True)
@ -411,8 +435,8 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame([[int(sampNo), SP // 30, label_type, new_label,
SP, EP, thresh_Pred2[SP]]], columns=columns),
ignore_index=True)
if value > 30:
print([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# if value > 30:
# logger.info([int(sampNo), SP // 30, label_type, new_label, SP, EP, thresh_Pred2[SP]])
# 长度不够
else:
df["thresh_Pred"][SP:EP] = 0
@ -426,7 +450,7 @@ def segment_to_event(df_segment, dataset_type):
df_event = df_event.append(pd.DataFrame(
[[int(sampNo), segment_no, df_temp["label_type"].max(), df_temp["new_label"].max(), segment_no * 30,
(segment_no + 1) * 30, 0]], columns=columns),
ignore_index=True)
ignore_index=True)
df_all_event = df_all_event.append(df_event, ignore_index=True)

View File

@ -5,9 +5,11 @@
-------------------------------------------------
000
学习率 1e-4 epoch 20 过早epoch 6过拟合
------------------------------------------------
001
学习率 1e-5 epoch 50 可以
-----------------------------------------------
002
学习率 1e-6 epoch 50 比较合适,就是太慢了
@ -63,7 +65,34 @@
数据集减去平均值外使用每个片段的混叠信号Z-score整理数据集
--------------------------------------------------------
013
学习率 1e-5 epoch 50
BEST TEST 学习率 1e-5 epoch 50
Acc Rec Pre Spe F1
all 84.56 85.53 65.01 84.22 73.87
EXAM_NAME: 013 SampNO: [582, 1000]
test epoch: 0 loss: 1.1915464037836785 lr: None
Acc Rec Pre Spe F1
all 60.04 11.88 4.92 66.96 6.96
EXAM_NAME: 013 SampNO: [286, 1009]
test epoch: 0 loss: 0.6172940751263513 lr: None
Acc Rec Pre Spe F1
all 77.71 61.15 62.02 84.55 61.58
EXAM_NAME: 013 SampNO: [282, 966]
test epoch: 0 loss: 1.210226387001914 lr: None
Acc Rec Pre Spe F1
all 39.09 95.56 0.23 39.01 0.46
EXAM_NAME: 013 SampNO: [726, 1006]
test epoch: 0 loss: 0.603616701004974 lr: None
Acc Rec Pre Spe F1
all 73.5 56.9 41.81 78.1 48.21
EXAM_NAME: 013 SampNO: [229, 1004]
test epoch: 0 loss: 0.3528211629552555 lr: None
Acc Rec Pre Spe F1
all 84.68 17.63 4.82 87.15 7.56
--------------------------------------------------------