标准差椭圆 python
时间: 2023-08-28 20:22:31 浏览: 129
在Python中,可以使用NumPy库来计算标准差椭圆。标准差椭圆是用于可视化数据集的离散度的椭圆形区域,其中包含给定标准差倍数内的大部分数据点。以下是一个示例代码来计算标准差椭圆:
```python
import numpy as np
import matplotlib.pyplot as plt
def plot_std_ellipse(data, std_devs=1):
cov_matrix = np.cov(data.T)
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)
angles = np.degrees(np.arctan2(*eigenvectors[:,0][::-1]))
std_devs = np.sqrt(eigenvalues) * std_devs
ellipse = plt Ellipse(xy=np.mean(data, axis=0), width=std_devs[0] * 2, height=std_devs[1] * 2, angle=angles, alpha=0.5)
ax = plt.gca()
ax.add_patch(ellipse)
plt.scatter(data[:,0], data[:,1])
plt.axis('equal')
plt.show()
# Example usage
data = np.random.multivariate_normal(mean=[2, 2], cov=[[0.3, 0.2], [0.2, 0.3]], size=100)
plot_std_ellipse(data)
```
这段代码首先使用`np.cov`计算数据集的协方差矩阵,然后使用`np.linalg.eig`计算协方差矩阵的特征值和特征向量。接下来,使用`np.degrees`和`np.arctan2`计算特征向量的角度。最后,使用`plt.Ellipse`创建椭圆对象,并利用`plt.scatter`绘制数据点和`plt.gca().add_patch`将椭圆添加到图形中进行可视化。