从0开始学习R语言--Day11--主成分分析

news2025/7/19 3:56:08

主成分分析(PCA)

PCA是一种降维技术,它把一堆相关的变量(比如身高、体重、年龄)转换成少数几个不相关的新变量(叫“主成分”),这些新变量能最大程度保留原始数据的信息。

核心理念
  1. 降维:假设我们有10个指标,PCA可以帮我们压缩成2~3个关键指标,方便进一步可视化或分析。

  2. 去相关性:新生成的主成分之间互不相关,避免重复信息。

  3. 保留最大方差:第一个主成分(PC1)方向是数据变化最大的方向,第二个(PC2)是剩余变化最大的方向,依此类推。

其中,数据变化最大的方向意思是,PC1能解释原始数据中最大比例的差异(方差)。

一般来说,我们会通过PCA实现可视化高维数据(把4维数据压缩成2维图),去除噪声和冗余变量(删除重复的测量指标)和简化机器学习模型(减少特征数量,加快计算速度)。

下面我们照例生成一组数据来理解PCA:

set.seed(123)
height <- rnorm(100, mean = 170, sd = 10)                     # 身高
weight <- height * 0.6 + rnorm(100, mean = 0, sd = 5)         # 体重 = 0.6*身高 + 噪声
age <- rnorm(100, mean = 30, sd = 5)                          # 年龄
data <- data.frame(height, weight, age)                       


# 执行PCA(默认中心化和标准化)
pca_result <- prcomp(data, scale = TRUE)  

# 查看主成分
summary(pca_result)  # 显示各主成分的方差贡献率

plot(pca_result, type = "l", main = "PCA方差贡献率")

# 绘制前两个主成分的散点图
library(ggplot2)
pca_data <- as.data.frame(pca_result$x)
ggplot(pca_data, aes(PC1, PC2)) + 
  geom_point() + 
  labs(title = "PCA降维结果(PC1 vs PC2)")

输出:

Importance of components:
                          PC1    PC2     PC3
Standard deviation     1.3280 0.9867 0.51287
Proportion of Variance 0.5878 0.3245 0.08768
Cumulative Proportion  0.5878 0.9123 1.00000

首先,Standard deviation中的PC1的数值最大,代表其携带信息最多,从这个身高的例子来讲,就是PC1的数据(可能是体型大小)其实就反映了身高与体重之间的变化,要注意PCA所生成的变量,不再是原始数据集的变量,他只是蕴含了其中的信息;从Proportion of Variance可以看出PC1和PC2就共同解释了模型中90%左右的信息,这就代表可以尝试舍去PC3去建模了,也就把数据从三维降为了二维,从而能画出二维图。

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

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

相关文章

AI辅助写作 从提笔难到高效创作的智能升级

你是否经历过面对空白文档头脑空白的绝望&#xff1f;是否为整理实验数据通宵达旦&#xff1f;在这个信息爆炸的时代&#xff0c;一种新型写作方式正悄悄改变知识工作者的创作模式—AI辅助写作。这种技术既不像科幻作品里的自动生成机器人&#xff0c;也非简单的文字模板&#…

C++23中std::span和std::basic_string_view可平凡复制提案解析

文章目录 一、引言二、相关概念解释2.1 平凡复制&#xff08;Trivially Copyable&#xff09;2.2 std::span2.3 std::basic_string_view 三、std::span和std::basic_string_view的应用场景3.1 std::span的应用场景3.2 std::basic_string_view的应用场景 四、P2251R1提案对std::…

[yolov11改进系列]基于yolov11引入感受野注意力卷积RFAConv的python源码+训练源码

[RFAConv介绍] 1、RFAConv 在传统卷积操作中&#xff0c;每个感受野都使用相同的卷积核参数&#xff0c;无法区分不同位置的信息差异&#xff0c;这都限制了网络性能。此外&#xff0c;由于空间注意力以及现有空间注意力机制的局限性&#xff0c;虽然能够突出关键特征&#xf…

Springboot引入Spring Cloud for AWS的配置中心(Parameter Store和Secrets)

问题 现在手上有一个老Spring2.5.15项目&#xff0c;需要使用AWS Parameter Store作为配置中心服务。 思路 引入这个Spring版本对应的Spring Cloud&#xff0c;然后再引入Spring Cloud AWS相关组件。然后&#xff0c;在AWS云上面准备好配置&#xff0c;然后&#xff0c;启动…

打破云平台壁垒支持多层级JSON生成的MQTT网关技术解析

工业智能网关的上行通信以MQTT协议为核心&#xff0c;但在实际应用中&#xff0c;企业往往需要将数据同时或分场景接入多个公有云平台&#xff08;如华为云IoT、阿里云IoT、亚马逊AWS IoT&#xff09;&#xff0c;甚至私有化部署的第三方平台。为实现这一目标&#xff0c;网关需…

SAAS架构设计2-流程图-用户与租户之间对应关系图

在SAAS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;结构中&#xff0c;用户与租户之间的关系可以通过一对一和多对多两种方式来定义。这两种关系模式各自有着不同的应用场景和特点。 用户和租户的关系&#xff08;一对一&#xff09; 一对一关系 在这…

TypeScript入门到精通

学习ts之前&#xff0c;我们首先了解一下我们为什么要学ts,ts是什么&#xff1f;ts比js有不同呢&#xff1f; TypeScript 是 JavaScript 的一个超集&#xff0c;是由微软开发的自由和开源的编程语言&#xff0c;支持 ECMAScript 6 标准&#xff08;ES6 教程&#xff09;。在 Ja…

