Sklearn中Hamming距离未返回绝对差异值的原因及适配度量咨询
问题原因与解决方案
为什么返回浮点数而非绝对差异数?
scikit-learn中pairwise_distances的hamming度量是归一化后的结果:它计算的是两个样本间差异特征的比例,公式为差异特征数 / 总特征数。你的数据有500个成分特征,当仅差异1种成分时,结果就是1/500 = 0.002(你看到的0.006可能对应3种差异成分,或者实际特征数不是500),这就是返回浮点数的原因。
如何获取绝对差异数?
有两种直接的解决方式:
- 方式一:基于现有Hamming结果转换
将返回的距离矩阵乘以总特征数(即数据的列数),就能得到绝对差异数:absolute_distance = distance_array * X.shape[1] - 方式二:使用L1(曼哈顿)距离度量
对于仅含0和1的二元特征,metric='l1'计算的是两个样本间差异特征的绝对总数,完全符合你的需求:distance_array = pairwise_distances(X, metric='l1')
内容的提问来源于stack exchange,提问作者luisa
相关产品推荐
相关产品推荐

