matlab pca降维_手撸PCA(Python七行代码实现)

直接上代码:

x = np.random.rand(10,5) #随机生成一组样本
x -= x.mean(axis=0) 	# 见详注1
C = x.T.dot(x)    		# 计算自协方差矩阵
lam,v= lina.eig(C)    	# 特征分解,v是
new_index = np.argsort(lam)[::-1]    # 特征值排序,见详注2
A = -v[:,new_index]					 # 得到A
w = x.dot(A)						 # 计算变换后的特征
r = lam[new_index]/lam.sum()		 # 计算所有特征对应的贡献率

测试一下:

w[:,:2]		# 新特征的前2个>>> array([[-0.3939524518, -0.4184678305],[-0.5907434013,  0.2033346207],[-0.4585388051, -0.111367225 ],[ 0.4552495673, -0.0405062598],[-0.2335902798, -0.4260334862],[ 0.4523182771,  0.039755097 ],[ 0.0902288594,  0.1869543779],[ 0.089419155 ,  0.7656098218],[ 0.7645053936, -0.3353675658],[-0.1748963144,  0.1360884499]])r			# 各个特征值对应的贡献率>>> array([0.4026073116, 0.2589988934, 0.2088275432, 0.0902665298,0.0392997221])

对比SKLEARN实现:

pca = PCA(n_components=2)pca.fit(x)	# x还是最开始那个xpca.explained_variance_ratio_>>> array([0.4026073116, 0.2589988934])	# 前2个特征对应的贡献率(完全一致)pca.transform(x)								# 降维变换(完全一致)>>> array([[-0.3939524518, -0.4184678305],[-0.5907434013,  0.2033346207],[-0.4585388051, -0.111367225 ],[ 0.4552495673, -0.0405062598],[-0.2335902798, -0.4260334862],[ 0.4523182771,  0.039755097 ],[ 0.0902288594,  0.1869543779],[ 0.089419155 ,  0.7656098218],[ 0.7645053936, -0.3353675658],[-0.1748963144,  0.1360884499]]) 

计算变换后的特征差值:

 w1 = w[:,0]w2 = pca.transform(c)[:,0]
((w1-w2)**2).sum()
>>> 2.2980196096428498e-30

贡献率的值:

pca.explained_variance_ratio_ - r[:2]
>>> array([ 1.1102230246e-16, -1.6653345369e-16])

详细注解见: https://blog.csdn.net/cauchy7203/article/details/107421996

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MaxCompute复杂数据分布的查询优化实践

摘要: 2017年中国大数据技术大会于12月7-9日在北京新云南皇冠假日酒店隆重举行, 大会就大数据时代社会各行业的智能化进程和行业实践展开深入讨论。 在12月8日的“大数据分析与生态系统”分论坛上,来自阿里巴巴计算平台事业部的高级技术专家少杰&#xf…

android开源tabview,TabBarView

