资源简介
pca主成分按贡献率降维光谱数据
之后进行马氏距离和欧式距离的计算
代码片段和文件信息
import numpy as np
import scipy.io as sio
def zeroMean(dataMat):
meanVal=np.mean(dataMataxis=0) #按列求均值,即求各个特征的均值
newData=dataMat-meanVal
return newDatameanVal
def percentage2n(eigValspercentage):
sortArray=np.sort(eigVals) #升序
sortArray=sortArray[-1::-1] #逆转,即降序
arraySum=sum(sortArray)
tmpSum=0
num=0
for i in sortArray:
tmpSum+=i
num+=1
if tmpSum>=arraySum*percentage:
return num
def pca(dataMatpercentage):
newDatameanVal=zeroMean(dataMat)
covMat=np.cov(newDatarowvar=0) #求协方差矩阵return ndarray;若rowvar非0,一列代表一个样本,为0,一行代表一个样本
eigValseigVects=np.linalg.eig(np.mat(covMat))#求特征值和特征向量特征向量是按列放的,即一列代表一个特征向量
n=percentage2n(eigValspercentage) #要达到percent的方差百分比,需要前n个特征向量
eigValIndice=np.argsort(eigVals) #对特征值从小到大排序
n_eigValIndice=eigValIndice[-1:-(n+1):-1] #最大的n个特征值的下标
n_eigVect
评论
共有 条评论