python降维函数,python数组降维

python pca怎么得到主成份

一般步骤来实现PCA算法

创新互联建站作为成都网站建设公司,专注网站建设公司、网站设计,有关企业网站制作方案、改版、费用等问题,行业涉及成都发电机租赁等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

(1)零均值化

假如原始数据集为矩阵dataMat,dataMat中每一行代表一个样本,每一列代表同一个特征。零均值化就是求每一列的平均值,然后该列上的所有数都减去这个均值。也就是说,这里零均值化是对每一个特征而言的,零均值化都,每个特征的均值变成0。实现代码如下:

[python] view plain copy

def zeroMean(dataMat):

meanVal=np.mean(dataMat,axis=0)     #按列求均值,即求各个特征的均值

newData=dataMat-meanVal

return newData,meanVal

函数中用numpy中的mean方法来求均值,axis=0表示按列求均值。

该函数返回两个变量,newData是零均值化后的数据,meanVal是每个特征的均值,是给后面重构数据用的。

(2)求协方差矩阵

[python] view plain copy

newData,meanVal=zeroMean(dataMat)

covMat=np.cov(newData,rowvar=0)

numpy中的cov函数用于求协方差矩阵,参数rowvar很重要!若rowvar=0,说明传入的数据一行代表一个样本,若非0,说明传入的数据一列代表一个样本。因为newData每一行代表一个样本,所以将rowvar设置为0。

covMat即所求的协方差矩阵。

(3)求特征值、特征矩阵

调用numpy中的线性代数模块linalg中的eig函数,可以直接由covMat求得特征值和特征向量:

[python] view plain copy

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

eigVals存放特征值,行向量。

eigVects存放特征向量,每一列带别一个特征向量。

特征值和特征向量是一一对应的

(4)保留主要的成分[即保留值比较大的前n个特征]

第三步得到了特征值向量eigVals,假设里面有m个特征值,我们可以对其排序,排在前面的n个特征值所对应的特征向量就是我们要保留的,它们组成了新的特征空间的一组基n_eigVect。将零均值化后的数据乘以n_eigVect就可以得到降维后的数据。代码如下:

[python] view plain copy

eigValIndice=np.argsort(eigVals)            #对特征值从小到大排序

n_eigValIndice=eigValIndice[-1:-(n+1):-1]   #最大的n个特征值的下标

n_eigVect=eigVects[:,n_eigValIndice]        #最大的n个特征值对应的特征向量

lowDDataMat=newData*n_eigVect               #低维特征空间的数据

reconMat=(lowDDataMat*n_eigVect.T)+meanVal  #重构数据

return lowDDataMat,reconMat

代码中有几点要说明一下,首先argsort对特征值是从小到大排序的,那么最大的n个特征值就排在后面,所以eigValIndice[-1:-(n+1):-1]就取出这个n个特征值对应的下标。【python里面,list[a:b:c]代表从下标a开始到b,步长为c。】

python数据分析需要哪些库?

1.Numpy库

是Python开源的数值计算扩展工具,提供了Python对多维数组的支持,能够支持高级的维度数组与矩阵运算。此外,针对数组运算也提供了大量的数学函数库,Numpy是大部分Python科学计算的基础,具有很多功能。

2.Pandas库

是一个基于Numpy的数据分析包,为了解决数据分析任务而创建的。Pandas中纳入了大量库和标准的数据模型,提供了高效地操作大型数据集所需要的函数和方法,使用户能快速便捷地处理数据。

3.Matplotlib库

是一个用在Python中绘制数组的2D图形库,虽然它起源于模仿MATLAB图形命令,但它独立于MATLAB,可以通过Pythonic和面向对象的方式使用,是Python中Z出色的绘图库。主要用纯Python语言编写的,它大量使用Numpy和其他扩展代码,即使对大型数组也能提供良好的性能。

4.Seaborn库

是Python中基于Matplotlib的数据可视化工具,提供了很多高层封装的函数,帮助数据分析人员快速绘制美观的数据图形,从而避免了许多额外的参数配置问题。

5.NLTK库

