PCA算法Python实现
源代码:
#-*- coding: UTF-8 -*-
from numpy import *
import numpy
def pca(X,CRate):
#矩阵X每行是一个样本
#对样本矩阵进行中心化样本矩阵
meanValue=mean(X,axis=0)#计算每列均值
X=X-meanValue#每个维度元素减去对应维度均值
#协方差矩阵
C=cov(X,rowvar=0)
#特征值,特征向量
eigvalue,eigvector=linalg.eig(mat(C))#特征值,特征向量
#根据贡献率,来决定取多少个特征向量构成变换矩阵
sumEigValue=sum(eigvalue)#所有特征值之和
sortedeigvalue= numpy.sort(eigvalue)[::-1] #对特征值从大到小排序
for i in range(sortedeigvalue.size):
j=i+1
rate=sum(eigvalue[0:j])/sumEigValue
if rate>CRate:
break
#取前j个列向量构成变换矩阵
indexVec=numpy.argsort(-eigvalue) #对covEigenVal从大到小排序,返回索引
nLargestIndex=indexVec[:j] #取出最大的特征值的索引
T=eigvector[:,nLargestIndex] #取出最大的特征值对应的特征向量
newX=numpy.dot(X,T)#将X矩阵降维得到newX
return newX,T,meanValue#返回降维后矩阵newX,变换矩阵T,每列的均值构成的数组
PCA算法Python实现的更多相关文章
- 三种方法实现PCA算法(Python)
主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...
- Python使用三种方法实现PCA算法[转]
主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切.在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣. 一句 ...
- python实现PCA算法原理
PCA主成分分析法的数据主成分分析过程及python原理实现 1.对于主成分分析法,在求得第一主成分之后,如果需要求取下一个主成分,则需要将原来数据把第一主成分去掉以后再求取新的数据X’的第一主成分, ...
- PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?
PCA, Principle Component Analysis, 主成份分析, 是使用最广泛的降维算法. ...... (关于PCA的算法步骤和应用场景随便一搜就能找到了, 所以这里就不说了. ) ...
- pageRank算法 python实现
一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO( ...
- 常见排序算法-Python实现
常见排序算法-Python实现 python 排序 算法 1.二分法 python 32行 right = length- : ] ): test_list = [,,,,,, ...
- 模式识别(1)——PCA算法
作者:桂. 时间:2017-02-26 19:54:26 链接:http://www.cnblogs.com/xingshansi/articles/6445625.html 声明:转载请注明出处, ...
- 降维之pca算法
pca算法: 算法原理: pca利用的两个维度之间的关系和协方差成正比,协方差为0时,表示这两个维度无关,如果协方差越大这表明两个维度之间相关性越大,因而降维的时候, 都是找协方差最大的. 将XX中的 ...
- kmp算法python实现
kmp算法python实现 kmp算法 kmp算法用于字符串的模式匹配,也就是找到模式字符串在目标字符串的第一次出现的位置比如abababc那么bab在其位置1处,bc在其位置5处我们首先想到的最简单 ...
随机推荐
- python安装mysql-python依赖包
# 背景 新公司,对换工作了!接口自动化使用的是python的behave框架,因此需要折腾python了,而公司配的笔记本是windows的,因此要在windows下折腾python了 # 步骤 项 ...
- 查看指定spid的脚本当前运行情况和状态
USE MasterGO declare @spid int; select @spid = 419--null:all ; ;WITH DATA(spid,blockRelationship,blo ...
- WinDbg探究CLR底层(1) - 应用程序域
一.什么是应用程序域 操作系统由于其稳定性与可靠性的要求,都会使用隔离层,来确保运行在某个隔离层内的代码不会对其他隔扇层的代码产生影响.如Windows通过进程来实现这种隔离机制,所能的可执行代码.数 ...
- 【JavaScript】js 中一些需要注意的问题
关于js中逻辑运算符 sort()方法 1. 关于js中逻辑运算符:|| 和 && 在js逻辑运算中,0."".null.false.undefined.NaN都会 ...
- linux 如何开通新的端口
第一种方式:(以nginx为列,端口是) 1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport -j ACCEPT 2. 保存:/etc/rc ...
- 跟着刚哥学习Spring框架--事务配置(七)
事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...
- Django自带的后台管理样式找不到的问题。
今天发现自己用uwsgi,nginx部署完服务器后,又想用自带的Django服务器进行后台管理调试,发现Django后代管理页面样式找不到.又查看了路径发现是正确的.网上看了很多方法.最后才发现自己把 ...
- Selenium3 + Python3自动化测试系列四——鼠标事件和键盘事件
一.鼠标事件 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供. ActionChains 类提供了鼠标操作的常用方法. ActionChains 类的成 ...
- POJ 2864
#include <iostream> #define MAXN 600 using namespace std; int _m[MAXN][MAXN]; int main() { //f ...
- javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){ if ( ...