博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python实现PCA算法原理
阅读量:4550 次
发布时间:2019-06-08

本文共 1259 字,大约阅读时间需要 4 分钟。

PCA主成分分析法的数据主成分分析过程及python原理实现

1、对于主成分分析法,在求得第一主成分之后,如果需要求取下一个主成分,则需要将原来数据把第一主成分去掉以后再求取新的数据X’的第一主成分,即为原来数据X的第二主成分,循环往复即可。

2、利用PCA算法的原理进行数据的降维,其计算过程的数学原理如下所示,其降维的过程会丢失一定的信息,因此采用恢复过程恢复原来的高维数据后,它会恢复为原来数据在新的主成分上的映射点,而不再是原来的坐标点

(1)高维数据的降维(从n维降到k维数据)

(2)从降维得到k维数据恢复到原来的n维数据集

 

3、具体的数据降维实现原理代码如下所示:

import  numpy as np import matplotlib.pyplot as plt x=np.empty((100,2)) x[:,0]=np.random.uniform(0.0,100.0,size=100) x[:,1]=0.75*x[:,0]+3.0*np.random.normal(0,3,size=100) plt.figure() plt.scatter(x[:,0],x[:,1]) plt.show() #demean操作函数定义 def demean(x):     return x-np.mean(x,axis=0) print(x) print(np.mean(x,axis=0)) print(demean(x)) print(np.mean(demean(x),axis=0)) x_demean=demean(x) #梯度上升法的函数定义 def f(w,x):     return np.sum((x.dot(w))**2)/len(x) def df_math(w,x):     return x.T.dot(x.dot(w))*2/len(x) def df_debug(w,x,epsilon=0.00001):     res=np.empty(len(x))     for i in range(len(x)):         w1=w.copy()         w1[i]=w1[i]+epsilon         w2= w.copy()         w2[i] =w2[i]-epsilon         res[i]=(f(w1,x)-f(w2,x))/(2*epsilon)     return res def derection(w):     return w/np.linalg.norm(w) def gradient_ascent1(x,eta,w_initial,erro=1e-8, n=1e6):     w=w_initial     w=derection(w)     i=0     while i

 

转载于:https://www.cnblogs.com/Yanjy-OnlyOne/p/11323342.html

你可能感兴趣的文章
运算符
查看>>
11.软件项目管理与敏捷方法——风险管理笔记
查看>>
微服务监控zipkin、skywalking以及日志ELK监控系列
查看>>
4553: [Tjoi2016&Heoi2016]序列
查看>>
3027 线段覆盖 2
查看>>
CF 959 E. Mahmoud and Ehab and the xor-MST
查看>>
【niubi-job——一个分布式的任务调度框架】----niubi-job这下更牛逼了!
查看>>
移动支付[1]——MAC加密
查看>>
c++深/浅拷贝 && 构造函数析构函数调用顺序练习题
查看>>
java读取文件夹下所有文件并替换文件每一行中指定的字符串
查看>>
HTML5规范-相关资料链接(大多都是英文文档)
查看>>
[转]OData/WebApi
查看>>
[转]高颜值、好用、易扩展的微信小程序 UI 库,Powered by 有赞
查看>>
[转]SQL Server如何启用xp_cmdshell组件
查看>>
[转]微擎应用笔记3--manifest.xml文件使用说明
查看>>
Codeforces 1000C Covered Points Count 【前缀和优化】
查看>>
python高效读取文件、文件改写
查看>>
gulp
查看>>
pgsql查询优化之模糊查询
查看>>
[转]-Gradle使用手册(三):构建任务
查看>>