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,每列的均值构成的数组
  • 相关阅读:
    获取N年,N月,N日后或者前的日期函数
    ABAP 上传图片
    SF 小技巧
    针式打印机问题
    ABAP 捕获回车键
    md04 取数函数
    根据选择屏幕创建12个月份
    php isset 的作用
    php 指针概念 指针引用
    php中global与$GLOBALS的用法及区别
  • 原文地址:https://www.cnblogs.com/simon-c/p/4934305.html
Copyright © 2011-2022 走看看