似乎您可以使用均值和协方差参数的定义来使用数据中的最大似然估计来拟合它们,对吗?
import numpy as np
data = np.loadtxt("/home/***/****/***", usecols=(2, 3))
mu = data.mean(axis=0)
sigma = np.cov(data, rowvar=0)
在我的理解中,这就是“合身”的意思。但是,听起来您希望在绘图上显示这些数量。这可能有点棘手,但这只是因为您需要使用一些线性代数来找到估计协方差矩阵的特征向量,然后使用它们来绘制协方差椭圆。
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
# compute eigenvalues and associated eigenvectors
vals, vecs = np.linalg.eigh(sigma)
# compute "tilt" of ellipse using first eigenvector
x, y = vecs[:, 0]
theta = np.degrees(np.arctan2(y, x))
ax = plt.subplot(111)
# eigenvalues give length of ellipse along each eigenvector
w, h = 2 * np.sqrt(vals)
ax.add_artist(Ellipse(mu, w, h, theta))
# show data on top of ellipse
ax.scatter(data[:, 0], data[:, 1])
plt.show()