给定一个二维数据集,我想在数据周围绘制一个椭圆。为此,我首先计算了协方差矩阵及其相关的特征值:
cov = np.cov(X.T)
eigenvalues, eigenvectors = np.linalg.eig(cov)
我现在想使用 matplotlib 在两个特征向量周围绘制一个椭圆,但不知道如何做。我想某种投影(例如点积)是必要的吗?
任何帮助是极大的赞赏!
根据你的例子,我将在这里创建一些数据
import numpy as np;
X = np.random.randn(100, 2)
X[:,1] += 0.3 * X[:,0]
cov = np.cov(X.T)
eigenvalues, eigenvectors = np.linalg.eig(cov)
特征值表示每个轴上的方差增益。因此,输出分布的等值线的轴长度与特征值(标准差)的平方根成正比
要绘制省略号,您可以使用参数方程
import matplotlib.pyplot as plt;
theta = np.linspace(0, 2*np.pi, 1000);
ellipsis = (np.sqrt(eigenvalues[None,:]) * eigenvectors) @ [np.sin(theta), np.cos(theta)]
plt.plot(ellipsis[0,:], ellipsis[1,:])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)