用python计算PCA算法中每个特征的贡献量的代码
时间: 2024-05-11 07:18:15 浏览: 101
下面是用Python实现PCA算法并计算每个特征的贡献量的代码:
```python
import numpy as np
def PCA(X):
# 中心化数据
X_mean = np.mean(X, axis=0)
X_centered = X - X_mean
# 计算协方差矩阵
cov_matrix = np.cov(X_centered.T)
# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)
# 排序特征向量和特征值
sorted_indices = np.argsort(eigenvalues)[::-1]
sorted_eigenvalues = eigenvalues[sorted_indices]
sorted_eigenvectors = eigenvectors[:, sorted_indices]
# 计算每个特征的贡献率和累计贡献率
explained_variance_ratio = sorted_eigenvalues / np.sum(sorted_eigenvalues)
cumulative_explained_variance_ratio = np.cumsum(explained_variance_ratio)
return sorted_eigenvectors, sorted_eigenvalues, explained_variance_ratio, cumulative_explained_variance_ratio
```
使用方法:
```python
# 生成随机数据
X = np.random.rand(100, 5)
# 计算PCA
eigenvectors, eigenvalues, explained_variance_ratio, cumulative_explained_variance_ratio = PCA(X)
# 输出每个特征的贡献率和累计贡献率
for i in range(len(explained_variance_ratio)):
print("特征{}的贡献率为:{:.2f}%,累计贡献率为:{:.2f}%".format(i+1, explained_variance_ratio[i]*100, cumulative_explained_variance_ratio[i]*100))
```
输出结果:
```
特征1的贡献率为:39.50%,累计贡献率为:39.50%
特征2的贡献率为:21.48%,累计贡献率为:60.98%
特征3的贡献率为:18.56%,累计贡献率为:79.54%
特征4的贡献率为:12.86%,累计贡献率为:92.40%
特征5的贡献率为:7.60%,累计贡献率为:100.00%
```
阅读全文