【问题标题】:How can I plot an ellipse from eigenvalues and eigenvectors in Python / Matplotlib?如何从 Python / Matplotlib 中的特征值和特征向量绘制椭圆?
【发布时间】:2021-08-15 12:27:11
【问题描述】:

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

cov = np.cov(X.T)
eigenvalues, eigenvectors = np.linalg.eig(cov)

我现在想使用 matplotlib 在两个特征向量周围绘制一个椭圆,但不知道如何。我想某种投影(例如点积)是必要的?

非常感谢任何帮助!

【问题讨论】:

    标签: python numpy matplotlib scipy


    【解决方案1】:

    根据您的示例,我将在这里创建一些数据

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

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 2020-05-09
      • 1970-01-01
      • 2018-12-30
      • 2019-04-16
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      相关资源
      最近更新 更多