RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
python降维的函数 excel降维函数

PCA(主成分分析)python实现

回顾了下PCA的步骤,并用python实现。深刻的发现当年学的特征值、特征向量好强大。

我们提供的服务有:成都做网站、网站设计、外贸营销网站建设、微信公众号开发、网站优化、网站认证、大通ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的大通网站制作公司

PCA是一种无监督的学习方式,是一种很常用的降维方法。在数据信息损失最小的情况下,将数据的特征数量由n,通过映射到另一个空间的方式,变为k(kn)。

这里用一个2维的数据来说明PCA,选择2维的数据是因为2维的比较容易画图。

这是数据:

画个图看看分布情况:

协方差的定义为:

假设n为数据的特征数,那么协方差矩阵M, 为一个n n的矩阵,其中Mij为第i和第j个特征的协方差,对角线是各个特征的方差。

在我们的数据中,n=2,所以协方差矩阵是2 2的,

通过numpy我们可以很方便的得到:

得到cov的结果为:

array([[ 0.61655556, 0.61544444],

[ 0.61544444, 0.71655556]])

由于我们之前已经做过normalization,因此对于我们来说,

这个矩阵就是 data*data的转置矩阵。

得到结果:

matrix([[ 5.549, 5.539],

[ 5.539, 6.449]])

我们发现,其实协方差矩阵和散度矩阵关系密切,散度矩阵 就是协方差矩阵乘以(总数据量-1)。因此他们的 特征根 和 特征向量 是一样的。这里值得注意的一点就是,散度矩阵是 SVD奇异值分解 的一步,因此PCA和SVD是有很大联系的,他们的关系这里就不详细谈了,以后有机会再写下。

用numpy计算特征根和特征向量很简单,

但是他们代表的意义非常有意思,让我们将特征向量加到我们原来的图里:

其中红线就是特征向量。有几点值得注意:

蓝色的三角形就是经过坐标变换后得到的新点,其实他就是红色原点投影到红线、蓝线形成的。

得到特征值和特征向量之后,我们可以根据 特征值 的大小,从大到小的选择K个特征值对应的特征向量。

这个用python的实现也很简单:

从eig_pairs选取前k个特征向量就行。这里,我们只有两个特征向量,选一个最大的。

主要将原来的数据乘以经过筛选的特征向量组成的特征矩阵之后,就可以得到新的数据了。

output:

数据果然变成了一维的数据。

最后我们通过画图来理解下数据经过PCA到底发生了什么。

绿色的五角星是PCA处理过后得到的一维数据,为了能跟以前的图对比,将他们的高度定位1.2,其实就是红色圆点投影到蓝色线之后形成的点。这就是PCA,通过选择特征根向量,形成新的坐标系,然后数据投影到这个新的坐标系,在尽可能少的丢失信息的基础上实现降维。

通过上述几步的处理,我们简单的实现了PCA第一个2维数据的处理,但是原理就是这样,我们可以很轻易的就依此实现多维的。

用sklearn的PCA与我们的pca做个比较:

得到结果:

用我们的pca试试

得到结果:

完全一致,完美~

值得一提的是,sklearn中PCA的实现,用了部分SVD的结果,果然他们因缘匪浅。

python有哪些库

Python中6个最重要的库:

第一、NumPy

NumPy是Numerical

Python的简写,是Python数值计算的基石。它提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。NumPy还包括其他内容:

①快速、高效的多维数组对象ndarray

②基于元素的数组计算或数组间数学操作函数

③用于读写硬盘中基于数组的数据集的工具

④线性代数操作、傅里叶变换以及随机数生成

除了NumPy赋予Python的快速数组处理能力之外,NumPy的另一个主要用途是在算法和库之间作为数据传递的数据容器。对于数值数据,NumPy数组能够比Python内建数据结构更为高效地存储和操作数据。

第二、pandas

pandas提供了高级数据结构和函数,这些数据结构和函数的设计使得利用结构化、表格化数据的工作快速、简单、有表现力。它出现于2010年,帮助Python成为强大、高效的数据分析环境。常用的pandas对象是DataFrame,它是用于实现表格化、面向列、使用行列标签的数据结构;以及Series,一种一维标签数组对象。

pandas将表格和关系型数据库的灵活数据操作能力与Numpy的高性能数组计算的理念相结合。它提供复杂的索引函数,使得数据的重组、切块、切片、聚合、子集选择更为简单。由于数据操作、预处理、清洗在数据分析中是重要的技能,pandas将是重要主题。