三、Docker目录挂载、卷映射、网络

目录挂载 如果主机目录为空&#xff0c;则容器内也为空 -v表示目录挂载 冒号前面的是主机上的目录&#xff0c;冒号后面的是docker容器里面的地址 修改主机上的文件&#xff0c;发现docker容器里面的内容也随之改变。 同样修改docker容器里面的内容&#xff0c;主机上的文件…

迪米特法则 (Law of Demeter, LoD)

定义&#xff1a;迪米特法则(Law of Demeter, LoD)&#xff1a;一个软件实体应当尽可能少地与其他实体发生相互作用。 迪米特法则&#xff08;Law of Demeter&#xff0c;LoD&#xff09;又叫作最少知识原则&#xff08;Least Knowledge Principle&#xff0c;LKP)&#xff0c;…

【R语言编程绘图-函数篇】

基础函数绘制 R语言可通过curve()函数直接绘制数学函数图形&#xff0c;无需预先生成数据点。例如绘制正弦函数&#xff1a; curve(sin, from -pi, to pi, col "blue", lwd 2)自定义函数绘制 对于用户自定义函数&#xff0c;需先定义函数表达式&#xff1a; …

训练自己的yolo模型,并部署到rk3588上

文章目录 1. 训练自己的模型2. pt转onnx3. onnx转rknn4. 后续…… 1. 训练自己的模型 如何训练自己的yolo模型&#xff0c;网络上已经有足够多的教程&#xff0c;这里只简单的描述一下。如果已经有了自己的.pt模型&#xff0c;那么可以直接跳转到第二节。 此处是以检测模型的…

以少学习:通过无标签数据从大型语言模型进行知识蒸馏

Learning with Less: Knowledge Distillation from Large Language Models via Unlabeled Data 发表&#xff1a;NNACL-Findings 2025 机构&#xff1a;密歇根州立大学 Abstract 在实际的自然语言处理&#xff08;NLP&#xff09;应用中&#xff0c;大型语言模型&#xff08…

Qt qml Network error问题

最近在学习Qt&#xff0c;需要调用地图&#xff0c;所以用到了QML&#xff0c;但是却遇到了这样的问题 d://qt_project//run//main.qml: Network error 现在我展示一下我的main文件的代码&#xff1a; #include <QApplication> #include <QQuickView> #include &l…

Spring Boot微服务架构(六):伪装的微服务有哪些问题?

伪装的微服务有哪些问题&#xff1f; 伪装的微服务架构&#xff08;即表面上模仿微服务设计&#xff0c;但未真正遵循其核心原则的系统&#xff09;通常具备以下特征点&#xff0c;这些特征可能导致系统复杂度增加、维护困难或性能下降&#xff1a; ​​1. 服务间强耦合​​ …

恶意npm与VS Code包窃取数据及加密货币资产

60个npm包窃取系统敏感信息 安全研究人员在npm软件包注册表中发现60个恶意组件&#xff0c;这些组件能够收集主机名、IP地址、DNS服务器和用户目录信息&#xff0c;并将其发送至Discord平台控制的终端节点。据Socket安全研究员Kirill Boychenko上周发布的报告显示&#xff0c;…

什么是3D全景视角?3D全景有什么魅力?

什么是3D全景视角&#xff1f;3D全景视角的全面解析。 3D全景视角&#xff0c;又称为3D全景技术或3D实景技术&#xff0c;是新兴的富媒体技术&#xff0c;基于静态图像和虚拟现实&#xff08;VR&#xff09;技术&#xff0c;通过全方位、无死角地捕捉和展示环境&#xff0c;为…

【Mini-F5265-OB开发板试用测评】按键控制测试

本文介绍了如何使用按键控制 MCU 引脚的输出电平。 原理 由原理图可知 板载用户按键 K1 和 K2 分别与主控的 PB0 和 PB1 相连。 代码 #define _MAIN_C_#include "platform.h" #include "gpio_key_input.h" #include "main.h"int main(void) …

每日Prompt:古花卷

提示词 主体对象 一本展开的古画卷 古画卷内呈现的内容 一片微型春秋鲁国&#xff0c;有古代马车&#xff0c;孔子乘坐周游列国&#xff0c;颜回、子路、子贡、曾参紧随其后 古画卷的外观状态 表面已经开裂和风化&#xff0c;呈现出年代感和历史感 与文字描述的首句一致&…

夏季用电高峰如何防患于未“燃”?电力测温技术守护城市生命线

随着夏季来临用电负荷激增&#xff0c;电力系统面临严峻的高温考验&#xff0c;电力测温技术的重要性愈发凸显&#xff0c;电力安全是城市生命线工程的核心环节&#xff0c;电力测温已从"可选功能"升级为"必要的基础安全设施"。通过实时感知、智能分析和快…

【创造型模式】抽象工厂方法模式

文章目录 抽象工厂方法模式产品族与产品等级结构抽象工厂方法模式的角色和职责抽象工厂方法模式的实现抽象工厂方法模式的优缺点适用场景 抽象工厂方法模式 工厂方法模式引入了“工厂等级结构”&#xff0c;解决了简单工厂方法过分依赖单一工厂的问题。但是工厂方法模式存在的一…