PCA数据降维示例:从10维到3维的变换

版权申诉
5星 · 超过95%的资源 1 下载量 69 浏览量 更新于2024-10-14 收藏 1KB RAR 举报
资源摘要信息:"PCA(主成分分析)是一种常用的数据降维技术。它通过正交变换将可能相关的变量转换为一组线性不相关的变量,这组新的变量称为主成分。主成分分析的目标是保持数据集中的大部分变异性,同时减少特征的数量。 在给定的文件标题PCA.rar中,包含了PCA数据降维相关的主题,如PCA举例、PCA降维以及数据降维PCA和数据降维算法。描述中提到,此文件会通过举例演示如何将一个10维的随机数据降维到3维,同时提示用户可以将示例中的样本数据替换成自己的数据进行分析。 PCA算法的核心概念包括: 1. 数据的中心化:将数据减去其均值以消除数据中心点的移动,使得主成分分析可以在坐标原点进行。 2. 协方差矩阵的计算:描述数据中各个变量之间的协方差,用于确定这些变量之间的线性关系。 3. 特征值和特征向量的求解:计算协方差矩阵的特征值和对应的特征向量。特征值越大,对应特征向量的方向上的方差越大,代表该特征包含的信息量越多。 4. 选择主成分:根据特征值的大小,选择前几个最大的特征值对应的特征向量作为主成分。通常情况下,只需要选取累积贡献率达到一定阈值(如85%或90%)的主成分,从而实现降维。 5. 数据投影:将原始数据投影到所选主成分上,得到降维后的数据。 在应用PCA时,需要注意以下几点: - PCA对数据的标准化或归一化非常敏感,因此在应用PCA之前对数据进行适当的预处理是必要的。 - PCA降维是线性的降维方法,适用于数据具有线性结构的场景。对于非线性结构的数据,可能需要采用核主成分分析(Kernel PCA)或其他非线性降维方法。 - 降维会丢失信息,因此在选择主成分的数量时需要谨慎,过多或过少的主成分都可能导致模型性能的下降。 - PCA降维后的数据更容易可视化和解释,并且可以降低计算复杂度,提高模型训练和预测的速度。 压缩包子文件PCA.asv和PCA.m的文件名暗示,这些文件可能包含了不同编程语言编写的PCA算法实现代码。PCA.asv文件可能是一个自动化脚本或模型文件,而PCA.m文件通常与MATLAB语言有关,这两个文件名表明用户可以利用相应的编程环境和工具进行PCA算法的应用和数据降维操作。 综上所述,PCA作为数据降维算法,是处理多变量数据、简化数据结构的重要工具。通过掌握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 上传