当前位置: 首页 > news >正文

PCA(主成分分析)数据降维技术代码详解

引言

随着大数据时代的到来,我们经常会面临处理高维数据的问题。高维数据不仅增加了计算复杂度,还可能引发“维度灾难”。为了解决这一问题,我们需要对数据进行降维处理,即在不损失太多信息的前提下,将数据从高维空间映射到低维空间。主成分分析(PCA,Principal Component Analysis)就是一种常用的数据降维方法。

简而言之::PCA降维就是把复杂的高维数据简化成更容易理解的低维数据,同时保留最重要的信息,让我们能够更方便地分析和处理这些数据。 

下图为例,所有的数据是分布在三维空间中,PCA将三维数据映射到二维平面u,二维平面由向量<u1,u2>表示,u1与u2垂直

代码演示: 

import numpy as np
from sklearn.decomposition import PCA# 创建一个包含五个数据点和两个特征的二维NumPy数组
data = np.array([[1, 1], [1, 3], [2, 3], [4, 4], [2, 4]])# 创建一个PCA对象,通过设置 n_components 参数为 0.9,表示要保留90%的原始数据的方差
pca = PCA(n_components=0.9)  # 提取90%特征# 对输入的数据进行PCA模型拟合,计算主成分
pca.fit(data)# 使用拟合好的PCA模型对原始数据进行转换,将数据压缩到新的特征空间,压缩后的结果存储在变量 new 中
new = pca.fit_transform(data)  # 压缩后的矩阵# 打印压缩后的数据
print("Compressed Data:")
print(new)# 打印每个选定主成分解释的方差比例。在这里,由于指定了 n_components=0.9,它将打印每个主成分解释的方差比例,直到累积解释的方差达到90%为止
print("Explained Variance Ratios:")
print(pca.explained_variance_ratio_)

 压缩后的矩阵:

经过PCA降维后的数据。这个矩阵包含了降维后的数据点在新的特征空间中的表示。

简单来说,每一行对应于原始数据中的一个数据点,而每一列对应于新的主成分(新的特征)。在这个例子中,由于设置了 n_components=0.9,只有第一个主成分被保留,因此新的特征空间只有一个维度。

主成分解释的方差比例:

在提供的数据集 data 中,每个数据点有两个特征。当应用PCA进行降维时,PCA会尝试找到一个新的特征空间,其中第一个主成分(第一个新特征)具有最大的方差,而第二个主成分(第二个新特征)具有次大的方差。详细推导过程可以看我的这篇博客:PCA降维的推导(超详细)_AI_dataloads的博客-CSDN博客

在数据中,PCA计算出的第一个主成分(新特征)具有约0.83的方差,而第二个主成分具有约0.17的方差。因此,第一个主成分保留了数据中大部分的变化和信息,而第二个主成分包含的信息相对较少。因此,降维后,只保留了第一个主成分,而第二个主成分的信息被丢弃了。

这就是为什么降维后只剩下一个主成分,即[0.83333333, 0.16666667]。这意味着降维后的数据集仅包含一个主成分,其中第一个主成分的贡献占主导地位,而第二个主成分的贡献相对较小,因此被删除。这是PCA的工作原理,它试图捕获数据中最重要的变化并减少维度以减小冗余。

相关文章:

PCA(主成分分析)数据降维技术代码详解

引言 随着大数据时代的到来&#xff0c;我们经常会面临处理高维数据的问题。高维数据不仅增加了计算复杂度&#xff0c;还可能引发“维度灾难”。为了解决这一问题&#xff0c;我们需要对数据进行降维处理&#xff0c;即在不损失太多信息的前提下&#xff0c;将数据从高维空间…...

Git版本控制系统之分支与标签(版本)

目录 一、Git分支&#xff08;Branch&#xff09; 1.1 分支作用 1.2 四种分支管理策略 1.3 使用案例 1.3.1 指令 1.3.2 结合应用场景使用 二、Git标签&#xff08;Tag&#xff09; 2.1 标签作用 2.2 标签规范 2.3 使用案例 2.3.1 指令 2.3.2 使用示例 一、Git分支&…...

JSP运行环境搭建

将安装JSP引擎的计算机称作一个支持JSP的Web服务器。这个服务器负责运行JSP&#xff0c;并将运行结果返回给用户。 JSP的核心内容之一就是编写JSP页面,JSP页面是Web应用程序的重要组成部分之一。一个简单Web应用程序可能只有一个JSP页面,而一个复杂的Web应用程序可能由许多JSP…...

React通过属性 (props) 和状态 (state) 来传递和管理组件的数据

import React, { useState } from react;// 子组件 const ChildComponent (props) > {return (<div><h2>Hello, {props.name}!</h2></div>); }// 父组件 const ParentComponent () > {const [name, setName] useState(John Doe);const handle…...

