You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用Spearman's Rho评估非线性降维技术的疑问

问题核心原因

你既没有调用错误的函数,也没有对文献产生误解,差异来自入参的输入逻辑和结果的取值规则:

  • scipy.stats.spearmanr 传入两个矩阵时,默认会计算两个矩阵所有列两两之间的Spearman相关系数,最终返回的是相关系数矩阵,附带对应的p值矩阵,这是函数的正常表现。
  • 文献中的单个Spearman Rho值,本质是对「原始特征空间的样本间距离矩阵」和「降维后空间的样本间距离矩阵」的非重复元素计算秩相关系数,用来衡量降维方法对样本相对距离关系的保留程度,这也是流形降维效果评估的通用标准逻辑。

正确计算方法

你可以按照以下步骤调整代码,得到和文献形式一致的单个评估值:

  1. 先分别计算原始特征、降维后成分的样本两两距离向量,用欧氏距离即可:
from scipy.spatial.distance import pdist
# 原始特征空间的样本对距离向量(直接取上三角展开结果,避免重复计算)
dist_ori = pdist(features, metric='euclidean')
# 降维后空间的样本对距离向量
dist_red = pdist(comp, metric='euclidean')
  1. 对两个距离向量调用spearmanr函数,得到的就是单值评估结果:
from scipy.stats import spearmanr
rho, p_val = spearmanr(dist_ori, dist_red)

得到的rho就是对应每种降维技术的评估值,和你参考的文献结果形式完全匹配。

内容的提问来源于stack exchange,提问作者user120768

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:45:03