失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PCA简化数据——主成分分析法

PCA简化数据——主成分分析法

时间:2021-11-18 02:59:58

相关推荐

PCA简化数据——主成分分析法

PCA简化数据——主成分分析法

基础知识主成分分析法PCA算法

基础知识

降维:将多维数据降到需要的维数,是一种对高维度特征数据预处理的方法。

降维是将高维度的数据保留下最重要的特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。

在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。

而降维具有如下的一些特点:

1.使得数据集更易使用2.降低算法的计算开销3.去除噪声4.使得结果容易理解

而降维只要通过如下的三种方法来得以实现

独立成分分析:(Independent Component Analysis,ICA)假设数据是从N个数据源产生的。数据是对各数据源的混和观察结果,并且这些数据源是独立的。它满足统计独立和非高斯的成分。

当然ICA和FA不是我们这篇blog需要介绍的重点,读者有一个大致的了解即可,下面我们来具体减少PCA,即主成分分析法。

主成分分析法

优点:降低数据的复杂性,识别最重要的多个特征。

缺点:不一定需要,且可能损失有用信息。

适用数据类型:数值型数据。

为了能够说明怎样能够更好地降维,我们引入最大方差理论:在信号处理中认为信号具有较大的方差,噪声具有较小的方差,信噪比就是信号与噪声的方差比,其越大越好(说明数据不容易被噪声所干扰)。样本在u1的投影方差大,在u2上的投影方差较小,那么可以认为u2上的投影是由噪声引起的。

显然,为了使得方差最大,在进行投影时,应该在u1方向上进行投影。而这是降了一个维度,如果需要将n维数据降成k维,我们需要重复之前的步骤,对产生方差最大的k个方向进行投影降维,这就是PCA的主要思想。

接下来,我们进行理论推导以保证正确性:

根据计算投影的方法进行建模

由此,我们就得出的PCA的模型,但是它仍然和抽象,我们对它进行推导来得出一般的结论。

综上所述,我们就得出了一般且可实现的算法

PCA算法

将数据转换成前N个主成分的伪码大致如下:

去除平均值 计算协方差矩阵 计算协方差矩阵的特征值和特征向量 将特征值从大到小排序 保留最上面的N个特征向量 将数据转换到上述N个特征向量构建的新空间中

PCA

from numpy import *def loadDataSet(fileName, delim='\t'):fr = open(fileName)stringArr = [line.strip().split(delim) for line in fr.readlines()]datArr = [list(map(float,line)) for line in stringArr]return mat(datArr)def pca(dataMat, topNfeat=9999999):meanVals = mean(dataMat, axis=0)meanRemoved = dataMat - meanVals #remove meancovMat = cov(meanRemoved, rowvar=0)eigVals,eigVects = linalg.eig(mat(covMat))eigValInd = argsort(eigVals) #sort, sort goes smallest to largesteigValInd = eigValInd[:-(topNfeat+1):-1] #cut off unwanted dimensionsredEigVects = eigVects[:,eigValInd] #reorganize eig vects largest to smallestlowDDataMat = meanRemoved * redEigVects#transform data into new dimensionsreconMat = (lowDDataMat * redEigVects.T) + meanValsreturn lowDDataMat, reconMatdef replaceNanWithMean(): datMat = loadDataSet('secom.data', ' ')numFeat = shape(datMat)[1]for i in range(numFeat):meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i]) #values that are not NaN (a number)datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal #set NaN values to meanreturn datMat

如果觉得《PCA简化数据——主成分分析法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。