微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Python/Matplotlib 中的特征值和特征向量绘制椭圆?

如何解决如何从 Python/Matplotlib 中的特征值和特征向量绘制椭圆?

给定一个二维数据集,我想在数据周围绘制一个椭圆。为此,我首先计算了协方差矩阵及其相关的特征值:

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,:])

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。