被称为使用Python进行教学和计算语言学工作的Z佳工具,以及用自然语言进行游戏的神奇图书馆。NLTK是一个领先的平台,用于构建使用人类语言数据的Python程序,它为超过50个语料库和词汇资源提供了易于使用的接口,还提供了一套文本处理库,用于分类、标记化、词干化、解析和语义推理、NLP库的包装器和一个活跃的讨论社区。

python数据分析该怎么入门呢?

1.为什么选择Python进行数据分析?

Python是一门动态的、面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言。Python入门简单,代码可读性强,一段好的Python代码,阅读起来像是在读一篇外语文章。Python这种特性称为“伪代码”,它可以使你只关心完成什么样的工作任务,而不是纠结于Python的语法。

另外,Python是开源的,它拥有非常多优秀的库,可以用于数据分析及其他领域。更重要的是,Python与最受欢迎的开源大数据平台Hadoop具有很好的兼容性。因此,学习Python对于有志于向大数据分析岗位发展的数据分析师来说,是一件非常节省学习成本的事。

Python的众多优点让它成为最受欢迎的程序设计语言之一,国内外许多公司也已经在使用Python,例YouTube,Google,阿里云等等。

3.数据分析流程

Python是数据分析利器,掌握了Python的编程基础后,就可以逐渐进入数据分析的奇妙世界。CDA数据分析师认为一个完整的数据分析项目大致可分为以下五个流程:

1)数据获取

一般有数据分析师岗位需求的公司都会有自己的数据库,数据分析师可以通过SQL查询语句来获取数据库中想要数据。Python已经具有连接sql server、mysql、orcale等主流数据库的接口包,比如pymssql、pymysql、cx_Oracle等。

而获取外部数据主要有两种获取方式,一种是获取国内一些网站上公开的数据资料,例如国家统计局;一种是通过编写爬虫代码自动爬取数据。如果希望使用Python爬虫来获取数据,我们可以使用以下Python工具:

Requests-主要用于爬取数据时发出请求操作。

BeautifulSoup-用于爬取数据时读取XML和HTML类型的数据,解析为对象进而处理。

Scapy-一个处理交互式数据的包,可以解码大部分网络协议的数据包

2)数据存储

对于数据量不大的项目,可以使用excel来进行存储和处理,但对于数据量过万的项目,使用数据库来存储与管理会更高效便捷。

3)数据预处理

数据预处理也称数据清洗。大多数情况下,我们拿到手的数据是格式不一致,存在异常值、缺失值等问题的,而不同项目数据预处理步骤的方法也不一样。CDA数据分析师认为数据分析有80%的工作都在处理数据。如果选择Python作为数据清洗的工具的话,我们可以使用Numpy和Pandas这两个工具库:

Numpy - 用于Python中的科学计算。它非常适用于与线性代数,傅里叶变换和随机数相关的运算。它可以很好地处理多维数据,并兼容各种数据库。

Pandas –Pandas是基于Numpy扩展而来的,可以提供一系列函数来处理数据结构和运算,如时间序列等。

4)建模与分析

这一阶段首先要清楚数据的结构,结合项目需求来选取模型。

常见的数据挖掘模型有:

在这一阶段,Python也具有很好的工具库支持我们的建模工作:

scikit-learn-适用Python实现的机器学习算法库。scikit-learn可以实现数据预处理、分类、回归、降维、模型选择等常用的机器学习算法。

Tensorflow-适用于深度学习且数据处理需求不高的项目。这类项目往往数据量较大,且最终需要的精度更高。

5)可视化分析

数据分析最后一步是撰写数据分析报告,这也是数据可视化的一个过程。在数据可视化方面,Python目前主流的可视化工具有:

Matplotlib-主要用于二维绘图,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

Seaborn-是基于matplotlib产生的一个模块,专攻于统计可视化,可以和Pandas进行无缝链接。

从上图我们也可以得知,在整个数据分析流程,无论是数据提取、数据预处理、数据建模和分析,还是数据可视化,Python目前已经可以很好地支持我们的数据分析工作。

如何用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 数据降维程序请教

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 LDA降维中不能输出指定维度(n_components)的新数据集

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


分享名称:python降维函数,python数组降维
浏览路径:http://scyanting.com/article/hdgieg.html