PCA(Principal Component Analysis,主成分分析)降维

news2024/10/7 12:19:33

1.PCA介绍

来源:视频https://www.bilibili.com/video/BV1E5411E71z/

笔记:https://www.bilibili.com/read/cv23587690?spm_id_from=333.999.0.0&jump_opus=1 

 

 PCA就是找坐标系,使得数据在保留一维数据,损失是最小的。

 目标:只保留一个轴的时候(二维降到一维),信息保留最多

怎么样最好

找到数据分布最分散的方向(方差最大),作为主成分(坐标轴)

  1. 去中心化(把坐标原点放在数据中心)
  2. 找坐标系(找到方差最大的方向)

问题是:怎么找到方差最大的方向?

 

 白数据

 

 拉伸决定了方差最大的方向是横或者纵

旋转决定了方差最大的方向的角度

  

 

 

 

怎么求解PCA

PCA缺点:离群点影响大

PCA与SVD(奇异值分解Singular Value Decomposition)

SVD中的右奇异矩阵V,就是PCA的主成分

PCA需要先求出协方差矩阵:计算量可能很大

SVD有两个好处:

1)一些SVD的实现算法可不求出协方差矩阵C也能求出右奇异矩阵V

2)PCA仅仅使用了SVD的右奇异矩阵V,没有使用到左奇异值矩阵U,那么U有什么用呢?

2.用PCA给将二维数据降成一维

参考:https://blog.csdn.net/Shiraka/article/details/122354007

https://blog.csdn.net/weixin_42010722/article/details/123826197

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
from sklearn.decomposition import PCA

rng = np.random.RandomState(1)
X = [[6,-4],[-3,5],[-2,6],[7,-3]]
X = np.array(X)
plt.scatter(X[:, 0], X[:,-1])


pca = PCA(n_components=2)
pca.fit(X)

print(pca.explained_variance_)#PCA解释方差;
print("新的轴向量:")
print(pca.components_)# PCA分量;
print("各维度投影方差占比分布:")
print(pca.explained_variance_ratio_)
print("各点在新轴上的投影:")
print(pca.transform(X))


def draw_vector(v0, v1, ax=None):
    ax = ax or plt.gca()
    arrowprops=dict(arrowstyle='->',
                    linewidth=2,
                    shrinkA=0, shrinkB=0)
    ax.annotate('', v1, v0, arrowprops=arrowprops)

# plot data
plt.scatter(X[:, 0], X[:, 1], alpha=0.2)
for length, vector in zip(pca.explained_variance_, pca.components_):
    v = vector * 3 * np.sqrt(length)
    draw_vector(pca.mean_, pca.mean_ + v)
plt.axis('equal');


pca = PCA(n_components=1) # 降到一维
pca.fit(X)
print("新的轴向量:")
print(pca.components_)
print("各维度投影方差占比分布:")
print(pca.explained_variance_ratio_)
print("各点在新轴上的投影:")
print(pca.transform(X))

 

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

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

相关文章

Aescripts StyleX for AE(AI技术风格化插件)

Aescripts StyleX一款非常实用的视频风格和效果自动化处理插件,它提供了多种风格和效果、自动化处理、可自定义选项、支持多种分辨率、简单易用的界面和工具等功能,让用户可以轻松地为视频添加不同的风格和效果,并提高效率和准确性。StyleX 插…

基于STM32+RC522设计的门禁系统

一、项目背景 门禁系统是现代社会中非常重要的安全控制系统之一,其功能是在保障建筑物安全的同时,为合法用户提供便利。当前设计一种基于STM32+RC522的门禁系统设计方案,通过RFID-RC522模块实现了对用户卡的注册、识别及身份验证,通过控制SG90舵机实现门锁的开关,具有较高…

物联网架构和技术:如何实现物物互联和智能化控制

第一章:引言 物联网是一种新兴的技术领域,通过将物理设备、传感器和软件等连接起来,可以实现设备之间的互联互通,让各种设备可以进行数据交换和智能化控制。在这个数字化时代,物联网已经成为了连接万物的关键技术之一…

WiFi(Wireless Fidelity)基础(五)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

程序设计入门——C语言 2023年5月9日

程序设计入门——C语言 一、基础理解1、什么是计算机?如何用计算机做事情?什么是应用软件?编程语言干啥的?计算机与人脑?学习编程能干啥?2、计算机-程序-算法3、解释语言vs编译语言 课程来源:链…

测试老鸟总结,性能测试常见瓶颈分析与调优,“我“也要卷出测试圈...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试过程中&a…

KingbaseES V8R3 集群运维系列 -- failover切换后集群自动恢复

