主成分分析 (PCA) 详解及 Python 实现: 数据降维和特征重要性分析

主成分分析 (PCA) 是一种常用的降维技术,它可以将高维数据转换为低维数据,同时尽可能保留原始数据的信息。PCA 的核心思想是找到数据中方差最大的方向,并将其作为主成分。

步骤:

  1. 数据预处理: 首先,需要对数据进行预处理,例如标准化或中心化,以确保每个特征具有相同的尺度。
  2. 计算协方差矩阵: 计算数据矩阵的协方差矩阵。
  3. 特征值分解: 对协方差矩阵进行特征值分解,得到特征值和特征向量。
  4. 选择主成分: 选择前 k 个特征值对应的特征向量,作为主成分。k 的选择取决于需要保留多少信息。
  5. 数据降维: 将原始数据投影到主成分空间,得到降维后的数据。

Python 实现:

import pandas as pd
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np

# 读取 Excel 表格
data = pd.read_excel('C:\Users\lenovo\Desktop\HIV\GSE6740GSE50011基因降低\data1.xlsx')
X = data.iloc[:, 1:].values  # 影响因素
y = data.iloc[:, 0].values  # 因变量

# 主成分分析算法
pca = PCA(n_components=10)
pca.fit(X)
X_pca = pca.transform(X)

# 散点图
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.title('PCA Scatter Plot')
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()

# 热力图
corr = np.corrcoef(X_pca.T)
plt.imshow(corr, cmap='hot', interpolation='nearest')
plt.title('PCA Heatmap')
plt.colorbar()
plt.show()

# 3D 图
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(X_pca[:, 0], X_pca[:, 1], X_pca[:, 2])
ax.set_xlabel('PC1')
ax.set_ylabel('PC2')
ax.set_zlabel('PC3')
plt.title('PCA 3D Plot')
plt.show()

# 折线图
plt.plot(X_pca)
plt.title('PCA Line Plot')
plt.xlabel('Samples')
plt.ylabel('Feature Values')
plt.show()

# 柱状图
plt.bar(range(len(pca.explained_variance_ratio_)), pca.explained_variance_ratio_)
plt.title('PCA Explained Variance Ratio')
plt.xlabel('Principal Component')
plt.ylabel('Variance Ratio')
plt.show()

# 输出方差贡献率和累计贡献率
print('Explained Variance Ratio:')
print(pca.explained_variance_ratio_)
print('Cumulative Explained Variance Ratio:')
print(np.cumsum(pca.explained_variance_ratio_))

# 绘制累计贡献率的折线图
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.title('PCA Cumulative Explained Variance Ratio')
plt.xlabel('Principal Component')
plt.ylabel('Cumulative Variance Ratio')
plt.show()

# 输出影响因素的重要性
important_features = pd.DataFrame(pca.components_, columns=data.columns[1:])
important_features = important_features.abs().sum(axis=0).sort_values(ascending=False)
print('Feature Importance:')
print(important_features)

特征重要性解释:

上述代码中,最后模块输出的重要性是影响因素的重要性,即在主成分分析中,各个影响因素对于主成分的贡献程度。重要性的计算是通过对每个影响因素的主成分系数进行绝对值求和,然后按照降序排列。重要性越高,表示该影响因素对主成分的贡献越大。

总结:

PCA 是一种强大的降维技术,可以有效地减少数据维度,同时保留大部分信息。通过分析特征重要性,我们可以了解各个影响因素对主成分的贡献程度,进而对数据进行更深入的理解。

主成分分析 (PCA) 详解及 Python 实现: 数据降维和特征重要性分析

原文地址: https://www.cveoy.top/t/topic/l1k8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录