我有一个 3D 喷雾分布,应该适合 3D 抛物线函数。使用光束在不同高度切割 3D 抛物线捕获的数据将适合 2D 高斯。我如何使用从 3D 抛物线的不同切片获取的 2D 高斯分布来拟合或估计 3D 抛物线分布?
有一个相当简单的方法来做到这一点
scipy
。
首先我们创建一些试验数据集(3D 高斯):
import numpy as np
from scipy import stats
mu = np.array([1., 2., 3.])
sigma = np.array([
[3., 0.5, -0.3],
[0.5, 2., 0.8],
[-0.3, 0.8, 1.]
])
law = stats.multivariate_normal(mean=mu, cov=sigma)
data = law.rvs(30_000)
现在我们可以使用
fit
对象的
multivariate_normal
方法来回归/拟合点云:
stats.multivariate_normal.fit(data)
#(array([0.99285832, 1.99391781, 3.00402304]),
# array([[ 2.97516577, 0.4876874 , -0.30404617],
# [ 0.4876874 , 1.96983946, 0.79608385],
# [-0.30404617, 0.79608385, 0.98948756]]))