# mahal
到高斯混合分量的马氏距离
函数库: TyStatistics
# 语法
# 说明
d2 = mahal(gm,X) 返回 X 中每个观测值到 gm 中每个高斯混合分量的马氏距离平方。 示例
# 示例
测量马氏距离
使用 mvnrnd 函数生成遵循两个二元高斯分布混合的随机变量。 使用 fitgmdist 函数将高斯混合模型 (GMM) 拟合到生成的数据,然后计算生成的数据与拟合 GMM 的混合分量之间的马哈拉诺比斯距离。
定义两个二元高斯混合分量的分布参数(均值和协方差)。
using TyStatistics
using TyMath
using TyPlot
rng = MT19937ar(5489);
mu1 = [1 2];
sigma1 = [2 0; 0 .5];
mu2 = [-3 -5];
sigma2 = [1 0; 0 1];
从每个分量生成相同数量的随机变量,然后组合两组随机变量。
r1, = mvnrnd(rng,mu1,sigma1,1000);
r2, = mvnrnd(rng,mu2,sigma2,1000);
X = [r1; r2];
组合数据集 X 包含遵循两个二元高斯分布混合的随机变量。
将二分量 GMM 拟合到 X。
gm = fitgmdist(X,2,randseed=rng)
gm =
在2个维中具有2个成分的高斯混合分布
成分 1:
混合比例: 0.5000000349712568
均值: -2.9617249214106183 -4.972669853991235
成分 2:
混合比例: 0.4999999650287432
均值: 0.9538515431779069 2.026091266169074
fitgmdist 使用两个混合分量将 GMM 拟合到 X。 分量 1 和分量 2 的均值分别为 [-2.9617,-4.9727] 和 [0.9539,2.0261],分别接近 mu2 和 mu1。
计算 X 中每个点到 gm 每个分量的马氏距离。
d2 = mahal(gm,X);
使用 scatter 绘制 X,并使用标记颜色来可视化到分量 1 的马哈拉诺比斯距离。
s = scatter(X[:,1],X[:,2],10,d2[:,1],marker=".")
c = colorbar(s)
c.set_label("Mahalanobis Distance to Component 1")

# 输入参数
gm - 高斯混合分布gm分布对象
高斯混合分布,也称为高斯混合模型 (GMM),指定为 gmdistribution 对象。
您可以使用 gmdistribution 或 fitgmdist 创建 gmdistribution 对象。 使用 gmdistribution 函数通过指定分布参数来创建 gmdistribution 对象。 使用 fitgmdist 函数将 gmdistribution 模型拟合到给定固定数量组件的数据。
X - 数据n×m 数值矩阵
X,指定为 n×m 数值矩阵,其中 n 是观测值的数量,m 是每个观测值中变量的数量。
如果 X 的一行包含 NaN,则 mahal 会从计算中排除该行。 d2 中对应的值为 NaN。
数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128
# 输出参数
d2 - 马氏距离的平方n×k 数值矩阵
X 中每个观测值与 gm 中每个高斯混合分量的马哈拉诺比斯距离平方,以 n×k 数值矩阵形式返回,其中 n 是 X 中观测值的数量,k 是 gm 中混合分量的数量。
d2[i,j] 是观测值 i 到第 j 个高斯混合分量的平方距离。
# 详细信息
马氏距离n×k 数值矩阵
马哈拉诺比斯距离是样本点和分布之间的度量。
从向量 x 到均值 μ 和协方差 Σ 的分布的马氏距离为
该距离表示 x 与标准差数量平均值的距离。
mahal 将 X 中的观测值的马哈拉诺比斯距离