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
matlab pca降维_手撸PCA(Python七行代码实现)相关推荐
- Python第一行代码
Python第一行代码 前言 'module' object is not callable 前言 其实说起来也不算是Python的第一行代码,或第一次写Python,只不过在学习Python的时候遇 ...
- python人脸识别代码百度ai_强大的AI!Python几行代码,就能预测未来孩子的长相?...
这次,将百度智能云中的人脸识别功能与python结合起来进行实验花了一些时间.结果非常令人满意,而且过程非常简单而不复杂.或许,你可以整合你孩子的外貌.让我们一起敲击键盘. 准备百度人工智能开放平台账 ...
- python 250行代码开发一个贪吃蛇
python 250行代码开发一个贪吃蛇 1. 前提工作准备 2. 全局变量的定义与包的导入 3. 游戏开始界面初始化 4. 游戏界面的设置 4.1 游戏界面,使用一个Point类进行划分 4.2 预 ...
- Python 8行代码模拟鼠标自动删除微信收藏
上回我们提到了用 pyuserinput 进行模拟键盘鼠标操作,结果发现很多同学都回复无法安装成功,即便安装成功了还是存在很多问题.确实,pyuserinput存在不少问题,包括其安装的pymouse ...
- python pca降维_机器学习的降维打击
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | SAMshare(id:SAMshare) 作者 | samshare "本次主要 ...
- python pca降维_机器学习之sklearn中的降维算法
1. PCA与SVD sklearn中降维算法都被包括在模块decomposition中,这个模块本质是一个矩阵分解模块.在过去的十年中,如果要讨论算法进步的先锋,矩阵分解可以说是独树一帜.矩阵分解可 ...
- python pca降维_协方差矩阵的计算、PCA
python默认矩阵X每一行是一个向量,因此一共有m行个数据,对于每一个数据有统计的维度个数为列数n,因此无偏估计用的是对于某个维度的1/(m-1)来归一化得到矩阵A,然后用的是A转置矩阵乘A得到协方 ...
- pca 主成分分析_超越普通PCA:非线性主成分分析
pca 主成分分析 TL;DR: PCA cannot handle categorical variables because it makes linear assumptions about t ...
- 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归
1.梯度下降-矩阵形式 上篇文章介绍了一元线性回归,包括Python实现和sklearn实现的实例.对比,以及一些问题点,详情可以看这里: 链接: 手写算法-Python代码实现一元线性回归 里面封装 ...
最新文章
- 服务器端执行javascript脚本
- 只要你的AI算法能比小白鼠聪明,DeepMind的这20万奖金请拿走
- 第六章|网络编程-socket开发
- TabActivity 切换到后台遇到的问题
- java中主函数抛出的异常怎么解决_java – 从递归函数中抛出异常
- php redis新增数据类型,Redis有哪几种数据类型
- PC如何控制device进入suspend模式
- php判断数组下标,php判断json或者数组格式与给定格式是否一致
- 计算机操作系统指导书,《计算机操作系统》实验指导书-2015
- C++day13 学习笔记
- Windows下的SQL Server备份文件BAK在Linux环境下还原遇到的问题
- 【剑指 offer】(二十二)—— 栈的压入、弹出序列
- 阿里云云呼叫中心——软电话SDK前端接入
- 越南语常用的40句口语
- 猜数字小游戏(随机生成’三剑客‘)
- 二十一、JVM可视化监控工具
- m扩频通信系统在瑞利信道中的误码率性能matlab仿真
- SpringBoot瘦身打包部署
- word文档导航栏中的同级菜单不对齐
- 夺宝网站服务器配置,3月27日服务器公告:夺宝小分队
热门文章
- 这只猫在云端定居了?边缘计算在天猫精灵云应用上的落地实践
- 平台式可复用的应用集成能力,助您敏捷、高效的完成企业数字化转型
- 如何在 Flink 中规划 RocksDB 内存容量?
- 五个问答,告诉你阿里云对象存储如何助力钉钉战胜业务洪峰
- 5年时间,我从开发做到总裁的秘籍--如何提升技术型管理者的领导力
- 可应用于实际的14个NLP突破性研究成果(二)
- Dubbo Mesh | 阿里巴巴中间件团队在 Service Mesh 的实践和探索(附PPT)
- EDAS再升级!全面支持Spring Cloud应用
- 如果还不懂如何使用 Consumer 接口,就来看这篇!
- 什么是Docker?看这一篇文章就够了