​ 案例说明: KingbaseES V8R3集群默认在触发failover切换后,为保证数据安全,原主库需要通过人工介入后,恢复为新的备库加入到集群。在无人值守的现场环境,需要在触发failover切换后,主库可以自动恢复为新备…

jvm之图形化工具

写在前面 本文一起看下jvm图形化相关的工具,图形化的工具相比于命令行工具的好处是更加直观,也更容易分析问题。 1:jconsole 1.1:准备要连接的jvm进程 定义如下的类; package a.b; import java.util.concurrent.*…

Linux内核架构和工作原理

**前言:**作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内…

JavaScript模板引擎Template.js基本使用详解

template.js是一款JavaScript模板引擎,提供一套模板语法,简单好用,开发者可以写一个模板区块,每次传入的数据,生成对应数据产生的HTML片段,渲染不同的效果。官网:简洁语法版 https://github.com…

天猫数据分析:2023年Q1天猫净水器品牌销售TOP10排行榜

水质的好坏更是与人们的身体健康密切相关。随着社会经济的发展,居民生活水平提升,人们对饮用水质量、安全性的要求也不断提高,净水器也因此逐渐成为现代生活的必需品。 根据鲸参谋电商数据显示,2023年Q1在天猫平台上,净…

微服务#1 注册中心eareka和nacos

目录 注册中心: eureka 服务调用关系 eureka的作用 在Eureka架构中,微服务角色有两类 搭建EurekaServer服务, 服务注册和服务发现 Ribbon 负载均衡原理 ​编辑 负载均衡策略 饥饿加载 注册中心: nacos nacos服务搭建, 服务注册和发现 nacos服务集群属性 …

【shell脚本里的数组】

目录 一、数组的定义方法1、定义数组1.1、使用shell脚本来写出怎么查看这个数组有没有缺少元素1.2、使用shell脚本,来生成数组1.3、元素的切片 二、数组追加元素三、传输和传出1、向函数传入数组的值2、从函数返回数组 一、数组的定义方法 ( 20 10 60…

零基础入门人工智能学习路线:数学、编程、机器学习、深度学习和实践项目

如果你想开始学习人工智能,但是对于如何开始感到困惑,那么这里有一些零基础入门学习路线的建议,可以帮助你更好地理解和掌握人工智能的基础知识。 数学基础 作为人工智能的核心基础,数学知识是必不可少的。尤其是线性代数和概率论…

线性结构-链表

链表也是一种常用的线性数据结构,与数组不同的是,链表的存储空间并不连续,它是用一组地址任意的存储单元来存放数据的,也就是将存储单元分散在内存的各个地址上。 这些地址分散的存储单元叫做链表的节点,链表就是由一个…

亲测好用|甲方、专家和领导,用三维模型汇报方案如何投其所好?

身为设计方的你,有没有这样的经历: ➤ 一个非常优秀的方案未能被甲方采纳,反而甲方选择了一个不如自己的方案,造成了很大的遗憾; ➤ 在讲述自己的设计方案的时候,经常越说越散,甚至到了最后自…

ACM - 搜索与图论 - 基础(搜索 + 拓扑 + 最小生成树 + 最短路 + 二分图 + 欧拉路 + 最大流 + 其它)

搜索与图论 一、搜索1、分治矩阵二分 / 普通二分 模板万能二分模板 2、DFS例题1、AcWing 842. 排列数字例题2、AcWing 843. n-皇后问题 3、BFS例题1、AcWing 844. 走迷宫 (入门经典)例题2、到达 "12345678x":AcWing 845. 八数码 二、图论写在前面1、图的存…

自学软件测试,从10K到40K的技术路线,也就是这些东西...

如果有一天我从梦中醒来时,发现自己的几年自动化测试工程师经验被抹掉,重新回到了一个小白的状态。我想要重新自学自动化测试,然后找到一份自己满意的测试工作,我想大概只需要6个月的时间就够了,如果比较顺利的话&…

Cursor--一款强大的国内智能AI语言模型(据说对接了chatgpt4)

简介 Cursor是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码。 它支持多种编程语言,如 Python, Java, C#, JavaScript 等,并且可以根据你的输入和需求自动生成代码片段…

eSIM证书要求-涉及规范SGP.22-SGP.26-1

文档 Official Document SGP.22 – RSP Technical Specification v2.4 Official Document SGP.26 - RSP Test Certificates Definition ,包含官方测试证书 证书链的定义 三个曲线 为了便于互操作性,本规范仅限于以下三个曲线 AlgorithmIdentifier算法标…