zoukankan      html  css  js  c++  java
  • PCA算法Python实现

    源代码:

     1 #-*- coding: UTF-8 -*-
     2 from numpy import *
     3 import numpy
     4 def pca(X,CRate):
     5     #矩阵X每行是一个样本
     6      #对样本矩阵进行中心化样本矩阵
     7      meanValue=mean(X,axis=0)#计算每列均值
     8      X=X-meanValue#每个维度元素减去对应维度均值
     9      #协方差矩阵
    10      C=cov(X,rowvar=0)
    11      #特征值,特征向量
    12      eigvalue,eigvector=linalg.eig(mat(C))#特征值,特征向量
    13      #根据贡献率,来决定取多少个特征向量构成变换矩阵
    14      sumEigValue=sum(eigvalue)#所有特征值之和
    15      sortedeigvalue= numpy.sort(eigvalue)[::-1]    #对特征值从大到小排序
    16      for i in range(sortedeigvalue.size):
    17         j=i+1
    18         rate=sum(eigvalue[0:j])/sumEigValue
    19          if rate>CRate:
    20             break
    21      #取前j个列向量构成变换矩阵
    22      indexVec=numpy.argsort(-eigvalue)    #对covEigenVal从大到小排序,返回索引
    23      nLargestIndex=indexVec[:j] #取出最大的特征值的索引
    24      T=eigvector[:,nLargestIndex] #取出最大的特征值对应的特征向量
    25      newX=numpy.dot(X,T)#将X矩阵降维得到newX
    26      return newX,T,meanValue#返回降维后矩阵newX,变换矩阵T,每列的均值构成的数组
  • 相关阅读:
    线程锁lock&rlock
    threading.local
    threading Event
    python中的eval 和 exec 和 execfile
    cloud-init 常见问题
    systemd
    cloud-init 的命令行
    原生js实现Promise
    js 指定位置插入html标签(可编辑div)
    js 实现复制粘贴文本过滤(保留文字和图片)
  • 原文地址:https://www.cnblogs.com/simon-c/p/4934305.html
Copyright © 2011-2022 走看看