python实现PCA算法将多维数据降至一维
时间: 2024-05-09 17:17:19 浏览: 241
PCA(Principal Component Analysis)是一种常用的数据降维方法,可以将高维数据降到低维,同时保留数据的主要特征。下面是Python实现PCA算法将多维数据降至一维的示例代码:
```python
import numpy as np
def pca(data, dim=1):
# 中心化数据
mean = np.mean(data, axis=0)
data -= mean
# 计算协方差矩阵
cov_mat = np.cov(data, rowvar=False)
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(cov_mat)
# 排序特征值和特征向量
idx = np.argsort(eig_vals)[::-1]
eig_vals = eig_vals[idx]
eig_vecs = eig_vecs[:, idx]
# 选择前dim个特征向量
eig_vecs = eig_vecs[:, :dim]
# 将数据投影到新的低维空间中
new_data = np.dot(data, eig_vecs)
return new_data
# 测试代码
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
new_data = pca(data, 1)
print(new_data)
```
输出为:
```
[[-1.63299316]
[ 0. ]
[ 1.63299316]]
```
其中,data为原始的3维数据,new_data为降至1维后的数据。可以看出,新的数据仅有一维,保留了原始数据的主要特征。
阅读全文