我正在使用不同的方法,例如小波(不同参数)、FFT 来对 1 D single 进行降噪。我使用
skimage.metrics
来评估去噪,如下面的代码片段所示。 (这里signal
是原始噪声信号)
import skimage.metrics as M
def get_denoise_metrics(signal, clean_signal):
data_range = (min(signal), max(signal))
d = {
'normalized_root_mse' : [np.round(M.normalized_root_mse(signal, clean_signal), 4)],
'peak_signal_noise_ratio' : [round(M.peak_signal_noise_ratio(signal, clean_signal, data_range =data_range[1]), 4)],
'structural_similarity' : [np.round(M.structural_similarity(signal, clean_signal, data_range =data_range[1]), 4)],
}
return d
由于我使用的每种去噪方法有 3 个指标(方法总数大于 10),我如何创建一个综合分数,以便基于我选择的方法。
一切都取决于您想要实现的目标,没有最佳答案,因为对于某些人来说 RMSE 将是最重要的,对于其他人来说峰值 SNR
话虽这么说,我给你三个建议:
对方法进行评分并分别为每个指标创建排名。
composite_score = place_in_ranking_metric1 + place_in_ranking_metric2 + ...
利用您的知识和直觉找到任意权重。
composite_score = w1 * score_metric1 + w2 * score_metric2 + ...
如果您认为这应该比简单的排名更好。对于每种方法,根据最佳结果标准化分数。
score_metric1 = score_metric1 / best_score_metric1
score_metric2 = score_metric2 / best_score_metric1
...
composite_score = score_metric1 + score_metric2 + ...
有时,您可能需要使用
log
、exp
、sqrt
或 pow
转换某些乐谱。或者其他方式。这又是非常任意的。