gpt4 book ai didi

python - 选择数据集中属于多元高斯分布的点

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:15 30 4
gpt4 key购买 nike

我有一组值 D:

 [[  6.83822474   3.54843586]
[ 12.45778114 4.42755159]
[ 10.27710359 9.47337879]
...,
[ 46.55259568 64.73755611]
[ 51.50842754 44.60132979]

给定一个具有均值 M 和协方差 V 的多元高斯分布:

  1. 在均值的 2 个标准差范围内的单变量点的等效多变量情况是什么?即假设我有一个均值 A 和标准差 B 的单变量分布,如果 x_i - A < B,我可以说点 x_i 在均值的 2 个标准差范围内。在多变量情况下,这相当于什么?
  2. 我如何根据均值 M 计算 D 中 2 个标准差(或多元情况下的等效值)内的所有点?

最佳答案

听起来您想要的概括是 Mahalanobis distance .距均值 1 的马氏距离是距单变量高斯均值一个标准差的推广。

您可以使用模块 scipy.spatial.distance 中的函数计算马氏距离。 (几乎可以肯定在 scikit-learn 中有某种形式的这个距离的代码,可能还有 statsmodels,但我没有检查过。)

为了计算单个距离,有scipy.spatial.distance.mahalanobis ,以及计算点集合之间的距离,您可以使用 pdistcdist ,分别(也来自 scipy.spatial.distance)。

这是一个使用cdist 的脚本。在图中,用红色圈出的点与均值的马氏距离在 2 以内。

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial.distance import cdist


# Mean
M = [10, 7]

# Covariance matrix
V = np.array([[ 9, -2],
[-2, 2]])
VI = np.linalg.inv(V)

# Generate a sample from the multivariate normal distribution
# with mean M and covariance matrix V.
rng = np.random.default_rng()
x = rng.multivariate_normal(M, V, size=250)

# Compute the Mahalanobis distance of each point in the sample.
mdist = cdist(x, [M], metric='mahalanobis', VI=VI)[:,0]

# Find where the Mahalanobis distance is less than 2.
d2_mask = mdist < 2
x2 = x[d2_mask]

plt.plot(x2[:,0], x2[:,1], 'o',
markeredgecolor='r', markerfacecolor='w', markersize=6, alpha=0.6)
plt.plot(x[:,0], x[:,1], 'k.', markersize=5, alpha=0.5)
plt.grid(alpha=0.3)
plt.axis('equal')
plt.show()

plot

关于python - 选择数据集中属于多元高斯分布的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44998025/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com