Web相机和浏览器的二维码扫描方案

Web相机和适用于浏览器的二维码扫描方案 qr-camera 在线体验 | English 功能 支持浏览器扫描二维码支持拍照支持录像功能支持二维码解析和生成 quickstart npm i qr-cameraimport {QRCamera} from qr-camera;function main(){const camera new QRCamera();document.body…...

云端部署ChatGLM-6B

大模型这里更新是挺快的&#xff0c;我参考的视频教程就和我这个稍微有些不一样&#xff0c;这距离教程发布只过去4天而已… 不过基本操作也差不多 AutoDL算力云&#xff1a;https://www.autodl.com/home ChatGLM3&#xff1a;https://github.com/THUDM/ChatGLM3/tree/main Hug…...

设计模式(3)-结构型模式

结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承机制来组织接口和类&#xff0c;后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低&#xff0c;满足“合成复用原则…...

C/C++调试工具 - gdb详解

C/C调试工具 -gdb详解 1 简介 2 常用的命令 3 使用的条件 4 程序调试 4.1 直接运行程序 4.2 断点调试(在某一行) 4.3 断点调试(在函数入口处打断点) 5 调试core文件 5.1 生成core文件的方法 5.2 调试core文件 1 简介 GDB是Linux下非常好用且强大的调试工具。GD…...

传奇GOM引擎微端连接不上如何解决

Gom传奇引擎的微端连不上的原因可能有很多&#xff0c;比如网络问题、服务器配置问题、版本兼容性问题等。1.检查网络连接&#xff1a;首先要确保你的网络连接稳定。如果遇到网络问题&#xff0c;比如网络延迟过高&#xff0c;可能会导致你无法连接到服务器。建议使用稳定的网络…...

Easymesh介绍

1.什么是Easymesh 什么是Easymesh,这里需要介绍到有3个点,分别是WFA、MAP和Easymesh。 WFA是Wi-Fi 联盟,Wi-Fi 联盟是专门针对 Wi-Fi 主题的标准创建机构,并且制定新标准,在 Wi-Fi 基础上提供可用功能,全球成员超过 800 家(SoC、制造商和 SW 公司) MAP 是 Multi-AP Te…...

图像相似度对比方法

1.哈希方法&#xff0c;其中包括均值哈希、插值哈希、感知哈希方法。计算出图片的哈希值&#xff0c;一般使用汉明 距离计算两个图片间的差距。 2.直方图算法&#xff0c;其中包括灰度直方图算法&#xff0c;RGB直方图算法&#xff0c; 3.灰度图算法&#xff1a;MSE、SSIM、…...

C++ 配合图形库实现画线效果

#include<stdio.h> #include <conio.h> #include<math.h> #include <graphics.h> // 引用图形库头文件 #define N 12 int List[N][N];void draw() {for (int i 0; i < N; i) {int x 200 * cos(2 * 3.14 * i / N);int y 200 * sin(2 * 3.1…...

zookeeper应用之分布式屏障

分布式系统中某些节点任务当满足某个条件时才允许继续运行&#xff0c;如果不满足则当前节点需要等待。这个时候就需要一个屏障来阻止节点的处理。ZooKeeper Barrier是ZooKeeper提供的一种用于分布式环境中实现同步和协调的机制。具体逻辑就是&#xff1a; 1、检测某个barrier…...

PDBADMIN 的作用,命名,重建 以及能否DROP

Creating a pluggable database using below SQL: create pluggable database psample1 admin user psample_admin identified by "XXXXXXXXXXXXXXX roles(connect) create_file_destDGEHDB; What if user psample_admin gets dropped accidentally? Is it important?…...

华为L410上制作内网镜像模板02

原文链接&#xff1a;华为L410上制作离线安装软件模板02 hello&#xff0c;大家好啊&#xff0c;今天给大家带来第二篇在内网搭建Apache服务器&#xff0c;用于安装完内网操作系统后&#xff0c;在第一次开机时候&#xff0c;为系统安装软件的文章&#xff0c;今天给大家介绍在…...

美国材料与试验协会ASTM发布新版玩具安全标准 ASTM F963-23

美国材料与试验协会ASTM发布新版玩具安全标准 ASTM F963-23 2023年10月13日&#xff0c;美国材料与试验协会&#xff08;ASTM&#xff09;发布了新版玩具安全标准ASTM F963-23 ​根据CPSIA的规定&#xff0c;当ASTM将ASTM F963的拟定修订意见通知CPSC时&#xff0c;若CPSC认为…...

Postman模拟上传文件

如图&#xff0c;在F12抓到的上传文件的请求 那要在postman上模拟这种上传&#xff0c;怎么操作呢&#xff0c;如图&#xff0c;选中【Select File】选取文件上传即可...

【系统架构设计】架构核心知识: 1 系统工程与信息系统基础

目录 一 系统工程 二 信息系统 三 电子政务 四 企业信息化与电子商务...

加班把数据库重构完毕

加班把数据库重构完毕 本文的数据库重构是基于 clickhouse 时序非关系型的数据库。该数据库适合存储股票数据&#xff0c;速度快&#xff0c;一般查询都是 ms 级别&#xff0c;不需要异步查询更新界面 ui。 达到目标效果&#xff1a;数据表随便删除&#xff0c;重新拉数据以及指…...

Centos(Linux)安装mysql数据库

1. 环境准备 1.1 更新系统和安装依赖项 在进行MySQL安装之前&#xff0c;确保系统包是最新的&#xff0c;并安装必要的依赖项&#xff1a; yum update yum install epel-release yum install wget 1.2 下载MySQL社区版软件包 使用https方式下载MySQL社区版软件包&#xf…...

免费使用云服务器训练深度学习模型

目前应该有很多课程设计或者毕业设计都是关于深度学习的&#xff0c;如果电脑上没有GPU的话训练一个模型需要很长时间&#xff0c;但是目前可以从很多云服务器上免费额度进行训练&#xff08;新用户&#xff09;&#xff0c;这里记录一下使用腾讯云免费进行模型训练的流程&…...

PHP vs Java:谁更适合你的项目?

好的&#xff0c;我们来详细比较一下 PHP 和 Java 这两种编程语言的主要区别&#xff1a;1. 主要用途PHP: 主要用于服务器端的 Web 开发。它最初设计就是用来创建动态网页内容的&#xff0c;是构建网站&#xff08;尤其是内容管理系统 CMS&#xff09;的核心语言之一。Java: 是…...

随记 - 2026 年 4 月 3 日

写在前面1111 字 | 感触 | 朋友 | 经历 | 友谊 | 青春 | 爱与被爱正文 这则随记可能没有一个特定的主题&#xff0c;只是最近期的感想。 昨天中午&#xff0c;我送别了远道而来的大学室友。跨越许多省份&#xff0c;从安徽到四川。而他这次来见我们的理由也很朴素。 “只是很久…...

世界第一个开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf魄

1. 智能软件工程的范式转移&#xff1a;从库集成到原生框架演进 在生成式人工智能&#xff08;Generative AI&#xff09;从单纯的文本生成向具备自主规划与执行能力的“代理化&#xff08;Agentic&#xff09;”系统跨越的过程中&#xff0c;.NET 生态系统正在经历一场自该平台…...

基于LM2596的Buck电路设计

目录&#xff1a; 一、详细的说明 二、设计过程 1、手动计算 2、TI工具设计 三、Layout与散热 1、Layout 2、散热 四、PCBA实测 一、详细说明 LM2596 系列稳压器是为降压开关稳压器提供所有有效功能的单片集成电路&#xff0c;能够驱动 3A 的负载&#xff0c;并且拥有…...

从理论到实践:NMPC轨迹跟踪控制器的非线性优化与Simulink仿真验证

1. NMPC与MPC的核心差异&#xff1a;为什么非线性问题需要特殊处理&#xff1f; 我第一次接触NMPC&#xff08;非线性模型预测控制&#xff09;时&#xff0c;最困惑的问题是&#xff1a;既然MPC已经能解决大多数控制问题&#xff0c;为什么还要大费周章处理非线性版本&#xf…...

原神智能辅助工具BetterGI:革新游戏体验的开源解决方案

原神智能辅助工具BetterGI&#xff1a;革新游戏体验的开源解决方案 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 - …...

终极指南:用Mesa轻松构建智能Agent仿真模型,快速探索复杂系统

终极指南&#xff1a;用Mesa轻松构建智能Agent仿真模型&#xff0c;快速探索复杂系统 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://…...

软件测试工程师如何避免成为“提线木偶”式的工具人?

在快速迭代的软件开发环境中&#xff0c;软件测试工程师常常面临沦为“提线木偶”的风险——机械执行测试用例、被动响应需求&#xff0c;缺乏自主思考与决策权。这种状态不仅限制职业成长&#xff0c;还影响产品质量与团队效率。作为软件测试从业者&#xff0c;如何挣脱工具人…...

ollama部署embeddinggemma-300m:轻量模型在政务知识图谱中的应用

ollama部署embeddinggemma-300m&#xff1a;轻量模型在政务知识图谱中的应用 1. 引言&#xff1a;为什么选择轻量级嵌入模型 在日常政务工作中&#xff0c;工作人员经常需要快速查找相关政策文件、法规条文和办事指南。传统的关键词搜索往往不够精准&#xff0c;比如搜索&quo…...