声明一个TabBarView ,同时将ViewPager传递给它:LayoutInflater inflator (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View v inflator.inflate(R.layout.custom_ab, null);tabBarView (TabBarView) v.findViewById(R.i…

Linux 主机信息 总览

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

AliOS Things异步事件框架Yloop

摘要: Yloop概要 Yloop是AliOS Things的异步事件框架。Yloop借鉴了,libiuv及嵌入式业界常见的event loop,综合考虑使用复杂性,性能,及footprint,实现了一个适合于MCU的事件调度机制。 Yloop概要 Yloop是Al…

这项技术,风头正劲,BAT要力捧!程序员:我彻底慌了...

人工智能离我们还遥远吗?近日,海底捞斥资1.5亿打造了中国首家火锅无人餐厅;阿里酝酿了两年之久的全球首家无人酒店也正式开始运营,百度无人车彻底量产。李彦宏称,这是中国第一款能够量产的无人驾驶乘用车。而阿里的这家…

joi模块验证日期格式_python datetime模块详解

一、datetime模块介绍通过print(dir(datetime)),我们可以看到模块内属性和类:[MAXYEAR, MINYEAR, __builtins__, __cached__, __doc__, __file__, __loader__, __name__, __package__, __spec__, date, datetime, datetime_CAPI, sys, time, timedelta, …

AliOS Things 基于组件化思想的多bin特性

摘要: 今年杭州云栖大会上,AliOS Things正式发布,其中有一个基于组件化思想的多bin特性,这是AliOS Things有专利保护的多bin fota升级解决方案的核心 今年杭州云栖大会上,AliOS Things正式发布,其中有一个基…

case计算机英语,计算机英语常用术语

小编为大家整理了。一起来学习吧!KB:等于1024 ByteMB:等于1024 KBGB:等于1024 MBByte:字节,等于8 bit***8个位的组合,共有256种电路状态***,计算机一个文字以8 bit来表示bit:位,计算机数据最基本的单位,有0…

查看linux是否为虚拟机,以及其它信息,cpu,主机型号,主板型号等

查看属于什么类型主机? dmidecode -s system-product-name物理机: [rootswnode1]# dmidecode -s system-product-name I840-GS虚拟机: [rootgnntdb DbBackup]# dmidecode -s system-product-name VMware Virtual Platform# 总核数 物理CP…

数据库风云:老骥伏枥,新秀辈出

戳蓝字“CSDN云计算”关注我们哦!作者:姜洪军“在数据库技术方面,亚马逊落后甲骨文10至20年”。2018年10月23日,甲骨文(Oracle)创始人、执行董事长拉里埃里森,在甲骨文举办的一次大会的主题演讲…

解读阿里云oss-android/ios-sdk 断点续传(多线程)

摘要: oss sdk 断点续传功能使用及其相关原理 前言 移动端现状 随着移动端设备的硬件水平的不断提高,如今的cpu,内存等方面都大大的超过了一般的pc电脑,因此在现今的程序中,合理的使用多线程去完成一些事情是非常有必…

云钻还在吗 苏宁怎么解除实名认证_快手7天怎么养号,5步简易养号方案送上

今天我们聊一聊,新注册的快手号,7天怎么养号?为什么要养号?什么情况下需要养号?一般来说,新账号、播放量不高、很少热门、违规等情况,都需要养号。养号有什么作用?养号的作用很多&am…

将html表格导出到excel表格,table2excel-将HTML表格内容导出到Excel中_html/css_WEB-ITnose...

简要教程jquery-table2excel是一款可以将HTML表格的内容导出到微软Excel电子表格中的jQuery插件。该插件可以根据你的需要导出表格中的内容,不需要的行可以不导出。它文件体积小,使用非常方便。注意导出的Excel文件的格式,默认导出为.xlsx格式…

RDS读写分离,海量数据一键搞定

简介 RDS为用户提供高透明,高可用,高性能,高灵活的读写分离服务。在最近的版本我们基于短连接的用户进行了优化,使得短连接的用户负载均衡更加完善合理。RDS读写分离有如下特性: 易用/透明性 用户只需要在原来的只读…

7 行代码优雅地实现 Excel 文件导出功能?

文章目录一、前言二、Apache poi、jxl 的缺陷三、阿里出品的 EasyExcel,安利一波四、EasyExcel 解决了什么五、快速上手5.1 添加依赖5.2 七行代码搞定 Excel 生成六、特殊场景支持七、Web 下载示例代码八、需要注意的点九、总结一、前言 关于导出 Excel 文件&#…

Docker精华问答 | 用dockerfile制作镜像

Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!1Q:…

日志服务Flink Connector《支持Exactly Once》

摘要: Flink log connector是阿里云日志服务推出的,用于对接Flink的工具,包含两块,分别是消费者和生产者,消费者用于从日志服务中读数据,支持exactly once语义,生产者用于将数据写到日志服务中&…

两个瓶子水怎样一样多_同事每天比我多睡两个小时!省下70万买了地铁站附近房子 杭州姑娘却感叹买房时一定是脑子进了水……...

都市快报讯 你上下班路上要多久?这个问题最近引起网友热议。 昨天,杭州市城乡建设发展研究院发布11月份城区交通运行分析:从上个月起,杭州的交通运行已经开启“冬季模式”,晚高峰出行进一步集中,拥堵程度环…

为什么电路交换不适合计算机网络,电路交换技术不适合计算机数据通信

5.2 分组交换原理上一节介绍了计算机网络的组成和网络的体系结构,其中通信子网的基本任务就是将数据信息从源点传送到S的点,在源点与目的点之间可能要经过许多个链路和中继节点。链路的功能是传输,而中继节点的功能是交换,也就是从…

'parent.relativePath' points at no local POM

unable to find valid certification path to requested target and ‘parent.relativePath’ points at no local POM 解决方案&#xff1a; 把这个 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent<…