第三、matplotlib

matplotlib是最流行的用于制图及其他二维数据可视化的Python库,它由John D.

Hunter创建,目前由一个大型开发者团队维护。matplotlib被设计为适合出版的制图工具。

对于Python编程者来说也有其他可视化库,但matplotlib依然使用最为广泛,并且与生态系统的其他库良好整合。

第四、IPython

IPython项目开始于2001年,由Fernando

Pérez发起,旨在开发一个更具交互性的Python解释器。在过去的16年中,它成为Python数据技术栈中最重要的工具之一。

尽管它本身并不提供任何计算或数据分析工具,它的设计侧重于在交互计算和软件开发两方面将生产力最大化。它使用了一种执行-探索工作流来替代其他语言中典型的编辑-编译-运行工作流。它还提供了针对操作系统命令行和文件系统的易用接口。由于数据分析编码工作包含大量的探索、试验、试错和遍历,IPython可以使你更快速地完成工作。

第五、SciPy

SciPy是科学计算领域针对不同标准问题域的包集合。以下是SciPy中包含的一些包:

①scipy.integrate数值积分例程和微分方程求解器

②scipy.linalg线性代数例程和基于numpy.linalg的矩阵分解

③scipy.optimize函数优化器和求根算法

④scipy.signal信号处理工具

⑤scipy.sparse稀疏矩阵与稀疏线性系统求解器

SciPy与Numpy一起为很多传统科学计算应用提供了一个合理、完整、成熟的计算基础。

第六、scikit-learn

scikit-learn项目诞生于2010年,目前已成为Python编程者首选的机器学习工具包。仅仅七年,scikit-learn就拥有了全世界1500位代码贡献者。其中包含以下子模块:

①分类:SVM、最近邻、随机森林、逻辑回归等

②回归:Lasso、岭回归等

③聚类:K-means、谱聚类等

④降维:PCA、特征选择、矩阵分解等

⑤模型选择:网格搜索、交叉验证、指标矩阵

⑥预处理:特征提取、正态化

scikit-learn与pandas、statsmodels、IPython一起使Python成为高效的数据科学编程语言。

Python LDA降维中不能输出指定维度(n_components)的新数据集

LDA降维后的维度区间在[1,C-1],C为特征空间的维度,与原始特征数n无关,对于二值分类,最多投影到1维,所以我估计你是因为这是个二分类问题,所以只能降到一维。

python 数据降维程序请教

def dict_f(f): d={} for line in f: l = line.strip("\n").split(" ") d[l[0]] = l[1:] return ddef result(d_c,d_a,cookn): app,game,shoot,apply,function,iq=0,0,0,0,0,0 app = len(d_c[cookn]) for i in d_c[cookn]: for ii in d_a[i]: if (ii=="game"): game= game+1 elif(ii=="shoot"): shoot = shoot +1 elif(ii=="apply"): apply = apply +1 elif(ii=="function"): function = function +1 elif(ii=="iq"): iq = iq +1 else: pass return (app,game,shoot,apply,function,iq) f = open("cookie.txt","r+") #行首没有空格,每个单词之间有且仅有一个空格d_c = dict_f(f) f1 = open("app.txt","r+")#行首没有空格,每个单词之间有且仅有一个空格d_a = dict_f(f1)l_c = d_c.keys()l=[i for i in sorted(l_c) if(i!="") ]for i in l: print i+" "+"app=%d game=%d shoot=%d apply=%d function=%d iq=%d"%result(d_c,d_a,i)#print 可以改写输入到文件中

如何用python实现pca降维

首先2个包:

import numpy as np

from sklearn.decomposition import PCA

然后一个m x n 的矩阵,n为维度,这里设为x。

n_components = 12 是自己可以设的。

pca = PCA(n_components=12)

pca.fit(x)

PCA(copy=True, iterated_power='auto', n_components=12, random_state=None,

svd_solver='auto', tol=0.0, whiten=False)

float_formatter = lambda x: "%.2f" % x

np.set_printoptions(formatter={'float_kind':float_formatter})

print 'explained variance ratio:'

print pca.explained_variance_ratio_

print 'cumulative sum:'

print pca.explained_variance_ratio_.cumsum()


当前名称:python降维的函数 excel降维函数
URL网址:http://lswzjz.com/article/hhgpsp.html