主成分分析(PCA)可视化和特征重要性分析 | Python 实现
使用 Python 进行主成分分析 (PCA) 可视化和特征重要性分析
本示例展示如何使用 Python 和 scikit-learn 库进行主成分分析 (PCA),并通过不同的图表进行可视化。最后,我们将分析特征重要性,并解释为什么重要特征可能分布在不同的主成分中。
1. 导入必要的库
import pandas as pd
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
2. 加载数据
# 读取 Excel 表格
data = pd.read_excel('C:\Users\lenovo\Desktop\HIV\GSE6740GSE50011基因降低\data1.xlsx')
X = data.iloc[:, 1:].values # 影响因素
y = data.iloc[:, 0].values # 因变量
3. 进行 PCA
# 主成分分析算法
pca = PCA(n_components=10)
pca.fit(X)
X_pca = pca.transform(X)
4. 可视化结果
# 散点图
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()
5. 输出方差贡献率和累计贡献率
# 输出方差贡献率和累计贡献率
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()
6. 输出特征重要性
# 输出影响因素的重要性
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)
7. 解释特征重要性
为什么影响因素的重要性大的会出现在不同的主成分中?
主成分分析是一种将原始数据通过线性变换转化为新的、无关联的变量的技术。在这个过程中,原始数据的不同特征(即影响因素)可能会被分散到多个主成分中,而不是集中在一个主成分中。因此,影响因素的重要性可能会在不同的主成分中得到体现。
例如,一个影响因素可能对第一个主成分有较大的贡献,而另一个影响因素可能对第三个主成分有较大的贡献。这表明,不同影响因素在解释数据中的变异方面发挥着不同的作用。
原文地址: https://www.cveoy.top/t/topic/l1mj 著作权归作者所有。请勿转载和采集!