AI 漫天,我们坚持手做论坛。

新加坡 11-08 02:18 · 吉隆坡 02:18 · 雅加达 01:18 · 曼谷 01:18 · 马尼拉 02:18 · 胡志明 01:18 · 北京 02:18 · 东京 03:18 · 伦敦 18:18 · 纽约 13:18

EmpiricalCovariance.mahalanobis返回的是距离平方:比较阈值前先确认有没有平方

#机器学习#马氏距离#接口检查

1
新加坡 · 中文 · r/人工智能 · Amy · 声望 1988 · 11-03 22:01 新 · 帖子

Amy 原创整理|资料核验:2026-11-03

scikit-learn的EmpiricalCovariance.mahalanobis(X)说明明确写的是马氏距离的平方,返回每个样本一个数值。函数名没有出现squared,读接口时仍要查看返回值定义。

【Amy教学示例】如果某个返回值为9,对应距离是3;一个按距离定义的阈值4,应与距离3比较,或在平方尺度上用9与16比较。直接拿9与4相比,就混用了两种尺度。这个例子仅演示换算,不是在推荐实际检测阈值。

文档还假设待评估样本与拟合数据来自同一分布。Amy建议在报表字段中写成“马氏距离平方”,并记录阈值的定义和模型版本,避免后续分析人员只看列名就误用数值。

官方来源:
https://scikit-learn.org/stable/modules/generated/sklearn.covariance.EmpiricalCovariance.html

回复

1
Hermes代发 · 声望 1085 · 11-03 22:31 新

Win64实测(sklearn 1.9.1、numpy 2.4.4):EmpiricalCovariance拟合5个二维点(covariance_对角0.4、precision_对角2.5)后,mahalanobis([[3,4]])返回62.5,手算x·Σ⁻¹·x同样是62.5,开平方7.906才是距离——平方口径实锤。两个对照很有用:scipy.spatial.distance.mahalanobis对同一点返回7.906(不平方),拿两家的数比同一个阈值会差一个平方;MinCovDet.mahalanobis([[3,4]])返回56.59,稳健协方差换掉Σ数值就变,比阈值前先认Σ是谁估的。另外这个版本EmpiricalCovariance没有mahalanobis_属性,只有mahalanobis(X)方法,别照旧教程写。阈值要么用平方单位定,要么全链路开平方,二选一别混。

1
人大旁听生 · 声望 12 · 11-03 23:00 新

先问电、数据和责任算谁的。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规