PCA算法python实现
时间: 2023-07-26 20:19:37 浏览: 93
PCA(Principal Component Analysis)是一种常用的降维算法,可以将高维数据映射到低维空间中。下面是使用Python实现PCA的示例代码:
```python
import numpy as np
# 创建示例数据
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 计算协方差矩阵
cov_mat = np.cov(X.T)
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(cov_mat)
# 将特征值从大到小排序
eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:, i]) for i in range(len(eig_vals))]
eig_pairs.sort(key=lambda x: x[0], reverse=True)
# 按照排序后的特征值选择前k个特征向量
k = 2
feature = np.array([ele[1] for ele in eig_pairs[:k]])
# 将数据投影到选定的特征向量上
X_new = np.dot(X, feature.T)
# 输出降维后的数据
print(X_new)
```
在上述代码中,我们使用NumPy创建了一个3x3的矩阵作为示例数据,然后分别计算了协方差矩阵、特征值和特征向量,并按照特征值大小排序选择前k个特征向量。然后将数据投影到选定的特征向量上,得到降维后的数据。
需要注意的是,PCA算法的本质是对数据进行线性变换,将原始数据映射到一个新的坐标系中,使得新坐标系下的数据方差最大。因此,PCA算法实现的关键是求解数据的协方差矩阵及其特征向量。在实际使用中,我们可以使用现成的库函数来实现PCA算法,如上述示例代码中使用的NumPy库。
阅读全文