如何将聚类预测结果字典转换为标签数组以计算算法准确率
解决方案
实现思路
核心逻辑是先建立样本和预测标签的映射关系,再按原始数组X的顺序匹配得到对应标签:
- 遍历预测结果字典
Z,将每个样本转为可哈希的元组格式,和对应预测标签绑定存储为映射表 - 按
X的样本顺序逐个查询映射表,拼接得到和X顺序完全对齐的标签数组y_pred
代码实现
基础版(样本无浮点精度误差时使用)
如果Z中的样本完全和X中的样本数值一致,直接用该版本即可:
import numpy as np # 构造样本到标签的映射表 sample_to_label = {} for pred_label, samples in Z.items(): for sample in samples: # 数组转元组后可作为字典键 sample_to_label[tuple(sample)] = pred_label # 按X的顺序生成预测标签数组 y_pred = [sample_to_label[tuple(x)] for x in X] print(y_pred) # 输出结果:[1, 3, 2, 3, 1, 2],和要求的格式一致
鲁棒版(兼容浮点精度误差场景)
如果因为计算过程中产生浮点精度误差,导致样本数值不完全匹配,可以用numpy.allclose做近似匹配:
import numpy as np y_pred = [] for x in X: for pred_label, samples in Z.items(): # 匹配当前样本对应标签 if any(np.allclose(x, s) for s in samples): y_pred.append(pred_label) break print(y_pred)
内容的提问来源于stack exchange,提问作者Thomas Iskandar
相关产品推荐
相关产品推荐

