PCA 降维分析:可视化数据并解读主成分贡献
使用 Python 进行主成分分析 (PCA) 降维并可视化结果
本示例使用 Python 和 scikit-learn 库进行主成分分析 (PCA) 降维,并通过多种可视化方法展示降维结果,帮助你理解 PCA 的原理和应用。
代码实现
import pandas as pd
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 读取 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=6)
pca.fit(X)
X_pca = pca.transform(X)
# 输出前 6 个重要变量名称
important_vars = [list(data.columns)[i] for i in range(1,7)]
print('前 6 个重要变量名称:', important_vars)
# 散点图
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='rainbow')
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.title('Scatter plot of data')
plt.show()
# 热力图
plt.imshow(pca.components_, cmap='viridis', aspect='auto')
plt.yticks(range(len(important_vars)), important_vars)
plt.colorbar()
plt.xticks(range(6), ['PC1', 'PC2', 'PC3', 'PC4', 'PC5', 'PC6'], rotation=60, ha='left')
plt.xlabel('Principal components')
plt.ylabel('Variables')
plt.title('Heatmap of PCA components')
plt.show()
# 3D 图
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X_pca[:, 0], X_pca[:, 1], X_pca[:, 2], c=y, cmap='rainbow')
ax.set_xlabel('PC1')
ax.set_ylabel('PC2')
ax.set_zlabel('PC3')
plt.title('3D plot of data')
plt.show()
# 折线图
plt.plot(X_pca[:, 0], c='red', label='PC1')
plt.plot(X_pca[:, 1], c='blue', label='PC2')
plt.plot(X_pca[:, 2], c='green', label='PC3')
plt.legend()
plt.title('Line plot of first 3 principal components')
plt.show()
# 柱状图
plt.bar(range(6), pca.explained_variance_ratio_, alpha=0.5, align='center')
plt.xticks(range(6), ['PC1', 'PC2', 'PC3', 'PC4', 'PC5', 'PC6'])
plt.xlabel('Principal components')
plt.ylabel('Variance ratio')
plt.title('Bar plot of explained variance ratio')
plt.show()
可视化结果分析
- 散点图: 显示降维后的数据点在 PC1 和 PC2 坐标系中的分布情况,可以观察数据点的聚集趋势和离群点。
- 热力图: 显示每个主成分对原始变量的贡献程度,可以帮助你理解每个主成分的含义。
- 3D 图: 显示降维后的数据点在 PC1、PC2 和 PC3 坐标系中的分布情况,可以更直观地观察数据的空间结构。
- 折线图: 显示前几个主成分的趋势变化,可以帮助你观察数据的变化规律。
- 柱状图: 显示每个主成分对总方差的贡献程度,可以帮助你选择重要的主成分。
主成分贡献的含义
柱状图的横纵坐标轴含义:
- 横坐标轴: 主成分的编号 (PC1, PC2, PC3 等)。
- 纵坐标轴: 每个主成分对总方差的贡献程度 (Explained Variance Ratio)。
主成分对总方差的贡献程度越大表示什么内容: 主成分对总方差的贡献程度越大,表示该主成分能够解释原始数据中的更多方差,即该主成分包含更多的信息。因此,主成分对总方差的贡献程度越大,该主成分的重要性就越高。在选择主成分时,通常选择对总方差贡献较大的前几个主成分,以保留尽可能多的信息。
总结
PCA 是一种强大的降维技术,可以将高维数据降维到低维空间,同时保留尽可能多的信息。通过可视化分析,我们可以更好地理解 PCA 的降维结果,并选择重要的主成分进行进一步分析。
原文地址: https://www.cveoy.top/t/topic/lWg0 著作权归作者所有。请勿转载和采集!