zoukankan      html  css  js  c++  java
  • python--numpy实现pca算法

    Coding by Chang,2017/4/28

    编程环境:python27,

    依赖库:numpy,

    实现算法:主成分分析(pca)

    代码实现:

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    from numpy import *
    def loadDataSet(fileName,delim='	'):
        fr=open(fileName)
        #strip()去掉line中所有换行符,split('	')以'	'切割
        stringArr=[line.strip().split(delim) for line in fr.readlines()] #读取文件完成分割
        dataArr=[map(float,line) for line in stringArr]   #python36中的map回出现问题
        return mat(dataArr)                               #转换为matrix格式返回
    
    def pca(dataMat,topNfea=9999999):
        meanVals=mean(dataMat,axis=0)            #mean()求均值
        meanRemoved=dataMat-meanVals
        covMat=cov(meanRemoved,rowvar=0)         #cov()求协方差矩阵
        eigVals,eigVects=linalg.eig(mat(covMat)) #numpy.linalg库中提供了eig()函数求解特征值和特征向量
        eigValInd=argsort(eigVals)
        eigValInd=eigValInd[:-(topNfea+1):-1]    #取最大的topNfea个最大特征值
        redEigVects=eigVects[:,eigValInd]        #取对应的特征向量,组成转换矩阵redEigVects
        lowDDataMat=meanRemoved*redEigVects      #实现降维
        reconMat=(lowDDataMat*redEigVects.T)+meanVals     #重构数据
        return lowDDataMat,reconMat              #返回降维矩阵和重构矩阵
  • 相关阅读:
    5.3 java虚拟机的体系结构
    5.2 java虚拟机的生命周期
    3.11.5 doPrivileged()方法
    3.11.1 implies方法
    MT【178】平移不变性
    MT【177】三个乘积和
    MT【176】两两乘积
    MT【175】刚刚凑巧
    MT【174】凹凸无妨
    MT【173】齐次消元单变量
  • 原文地址:https://www.cnblogs.com/cygalaxy/p/6780467.html
Copyright © 2011-2022 走看看