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              #返回降维矩阵和重构矩阵
  • 相关阅读:
    TLPI读书笔记第15章-文件属性2
    TLPI读书笔记第15章-文件属性1
    Java异常及错误
    10055
    4月。
    JavaScript三种方法获取地址栏参数的方法
    页面预加载loading动画,再载入内容
    什么是可串行化MVCC
    简化版扫雷详细解
    论unity中UI工具与GUI函数
  • 原文地址:https://www.cnblogs.com/cygalaxy/p/6780467.html
Copyright © 2011-2022 走看看