写一个python函数可以达到PCA的效果并绘制出相对应的图像
时间: 2023-06-16 13:02:17 浏览: 118
PCA(Principal Component Analysis)是一种常用的数据降维技术,可以将高维度数据转化为低维度数据,同时保留数据的主要特征。在Python中,我们可以使用NumPy和Matplotlib库实现PCA的效果并绘制图像。以下是一个简单的PCA函数和绘图代码:
```python
import numpy as np
import matplotlib.pyplot as plt
def pca(data, dim):
# 标准化数据
mean = np.mean(data, axis=0)
data -= mean
# 计算协方差矩阵
cov = np.cov(data, rowvar=False)
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(cov)
# 选取前dim个特征向量
idx = np.argsort(-eig_vals)
eig_vecs = eig_vecs[:, idx][:, :dim]
# 将数据投影到新的低维空间
data_pca = np.dot(data, eig_vecs)
return data_pca
# 生成随机数据
data = np.random.rand(100, 5)
# 对数据进行PCA降维
data_pca = pca(data, 2)
# 绘制散点图
plt.scatter(data_pca[:, 0], data_pca[:, 1])
plt.show()
```
在以上代码中,我们首先定义了一个pca函数,该函数接受两个参数:原始数据和目标维度。该函数首先对数据进行标准化处理,然后计算协方差矩阵,接着计算特征值和特征向量,最后选取前dim个特征向量将数据投影到新的低维空间。我们使用NumPy的linalg.eig函数计算特征值和特征向量,并使用argsort函数对特征值进行降序排列,以便选择前dim个特征向量。最后,我们使用Matplotlib库绘制散点图来展示我们的数据降维效果。
阅读全文