利用 PCA来简化数据

来源:互联网 发布:爱丽小屋淘宝官方旗舰 编辑:程序博客网 时间:2024/05/17 02:37

降维的目的是对输入的数目进行削减,由此剔除数据中的噪声并提高机器学习方法的性能,同时使得数据变得更易使用,使得机器学习任务更加精确。

       现有的主要的降维技术:(1)  主成分分析( PCA : Principal Component Analysis)

                                            (2)  因子分析(FA)

                                            (3) 独立成分分析(ICA)

        主成分分析的关键步骤:

                                            (1) 去除平均值

                                            (2) 计算协方差矩阵

                                            (3)计算协方差矩阵的特征值和特征向量

                                            (4)将特征值从大到小排序

                                            (5) 保留最上面的N个特征向量

                                            (6) 将数据转换到上述N个特征向量构建的新空间中。

PCA可以从数据中识别器主要特征,它是通过沿着数据最大方差方向旋转坐标轴来实现的。选择方差最大的方向作为第一条坐标轴,后续坐标轴则与前面的坐标轴正交,协方差矩阵上的特征值分析可以用一系列的正交坐标轴来获取。
       主成分分析(PCA)的代码实现如下:

        

from numpy import *def loadDataSet(fileName, delim='\t'):    fr = open(fileName)    stringArr = [line.strip().split(delim) for line in fr.readlines()]    datArr = [map(float,line) for line in stringArr]    return mat(datArr)  #PCA算法def pca(dataMat, topNfeat=9999999):    meanVals = mean(dataMat, axis=0)    meanRemoved = dataMat - meanVals #remove mean    covMat = cov(meanRemoved, rowvar=0)    eigVals,eigVects = linalg.eig(mat(covMat))    eigValInd = argsort(eigVals)            #sort, sort goes smallest to largest    eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions    redEigVects = eigVects[:,eigValInd]       #reorganize eig vects largest to smallest    lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions    reconMat = (lowDDataMat * redEigVects.T) + meanVals    return lowDDataMat, reconMat #将NaN替换成平均值得函数def 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 mean    return datMat

0 0
原创粉丝点击