python实现pca主成分分析,pca计算过程
1、输入矩阵归一化处理。
2、计算样本协方差矩阵。
3、求解协方差矩阵指定的特征值对应特征向量。
4、确定转换矩阵,求解降维数据。
实例
#/usr/nom/envpython
#_*_coding:utf-8_*_
#@Time:2021/9/310:04
#@Author:Abigfish
#@FileName:maindemo13.py
#@Software:PyCharm
importmatplotlib.pyplotasplt
importnumpyasnp
frompylabimport*
#首先导入数据,此部分为从存储列表或单元中读取分析数据
defloadDataSet(文件名,delim=\t):#此处的\t 表示不同变量间的分隔符,t表示标签键键入的空格
fr=打开(文件名)
string ar=[line。strip().行infr的分割(delim)。readlines()]
dataArr=[list(map(float,line))forlineinstringArr]
returnnp.mat(dataArr)
#定义极冠吸收分析函数
defpca(dataset,topNfeat=99999):#topNfeat特征值数目,通常不用设置,因为后续要进行可视化分析
meanVals=np.mean(数据集,轴=0)#求均值
meanRemoved=dataset-meanVals#预处理
covMat=np.cov(meanRemoved,rowvar=0)#求解输入数据协方差矩阵
EIG向量=NP。利纳格。EIG(NP。垫子(盖垫))#求解特征值,特征向量
eigVaInd=np.argsort(eigVals)#对特征值进行排序处理,默认为升序
EIG瓦因德=EIG瓦因德[-1:-(topn专长):-1]#根据指定数目进行逆序处理
redeigwects=EIG矢量[:eigVaInd]#选取对应特征向量
低数据mat=移除平均值*重新设计次数数据降维X*P
recontMat=(低位数据mat * redeigwects .t)含义#c处理进行了数据重构,非必须选项
returnlowDataMat,recontMat,eigVals#返回数据
#定义特值值绘制函数
defplotEig(dataset,numFeat=20):
mpl。RC params[ font。sans-serif ]=[ times new Roman ]
sumData=np.zeros((1,numFeat))
数据集=数据集/总和(数据集)
foriinrange(numFeat):
sumData[0,i]=sum(数据集[0:i])
X=np.linspace(1,numFeat,numFeat)
图=plt .图()
ax=fig.add_subplot(211)
ax.plot(X,(sumData*100).t, r-)
mpl。RC params[ font。sans-serif ]=[ sim hei ]
plt.ylabel(累计方差百分比)
ax2=fig.add_subplot(212)
ax2.plot(X.T,(dataset[0:numFeat]).T)*100, b-* )
plt.xlabel(主成分数)
plt.ylabel(方差百分比)
plt.show()
#定义原始数据及第一主成分绘制函数
defplotData(OrigData,recData):
importmatplotlib.pyplotasplt
图=plt .图()
ax=fig.add_subplot(111)
ax . scatter(origin data[:0]).展平()。A[0],原始数据[:1].展平()。A[0],c=blue,marker=^,s=90)
ax.scatter(recData[:0]).展平()。A[0],recData[:1].展平()。A[0],c=red ,marker=o ,s=90)
plt.show()以上就是大蟒中污染控制局(污染控制机构)的处理过程,希望对大家有所帮助。更多计算机编程语言学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1、戴尔自交第三代电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。