zoukankan      html  css  js  c++  java
  • PCA数据降维

    Principal Component Analysis

    算法优缺点:

    • 优点:降低数据复杂性,识别最重要的多个特征
    • 缺点:不一定需要,且可能损失有用的信息
    • 适用数据类型:数值型数据

    算法思想:

    降维的好处:

    • 使得数据集更易使用
    • 降低很多算法计算开销
    • 去除噪声
    • 使得结果易懂

    主成分分析(principal component analysis,PCA)的思想是将数据转换到新的坐标系,这个坐标系的选择是由数据本身决定的,第一维是原始数据中方差最大的方向,第二个是与第一维正交且方差最大的,一直重复。。。
    主成分分析中使用数据集的协方差矩阵和特征值分析来获得。

    函数:

    pca(dataMat, topNfeat=999999)
    由于主成分分析基本上可以说是算个矩阵的问题,而numpy在这方面又帮我们做好了,所以函数很简单,就是先去平均值,然后计算协方差矩阵和其特征值,最后选出最大的topNfeat个,最后用这些特征向量将源数据转到新的空间。当然使用的时候有两种方式,一种是跟限定个数,另一种则是通过数据压缩比来完成的。

    1.  1 #coding=utf-8
       2 from numpy import *
       3 def loadDataSet(filename, delim='	'):
       4     fr = open(filename)
       5     stringArr = [line.strip().split(delim) for line in fr.readlines()]
       6     datArr = [map(float,line) for line in stringArr]
       7     return mat(datArr)
       8     
       9 def pca(dataMat, topNfeat=999999):
      10     meanVals = mean(dataMat, axis=0)
      11     meanRemoved = dataMat - meanVals
      12     covMat = cov(meanRemoved, rowvar=0)
      13     eigVals, eigVects = linalg.eig(mat(covMat))
      14     eigValInd = argsort(eigVals)
      15     eigValInd = eigValInd[:-(topNfeat+1):-1]
      16     redEigVects = eigVects[:,eigValInd]
      17     lowDDataMat = meanRemoved * redEigVects
      18     reconMat = (lowDDataMat * redEigVects.T) + meanVals
      19     return lowDDataMat, reconMat 
      20     
      21 def main():
      22     dataMat = loadDataSet('testSet.txt')
      23     lowDMat, reconMat = pca(dataMat, 1)
      24     print shape(lowDMat)
      25     
      26 if __name__ == '__main__':
      27     main()
     

    机器学习笔记索引





  • 相关阅读:
    ASP.NET页面打印技术的总结
    js传递中文参数的url到asp(jscript)解释得到的中文参数为乱码的解决方法
    header的用法(PHP)
    oracle 11g road(/dev/shm需注意)
    mysql 主从同步 Error 'Out of range value for column的问题
    linux shell 过滤特殊字符开始的行
    Oracle穿越incarnation恢复数据
    多普达A6388刷机2.3
    【忽悠普通人用】隐藏文件夹的方法
    电脑同时使用双网卡实现方法
  • 原文地址:https://www.cnblogs.com/MrLJC/p/4156589.html
Copyright © 2011-2022 走看看