当前位置: 首页 > 图灵资讯 > 行业资讯> python中PCA的处理过程

python中PCA的处理过程

来源:图灵python
时间: 2024-06-24 13:35:14

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(filename,delim='\t'):#此处的'\t'表示不同变量之间的分隔符,T表示tab键入的空格
fr=open(filename)
stringArr=[line.strip().split(delim)forlineinfr.readlines()]
dataArr=[list(map(float,line))forlineinstringArr]
returnnp.mat(dataArr)


#定义pca分析函数
defpca(dataset,topNfeat=99999):#通常不需要设置topNfeat特征值数,由于后续需要进行可视化分析
meanVals=np.mean(dataset,axis=0)#求均值
meanRemoved=dataset-meanVals#预处理
covMat=np.cov(meanRemoved,rowvar=0)#解输入数据协方差矩阵
eigVals,eigVects=np.linalg.eig(np.mat(covMat))#求解特征值,特征向量
eigVaInd=np.argsort(eigVals)#排序处理特征值,默认为升序
eigVaInd=eigVaInd[-1:-(topNfeat):-1]#逆序处理按指定数量进行
redEigVects=eigVects[:,eigVaInd]#选择相应的特征向量
lowDataMat=meanRemoved*redEigVects#数据降维X*P
recontMat=(lowDataMat*redEigVects.T)+meanVals#C处理对数据进行了重构,非必要选项
returnlowDataMat,recontMat,eigVals#返回数据

#定义特值绘制函数
defplotEig(dataset,numFeat=20):
mpl.rcParams['font.sans-serif']=['TimesNewRoman']
sumData=np.zeros((1,numFeat))
dataset=dataset/sum(dataset)
foriinrange(numFeat):
sumData[0,i]=sum(dataset[0:i])

X=np.linspace(1,numFeat,numFeat)
fig=plt.figure()
ax=fig.add_subplot(211)
ax.plot(X,(sumData*100).T,'r-+')
mpl.rcParams['font.sans-serif']=['SimHei']
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
fig=plt.figure()
ax=fig.add_subplot(111)
ax.scatter(OrigData[:,0].flatten().A[0],OrigData[:,1].flatten().A[0],c='blue',marker='^',s=90)
ax.scatter(recData[:,0].flatten().A[0],recData[:,1].flatten().A[0],c='red',marker='o',s=90)
plt.show()

以上是Python中PCA的处理过程,希望对大家有所帮助。更多Python学习指南:python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。