融合两个不同指标的排序 将两个不同指标的排序结果按给定权重融合为一个新的排序结果。 Args: ranking_1 (dict): 第一个指标的排序结果 ranking_2 (dict): 第二个指标的排序结果 weight (float): ranking_2的权重,范围[0,1] Returns: dict: 融合后的排序结果
(self, ranking_1, ranking_2, weight)
| 159 | return False |
| 160 | |
| 161 | def get_combinedRanking(self, ranking_1, ranking_2, weight): |
| 162 | """融合两个不同指标的排序 |
| 163 | |
| 164 | 将两个不同指标的排序结果按给定权重融合为一个新的排序结果。 |
| 165 | |
| 166 | Args: |
| 167 | ranking_1 (dict): 第一个指标的排序结果 |
| 168 | ranking_2 (dict): 第二个指标的排序结果 |
| 169 | weight (float): ranking_2的权重,范围[0,1] |
| 170 | |
| 171 | Returns: |
| 172 | dict: 融合后的排序结果 |
| 173 | """ |
| 174 | ranking_3 = {} |
| 175 | |
| 176 | len_1 = len(ranking_1) |
| 177 | len_2 = len(ranking_2) |
| 178 | |
| 179 | # 创建副本避免修改原始数据 |
| 180 | tmp_ranking_1 = ranking_1.copy() |
| 181 | tmp_ranking_2 = ranking_2.copy() |
| 182 | |
| 183 | # 处理ranking_1中的所有键 |
| 184 | for key_1 in ranking_1: |
| 185 | if key_1 in ranking_2: |
| 186 | # 如果键在两个排序中都存在,按权重融合 |
| 187 | ranking_3[key_1] = ranking_1[key_1] * (1 - weight) + ranking_2[key_1] * weight |
| 188 | else: |
| 189 | # 如果键只在ranking_1中存在,将其在ranking_2中的排名设为最低 |
| 190 | tmp_ranking_2[key_1] = len_2 + 1 |
| 191 | ranking_3[key_1] = ranking_1[key_1] * (1 - weight) + tmp_ranking_2[key_1] * weight |
| 192 | |
| 193 | # 处理ranking_2中的所有键 |
| 194 | for key_2 in ranking_2: |
| 195 | if key_2 not in ranking_1: |
| 196 | # 如果键只在ranking_2中存在,将其在ranking_1中的排名设为最低 |
| 197 | tmp_ranking_1[key_2] = len_1 + 1 |
| 198 | ranking_3[key_2] = tmp_ranking_1[key_2] * (1 - weight) + ranking_2[key_2] * weight |
| 199 | |
| 200 | return ranking_3 |
| 201 | |
| 202 | def is_health_data_empty(self, model_name): |
| 203 | """检查健康数据是否为空 |