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              #返回降维矩阵和重构矩阵
  • 相关阅读:
    Ubuntu下虚拟机卡顿
    C函数重载
    ACPI电源状态定义
    /dev/random生成随机数慢的问题
    GCC强制静态库链接未使用的函数、变量
    cmake交叉编译问题
    cmake语法
    CentOS安装OpenOCD
    LOJ3119. 「CTS2019 | CTSC2019」随机立方体 二项式反演
    BZOJ4710 [Jsoi2011]分特产 容斥
  • 原文地址:https://www.cnblogs.com/cygalaxy/p/6780467.html
Copyright © 2011-2022 走看看