PCA python实现

PCA(主成成分分析)是实现降维的方法,其原理涉及到方差、协方差、SVD等等。
推导过程链接:https://zhuanlan.zhihu.com/p/21580949
实现过程细节部分可参考链接:http://www.jianshu.com/p/4528aaa6dc48

总体来说,PCA算法步骤如下:
1. 将原始数据按列组成n行m列矩阵X
2. 将X每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3. 求出协方差矩阵C
4. 求出协方差矩阵对应的特征值和特征向量
5. 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6. Y=PX即为降维到k维后的数据

环境:python3
使用代码实现为:

import numpy as np
#将矩阵转置
X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]).T

def zeroMean(dataMat):
    #按行求均值
    meanVal = np.mean(dataMat,axis=1)
    newMat = dataMat.T - meanVal
    return newMat.T

def pca(X,k):
    newMat = zeroMean(X)
    #求协方差
    C = np.cov(newMat, bias=0)
    #求特征值和特征向量,特征向量是按列放的,即一列代表一个特征向量
    eigVals, eigVects = np.linalg.eig(C)
    #对特征值从小到大排序
    eigValIndice = np.argsort(eigVals)
    n_eigValIndice = eigValIndice[-1:-(n+1):-1]
    #最大的n个特征对应的特征向量
    n_eigVect=eigVects[:,n_eigValIndice]
    lowData = n_eigVect.T.dot(newMat)
    return lowData.T

pca(X,1)
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值