使用python利用pca对数据降维处理

下面写下用pca对数据进行降维处理的过程:

Python源代码如下:

 1 from numpy import *;
 2 def loadDataSet(fileName,delim=‘\t‘):
 3     # 打开文件
 4     fr=open(fileName);
 5     """
 6 >>> line0=fr.readlines();
 7 >>> type(line0)
 8 <class ‘list‘>
 9 >>> line0[0]
10 ‘10.235186\t11.321997\n‘
11     """
12     stringArr=[line.strip().split(delim) for line in fr.readlines()];
13     # map函数作用于给定序列的每一个元素,并用一个列表来提供返回值
14     datArr=[list(map(lambda x:float(x),line)) for line in stringArr];
15     dataMat=mat(datArr);
16     return dataMat;
17
18 def pcaFun(dataMat,topNfeat=9999999):
19     # 计算每列的平均值axis=0,计算每行的平均值axis=1
20     meanVals=mean(dataMat,axis=0);
21     # 去平均值,shape(dataMat)=(1000, 2),shape(meanVals)=(1, 2)
22     meanRemoved=dataMat-meanVals;# 可以直接对两个维度不同的矩阵进行运算
23     # 计算协方差矩阵shape(covMat)=(2, 2)
24     covMat=cov(meanRemoved,rowvar=0);
25     # 计算协方差矩阵的特征值和特征向量
26     eigVals,eigVects=linalg.eig(mat(covMat));
27     # 对特征值按升序排序
28     eigValInd=argsort(eigVals);
29     # 对特征值进行逆序排序
30     eigValInd=eigValInd[:-(topNfeat+1):-1];
31     # 计算最大特征值对应的特征向量
32     redEigVects=eigVects[:,eigValInd];
33     # 计算降维之后的数据集
34     lowDDataMat=meanRemoved*redEigVects;
35     # 重构原始数据
36     reconMat=(lowDDataMat*redEigVects.T)+meanVals;
37     return lowDDataMat,reconMat;
38
39 import matplotlib.pyplot as plt;
40 # 绘图,绘出原始数据和降维后的数据
41 def plotData(dataMat,reconMat):
42     # import matplotlib;
43     # import matplotlib.pyplot as plt;
44     fig=plt.figure();
45     ax=fig.add_subplot(111);
46     ax.scatter(dataMat[:,0].flatten().A[0],dataMat[:,1].flatten().A[0],marker=‘^‘,s=90);
47     ax.scatter(reconMat[:,0].flatten().A[0],reconMat[:,1].flatten().A[0],marker=‘o‘,s=50,c=‘red‘);
48     plt.show();

上面代码中lowDDataMat为降维后的数据集,reconMat为重构的数据集;绘出原始数据和降维后的数据图如下:

时间: 2024-10-18 08:11:33

使用python利用pca对数据降维处理的相关文章

python利用mongodb上传图片数据 : GridFS 与 bson两种方式

利用mongodb保存图片通常有两种方法,一种是将图片数据转化为二进制作为字典的键值对进行保存,另一种是利用mongodb提供的GridFS进行保存,两者各有利弊.性能方面的优劣未曾测试,无法进行评价,此处仅对两种方式进行介绍,若有彻知者还望指教. 下面以如下数据作为示例进行介绍: 数据示例 dic = { "owner_name" : "samssmilin", "photo_id" : "602880671", "

python 利用pandas导入数据

原文地址:https://www.cnblogs.com/fanweisheng/p/11227193.html

数据降维技术(2)—奇异值分解(SVD)

上一篇文章讲了PCA的数据原理,明白了PCA主要的思想及使用PCA做数据降维的步骤,本文我们详细探讨下另一种数据降维技术—奇异值分解(SVD). 在介绍奇异值分解前,先谈谈这个比较奇怪的名字:奇异值分解,英文全称为Singular Value Decomposition.首先我们要明白,SVD是众多的矩阵分解技术中的一种,矩阵分解方式很多,如三角分解(LU分解.LDU分解.乔列斯基分解等).QR分解及这里所说的奇异值分解:其次,singular是奇特的.突出的.非凡的意思,从分解的过程及意义来看

数据降维技术(1)—PCA的数据原理

PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维.网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理.这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么. 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章不会引入严格的数学推导.希望读者在

【机器学习算法-python实现】PCA 主成分分析、降维

1.背景 PCA(Principal Component Analysis),PAC的作用主要是降低数据集的维度,然后挑选出主要的特征. PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值,什么叫方差最大的方向的特征值呢.就像下图中的曲线B,一样,它的覆盖范围最广. 基本步骤:(1)首先计算数据集的协方差矩阵 (2)计算协方差矩阵的特征值和特征向量 (3)保留最重要的n个特征 what is 协方差矩阵: 定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值.例如x是变

hbase之python利用thrift操作hbase数据和shell操作

前沿: 以前都是用mongodb的,但是量大了,mongodb显得不那么靠谱,改成hbase撑起一个量级. HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型.它存储的是松散型数据. HBase提供了丰富的访问接口. HBase Shell Java clietn API Jython.Groovy DSL.Scala REST Thrift(Ruby.Pyt

C++和python利用struct结构传输二进制数据实现

网络编程中经常会涉及到二进制数据传输的问题,在C++中常用的传输方式有文本字符串和结构体封包.如果能将要发送的数据事先放进连续的内存区,然后让send函数获取这片连续内存区的首地址就可以完成数据的发送了,文本字符串如char型数组,以字节为单位,在内存中是顺序存储的,所以可以直接用send函数发送.但是如果要同时发送多个不同类型的数据时,它们在内存中存储的地址是随机的,不是顺序存储的,而且它们之间的相对位置也无法确定,这样就需要一种数据组织方式来明确各数据之间的相对位置.结构体显然就是一种的数据

数据降维——主成分分析(PCA)

在数据挖掘过程中,当一个对象有多个属性(即该对象的测量过程产生多个变量)时,会产生高维度数据,这给数据挖掘工作带来了难度,我们希望用较少的变量来描述数据的绝大多数信息,此时一个比较好的方法是先对数据进行降维处理.数据降维过程不是简单提取部分变量进行分析,这样的方式法当然会降低数据维度,但是这是非常不可取的方式(不专业一点,可以称之为"丢维"),违背了"降维"的含义. 尽管我们并不确定不同变量之间是否一定有关系,但除非有确定的依据,我们最好还是猜测是有关系的,先看一个

地铁译:Spark for python developers ---Spark与数据的机器学习

机器学习可以从数据中得到有用的见解. 目标是纵观Spark MLlib,采用合适的算法从数据集中生成见解.对于 Twitter的数据集, 采用非监督集群算法来区分与Apache?Spark相关的tweets . 初始输入是混合在一起的tweets. 首先提取相关特性, 然后在数据集中使用机器学习算法 , 最后评估结果和性能. ?本章重点如下: ???了解 Spark MLlib 模块及其算法,还有典型的机器学习流程 . ???? 预处理 所采集的Twitter 数据集提取相关特性, 应用非监督集