PCA降维

1.1算法流程

假设有m个samples,每个数据有n维。

1. 计算各个feature的平均值,计μj ;(Xj(i)表示第i个样本的第j维特征的value)

μj = Σm Xj(i)/m

meanVals = mean(dataMat, axis=0)

2. 将每一个feature scaling:将在不同scale上的feature进行归一化;

3. 将特征进行mean normalization

Xj(i)= (Xj(i)j)/sj

meanRemoved = dataMat - meanVals #remove mean

4. 求n×n的协方差矩阵Σ:

covMat = cov(meanRemoved, rowvar=0)

5.求取特征值和特征向量:

[U,S,V] = SVD(Σ)

eigVals,eigVects = linalg.eig(mat(covMat))

6. 按特征值从大到小排列,重新组织U

如果使用否则的话应进行排序,并按照该次序找到对应的特征向量重新排列。

eigValInd = argsort(eigVals)

7. 选择k个分量

按照第五、六步中讲的后,我们得到了一个n×n的矩阵Σ和U,这时,我们就需要从U中选出k个最重要的分量;即选择前k个特征向量,即为Ureduce, 该矩阵大小为n×k

eigValInd = eigValInd[:-(topNfeat+1):-1]  #cut off unwanted dimensions

这样对于一个n维向量x,就可以降维到k维向量z了:

1.2、PCA降维实验

老师给的数据swissroll.dat

自己生成数据:

def make_swiss_roll(n_samples=100, noise=0.0, random_state=None):

#Generate a swiss roll dataset.

t = 1.5 * np.pi * (1 + 2 * random.rand(1, n_samples))

x = t * np.cos(t)

y = 83 * random.rand(1, n_samples)

z = t * np.sin(t)

X = np.concatenate((x, y, z))

X += noise * random.randn(3, n_samples)

X = X.T

t = np.squeeze(t)

return X, t

1、Y=100*random.rand(1,2000)

2、y=21*random.rand(1,2000)

2、y=1*random.rand(1,2000)

1.3、PCA

降维实验小结

可以看到,当y的变化幅度较小时,最后降维之后的数据更类似于x,z轴数据,当y变化较大时,更类似于变化较大的y和x。

时间: 2024-10-12 21:56:16

PCA降维的相关文章

[综] PCA降维

http://blog.json.tw/using-matlab-implementing-pca-dimension-reduction 設有m筆資料, 每筆資料皆為n維, 如此可將他們視為一個mxn matrix.若資料的維度太大時, 可能不利於分析, 例如這m筆資料用作機器學習. PCA的想法是算出這mxn matrix的斜方差矩陣, 此矩陣大小為nxn, 計算此矩陣n個特徵值(eigen value)及其對應的特徵向量(eigen vector), 依eigen value大小由小到大排

机器学习公开课笔记(8):k-means聚类和PCA降维

K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis) 管理计算机集群(Organize Computer Clusters) 天文学数据分析(Astronomical Data Analysis) K-Means算法属于非监督式学习的一种,算法的输入是:训练数据集$\{x^{(1)},x^{(2)},\ldots, x^{(m)}\}$(其中$x^

sklearn pca降维

PCA降维 一.原理 这篇文章总结的不错PCA的数学原理. PCA主成分分析是将原始数据以线性形式映射到维度互不相关的子空间.主要就是寻找方差最大的不相关维度.数据的最大方差给出了数据的最重要信息. 二.优缺点 优:将高维数据映射到低维,降低数据的复杂性,识别最重要的多个特征 不足:不一定需要,且可能损失有用信息 适用数值型数据 三.步骤 1.原始数据X,对于每列属性,去平均值(也可以对数值进行标准分化) 2.计算样本点的协方差矩阵(列间两两计算相关性) 3.求出协方差矩阵的特征值和对应的特征向

PCA降维 ——最大方差角度看

最大方差法  PCA降维(欢迎讨论) 在上一篇的基础上继续讨论: 首先,得出原空间的中心点: 假设u1为投影向量,投影之后的方差为: 令方差最大(即:投影之后的点比较分散,没有相关性.以达到一个很好的降维效果),采用拉格朗日乘数法,U1T U1=1为约束条件. 则关于UT的方差表达式可以写成: 将上式求导对UT,使之为0,得到: 这样便得到了线性代数求特征值和特征向量的问题了.

PCA 降维算法详解 以及代码示例

转载地址:http://blog.csdn.net/watkinsong/article/details/38536463 1. 前言 PCA : principal component analysis ( 主成分分析) 最近发现我的一篇关于PCA算法总结以及个人理解的博客的访问量比较高, 刚好目前又重新学习了一下PCA (主成分分析) 降维算法, 所以打算把目前掌握的做个全面的整理总结, 能够对有需要的人有帮助. 自己再看自己写的那个关于PCA的博客, 发现还是比较混乱的, 希望这里能过做好

用PCA降维 (Principal Component Analysis,主成分分析)

参考资料:Mastering Machine Learning With scikit-learn 降维致力于解决三类问题.第一,降维可以缓解维度灾难问题.第二,降维可以在压缩数据的同时让信息损失最 小化.第三,理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解 PCA简介 主成分分析也称为卡尔胡宁-勒夫变换(Karhunen-Loeve Transform),是一种用于探索高维数据结 构的技术.PCA通常用于高维数据集的探索与可视化.还可以用于数据压缩,数据预处理等.PCA可

PCA降维demo

PCA(Principal Components Analysis)主成分分析法是一种常用的减小数据维度的算法. 能力有限在这里就不做过多的数学分析了,具体原理可参见http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/ 以及更具体的CS229 这里结合网上代码做个简单的示例 static Mat formatImagesForPCA(const vector<Mat> &data) { Mat dst(static_

Python 之 sklearn 实现 PCA 降维

关于 PCA 算法的讲解文章不胜枚举,这里主要谈一谈 基于 Python 中 sklearn 模块的 PCA 算法实现.Explained Variance 累计贡献率 又名 累计方差贡献率 不要简单理解为 解释方差,它是 PCA 降维维度的重要指标,一般选取累计贡献率在90%左右的维度作为PCA 降维的参考维度.在识别算法的实现过程中,当我们求得某一数据库各类别特征参考维度时,取最大维度作为每一类特征的维度,即可实现数据降维.现对数据求取累计贡献率,算法实现如下. import numpy f

PCA降维简介

PCA全称为principal componentanalysis,即主成成分分析,用于降维.对数据进行降维有很多原因.比如: 1:使得数据更易显示,更易懂 2:降低很多算法的计算开销 3:去除噪声 一:基本数学概念 1:方差 均值太简单了,不说了.方差是各个数据分别与其和的平均数之差的平方的和的平均数,用字母D表示.计算公式如下: 其中x-为均值,也可以表示为EX,则方差计算又可写成: 2:协方差及协方差矩阵 协方差用于衡量两个变量的总体误差情况,可以说方差是协方差的一种特殊情况,即当两个变量