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
  • 相关阅读:
    PCL点云
    unity碰撞,刚体笔记
    动画剪辑 状态配置 脚本编写2
    unity中动画剪辑,状态机关系配置,脚本编写方式1
    unity给物体着色加纹理图 material(材质)
    C++/Java小白解Leetcode题,发现了知识盲区……
    NLP之统计句法分析(PCFG+CYK算法)
    Java:基于TCP协议网络socket编程(实现C/S通信)
    Java实现:抛开jieba等工具,写HMM+维特比算法进行词性标注
    Java多线程技术:实现多用户服务端Socket通信
  • 原文地址:https://www.cnblogs.com/zhq1007/p/4873256.html
Copyright © 2011-2022 走看看