利用Python编写PCA算法,实现城市排名数据的降维
时间: 2024-02-13 14:05:21 浏览: 51
PCA(Principal Component Analysis)主成分分析是一种常用的数据降维方法,可以将高维数据转化为低维数据,同时保留原始数据的主要特征。下面是利用 Python 编写 PCA 算法实现城市排名数据的降维的示例代码:
```python
import numpy as np
def pca(data, k):
# 标准化数据
mean = np.mean(data, axis=0)
std = np.std(data, axis=0)
data = (data - mean) / std
# 计算协方差矩阵
cov_mat = np.cov(data, rowvar=False)
# 计算特征值和特征向量
eigen_vals, eigen_vecs = np.linalg.eig(cov_mat)
# 对特征值进行排序
eigen_pairs = [(np.abs(eigen_vals[i]), eigen_vecs[:, i]) for i in range(len(eigen_vals))]
eigen_pairs.sort(reverse=True)
# 取前 k 个特征向量
w = np.hstack([eigen_pairs[i][1].reshape(-1, 1) for i in range(k)])
# 转换数据
transformed = data.dot(w)
return transformed
# 测试代码
data = np.array([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7]])
k = 2
result = pca(data, k)
print(result)
```
在上面的代码中,我们先对数据进行标准化处理,然后计算协方差矩阵和特征值、特征向量。接着对特征值进行排序,取前 k 个特征向量,并将数据投影到这些特征向量所张成的空间中。最后返回降维后的数据。在测试代码中,我们将一个 4x4 的矩阵作为输入数据,将其降至 2 维,并输出结果。
阅读全文