PCA主成分分析在矩阵降维中的应用

版权申诉
0 下载量 152 浏览量 更新于2024-10-17 收藏 1KB ZIP 举报
资源摘要信息:"PCA(主成分分析)是统计学中一种常用的数据降维技术,其核心目的是通过正交变换将一组可能相关的变量转换为一组线性不相关的变量,这组新的变量称为主成分。PCA在处理高维数据集时特别有用,因为它能够将多个变量简化为少数几个最重要的变量,从而减少数据集的维度,同时尽可能保留原始数据的信息。在机器学习、模式识别、信号处理和统计学等多个领域都有广泛的应用。 PCA的主要步骤包括数据的标准化处理、计算协方差矩阵、求解协方差矩阵的特征值和特征向量、将特征值按照从大到小的顺序排列、选择前k个最大的特征值所对应的特征向量来构造新的特征空间,最后将原始数据投影到这个新的特征空间上,得到降维后的数据。 在实现PCA的过程中,需要用到线性代数中的矩阵运算知识,包括矩阵乘法、转置、特征值和特征向量的计算等。在编程实现PCA时,通常会用到数学库,例如MATLAB中的pca.m文件,它包含了PCA算法的核心实现。MATLAB是一种用于数值计算、可视化以及编程的高级计算机语言,它在数据分析和处理领域有广泛的应用。 pca.m文件可能包含如下核心步骤的代码实现: 1. 对输入数据进行标准化处理,以消除不同特征量纲的影响,使得每个特征的均值为0,标准差为1。 2. 计算标准化数据的协方差矩阵,协方差矩阵的每个元素表示两列数据之间的协方差。 3. 求解协方差矩阵的特征值和特征向量。特征向量定义了新的坐标系,而特征值的大小代表了在对应特征向量方向上的数据分散程度。 4. 根据特征值的大小对特征向量进行排序,并选择最重要的k个特征向量构成投影矩阵。 5. 将原始数据矩阵通过乘以投影矩阵进行转换,得到降维后的数据。 通过以上步骤,我们可以利用pca.m文件实现数据的主成分分析和降维处理,达到简化数据结构、突出数据主要特征的目的。"

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()报错'numpy.float64' object is not iterable,如何修改

2023-06-10 上传