PCA降维与数据重构简易教程

版权申诉
0 下载量 50 浏览量 更新于2024-11-07 收藏 10KB RAR 举报
资源摘要信息:"PCA降维重构的相关知识" PCA(主成分分析)是一种常用的数据降维技术,在机器学习和统计学中有广泛的应用。PCA的主要目标是通过线性变换将原始数据转换到一组各维度线性无关的表示,使用尽可能少的变量来解释数据中的大部分方差。 1. PCA降维的基本概念: PCA降维的核心在于找到数据中的主要变化方向,即主成分,并将原始数据投影到这些主成分上。每个主成分都是原始数据中方差最大的方向,且各主成分之间相互正交(即相互独立)。通过选择前几个方差最大的主成分,可以减少数据的维度,同时尽量保留原始数据的特征。 2. PCA降维的数学原理: PCA降维的过程可以通过协方差矩阵来实现。首先计算数据的均值,然后计算数据协方差矩阵,接下来求解协方差矩阵的特征值和特征向量,特征值最大的特征向量方向即为第一主成分,以此类推。然后根据需要降维到的维度选择前k个最大的特征值对应的特征向量作为新的坐标轴。 3. PCA降维的具体步骤: - 数据标准化:由于PCA对数据的尺度敏感,所以通常需要先对数据进行标准化处理。 - 计算协方差矩阵:标准化后的数据计算其协方差矩阵。 - 求解特征值和特征向量:通过求解协方差矩阵得到特征值和特征向量。 - 特征值排序:根据特征值的大小进行排序。 - 选择主成分:根据问题的需求选择前k个最大的特征值对应的特征向量,作为新的基。 - 数据转换:将原始数据投影到选定的主成分上进行降维。 4. PCA重构数据: 在完成PCA降维后,可以通过逆操作将降维后的数据“重构”回原始数据空间。这通常涉及到保留下来的主成分以及它们对应的特征值。由于降维过程丢失了一些信息,因此重构的数据与原始数据并不完全相同,但可以通过优化选择的主成分数量,使得重构数据尽可能保留原始数据的主要特征。 5. PCA的应用场景: PCA广泛应用于数据预处理、特征提取、数据可视化等领域。例如在图像压缩中,可以通过PCA提取图像的主要特征,去除冗余信息,达到压缩数据的目的。在生物学、基因组学中,PCA能够帮助识别生物样本之间的关系。 6. PCA降维与重构的代码实现: 在本次提供的压缩文件中,有一个PCA降维与重构的程序,该程序实现了从一个.txt文件中读取数据,利用PCA方法进行降维,并通过.m文件进行测试。具体来说,程序会读取数据文件,执行PCA降维算法,然后通过保存下来的主成分和特征值重构数据,并将重构后的数据与原始数据进行对比,验证重构的效果。 通过这个程序,可以加深对PCA降维与重构过程的理解,以及在实际编程中如何应用PCA算法。这不仅对于数据科学家来说是一个非常有用的技能,对于任何需要处理大量数据的IT专业人士来说,了解PCA也是必备的知识之一。

import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from mpl_toolkits.mplot3d import Axes3D from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler data=pd.read_csv('H:/analysis_results/mean_HN.csv') data.head() x=data.iloc[:,1:7] y=data.iloc[:,6] scaler=StandardScaler() scaler.fit(x) x_scaler=scaler.transform(x) print(x_scaler.shape) pca=PCA(n_components=3) x_pca=pca.fit_transform(x_scaler) print(x_pca.shape) #查看各个主成分对应的方差大小和占全部方差的比例 #可以看到前2个主成分已经解释了样本分布的90%的差异了 print('explained_variance_:',pca.explained_variance_) print('explained_variance_ratio_:',pca.explained_variance_ratio_) print('total explained variance ratio of first 6 principal components:',sum(pca.explained_variance_ratio_)) #将分析的结果保存成字典 result={ 'explained_variance_:',pca.explained_variance_, 'explained_variance_ratio_:',pca.explained_variance_ratio_, 'total explained variance ratio:',np.sum(pca.explained_variance_ratio_)} df=pd.DataFrame.from_dict(result,orient='index',columns=['value']) df.to_csv('H:/analysis_results/Cluster analysis/pca_explained_variance_HN.csv') #可视化各个主成分贡献的方差 #fig1=plt.figure(figsize=(10,10)) #plt.rcParams['figure.dpi'] = 300#设置像素参数值 plt.rcParams['path.simplify'] = False#禁用抗锯齿效果 plt.figure() plt.plot(np.arange(1,4),pca.explained_variance_,color='blue', linestyle='-',linewidth=2) plt.xticks(np.arange(1, 4, 1))#修改X轴间隔为1 plt.title('PCA_plot_HN') plt.xlabel('components_n',fontsize=16) plt.ylabel('explained_variance_',fontsize=16) #plt.savefig('H:/analysis_results/Cluster analysis/pca_explained_variance_HN.png') plt.show(),想要将得出的结果value为3个标签PC1,PC2,PC3,如何修改

2023-06-10 上传