利用python编写pca算法,实现城市排名秋数据的降维
时间: 2023-08-12 09:12:00 浏览: 161
好的,下面是一个简单的 Python 实现 PCA 算法的示例代码:
```python
import numpy as np
def pca(X, k):
"""
PCA算法实现函数
:param X: 数据矩阵,每行代表一个样本
:param k: 降维后的维度数
:return: 降维后的数据矩阵
"""
# 计算均值
mean = np.mean(X, axis=0)
# 中心化
X_centered = X - mean
# 计算协方差矩阵
cov = np.cov(X_centered, rowvar=False)
# 计算特征值和特征向量
eig_vals, eig_vecs = np.linalg.eig(cov)
# 选取前k个特征向量
top_k_eig_vecs = eig_vecs[:, :k]
# 降维
X_reduced = np.dot(X_centered, top_k_eig_vecs)
return X_reduced
```
接下来,我们可以使用该函数对城市排名数据进行降维:
```python
import pandas as pd
# 读取城市排名数据
data = pd.read_csv('city_rank.csv')
# 提取数据矩阵
X = data.iloc[:, 1:].values
# 调用PCA函数进行降维,降到2维
X_reduced = pca(X, 2)
# 将降维后的数据保存到新的CSV文件中
pd.DataFrame(X_reduced).to_csv('city_rank_reduced.csv', index=False)
```
这里假设城市排名数据保存在名为 `city_rank.csv` 的 CSV 文件中,其中第一列是城市名称,后面的列是各个指标的数值。我们提取后面的数据矩阵,调用 `pca` 函数进行降维,降到2维,并将降维后的数据保存到名为 `city_rank_reduced.csv` 的 CSV 文件中。
阅读全文