zoukankan      html  css  js  c++  java
  • 降维技术---PCA

    数据计算和结果展示一直是数据挖掘领域的难点,一般情况下,数据都拥有超过三维,维数越多,处理上就越吃力。所以,采用降维技术对数据进行简化一直是数据挖掘工作者感兴趣的方向。

    对数据进行简化的好处:使得数据集更易于使用,降低算法的计算开销,去除噪声,使得结果易懂。

    主成分分析法(PCA)是一种常用的降维技术。在PCA中,数据从原来的坐标系转换到了新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。

    为什么选择最大方差的方向和方差的正交方向?

    如果想要画出一条直线,使得直线要尽可能多的覆盖坐标轴中的点,在下图中的三条直线中,B直线为最大方差代表的直线,说明覆盖数据信息最多,C直线为B直线的垂线,它是覆盖数据次大差异性的直线。

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

    PCA的原理:借助于正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量。这在代数上表现为将原随机向量的协方差矩阵变换为对角形阵。

    PCA的实现:通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)和权值(即特征值)

    将原始数据转换成前N个主成分的具体实现步骤:

    1.去除平均值

    2.计算协方差矩阵

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

    4.将特征值从大到小排序

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

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

    代码实现

    def PCA(dataMatrix, topNFeature=999):
        meanVals = mean(dataMatrix, axis=0)
        meanRemovedMatrix = dataMatrix - meanVals      #1. remove mean
    
        covMat = cov(meanRemovedMatrix, rowvar=0)      #2. covariance matrix
        eigVals,eigVects = linalg.eig(mat(covMat))     #3. compute matrix eigenvalues and eigenvectors
        eigValInd = argsort(eigVals)                   #4. sort, sort goes smallest to largest
        eigValInd = eigValInd[:-(topNFeature+1):-1]    #5_1 cut off unwanted dimensions
        redEigVects = eigVects[:,eigValInd]            #5_2 reorganize eig vects largest to smallest
        lowDDataMat = meanRemovedMatrix * redEigVects  #6 transform data into new dimensions
        return lowDDataMat
  • 相关阅读:
    查看Android应用所需权限(uses-permission)
    Android Camera后台拍照
    傅里叶变换
    linux文件系统问题:wrong fs type, bad option, bad superblock
    H3 android 系统编译
    开源股票数据工具
    获取股票实时交易数据的方法
    获取历史和实时股票数据接口
    CRC在线计算工具
    硬盘自动挂载
  • 原文地址:https://www.cnblogs.com/zhq1007/p/4873256.html
Copyright © 2011-2022 走看看