主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化

简介: 主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化

本文描述了如何 使用R执行主成分分析 ( PCA )。您将学习如何 使用 PCA_预测_ 新的个体和变量坐标。我们还将提供 _PCA 结果_背后的理论。

在 R 中执行 PCA 有两种通用方法:

  • 谱分解 ,检查变量之间的协方差/相关性
  • 检查个体之间的协方差/相关性的_奇异值分解_

根据 R 的帮助,SVD 的数值精度稍好一些。

可视化

创建基于 ggplot2 的优雅可视化。

演示数据集

我们将使用运动员在十项全能中的表现数据集查看文末了解数据获取方式,这里使用的数据描述了运动员在两项体育赛事中的表现

数据描述:

一个数据框,包含以下13个变量的27个观测值。

X100m

一个数字向量

跳远

一个数字向量

投篮

一个数字向量

高跳

一个数字向量

X400m

数字向量

X110m.hurdle

一个数字向量

飞碟

一个数字向量

撑杆跳高

一个数字向量

绳索

数字向量

X1500米

数字向量

级别

与等级相对应的数字向量

一个数字向量,指定获得的点数

运动会

水平变量 Decastar OlympicG

简而言之,它包含:

  • 训练个体(第 1 到 23 行)和训练变量(第 1 到 10 列),用于执行主成分分析
  • 预测个体(第 24 至 27 行)和预测变量(第 11 至 13 列),其坐标将使用 PCA 信息和通过训练个体/变量获得的参数进行预测。

加载数据并仅提取训练的个体和变量:

head(dec)

计算 PCA

在本节中,我们将可视化 PCA。

  • 进行可视化
  • 计算 PCA
prcomp
  • 可视化 特征值 (_碎石图_)。显示每个主成分解释的方差百分比。

  • 具有相似特征的个人被归为一组。
viz(res )

  • 变量图。正相关变量指向图的同一侧。负相关变量指向图表的相反两侧。
vzpca(res )

  • 个体和变量的双标图
fvbiplot(res )

PCA 结果

# 特征值
eigva
  
# 变量的结果
coord # 坐标
contrib # 对PC的贡献
cos2 # 代表性的质量 
# 个人的结果
coord # 坐标
contrib # 对PC的贡献
cos2 # 代表性的质量

使用 PCA 进行预测

在本节中,我们将展示如何仅使用先前执行的 PCA 提供的信息来预测补充个体和变量的坐标。

预测个人

  • 数据:第 24 到 27 行和第 1 到 10 列。新数据必须包含与用于计算 PCA 的活动数据具有相同名称和顺序的列(变量)。

#  预测个体的数据

in <- dec\[24:27, 1:10\]

  • 预测新个体数据的坐标。使用 R 基函数 predict ():
predict

  • 包括预测个人在内的个人图表:
# 训练个体的图谱
fvca_
# 添加预测个体
fdd(p)

个体的预测坐标可以计算如下:

  • 使用 PCA 的中心和比例对新的个人数据进行中心化和标准化
  • 通过将标准化值与主成分的特征向量(载荷)相乘来计算预测坐标。

可以使用下面的 R 代码:

# 对预测个体进行标准化
ined <- scale
# 个体个体的坐标
rtaton
ird <- t(apply)

补充变量

定性/分类变量

数据集 在第 13 列包含与比赛类型相对应的 补充定性变量

定性/分类变量可用于按组为样本着色。分组变量的长度应与训练个体的数量相同。

groups <- as.factor
fvnd(res.pca
             )

计算分组变量水平的坐标。给定组的坐标计算为组中个体的平均坐标。

library(magrittr) # 管道函数%>%。

# 1. 单个坐标
getind(res)
# 2. 组的坐标
coord %>% >
  as\_data\_frame%>%
  selec%>%
  mutate%>%
  group_b %>%

定量变量

数据:11:12 栏。应与训练个体的数量相同(此处为 23)

quup <- dec\[1:23, 11:12\]
head(quup .sup)

给定定量变量的坐标被计算为定量变量与主成分之间的相关性。

# 预测坐标并计算cos2
quaord <- cor
quaos2 <- qord^2
# 变量的图形,包括补充变量
p <- fviar(reca)
fvdd(p, quord, color ="blue", geom="arrow")

PCA 结果背后的理论

变量的 PCA 结果

在这里,我们将展示如何计算变量的 PCA 结果:坐标、cos2 和贡献:

  • var.coord = 载荷 * 分量标准差
  • var.cos2 = var.coord ^ 2
  • var.contrib. 变量对给定主成分的贡献为(百分比):(var.cos2 * 100)/(成分的总 cos2)
# 计算坐标
#::::::::::::::::::::::::::::::::::::::::
logs <- rotation
sdev <- sdev
vad <- t(apply)

# 计算 Cos2
#::::::::::::::::::::::::::::::::::::::::
vaos2 <- vard^2
head(vars2\[, 1:4\])

# 计算贡献
#::::::::::::::::::::::::::::::::::::::::
comos2 <- apply
cnrib <- function
var.otrb <- t(apply)
head(vaib\[, 1:4\])

PCA 结果

  • ind.coord = res.pca$x
  • 个人的 Cos2。两步:
  • 计算每个个体与 PCA 重心之间的平方距离:d2 = [(var1\_ind\_i - mean\_var1)/sd\_var1]^2 + …+ [(var10\_ind\_i - mean\_var10)/sd\_var10]^2 + …+..
  • 将 cos2 计算为 ind.coord^2/d2
  • 个人对主成分的贡献:100 (1 / number\_of\_individuals)(ind.coord^2 / comp_sdev^2)。请注意,每列所有贡献的总和为 100
# 个人的坐标
#::::::::::::::::::::::::::::::::::
inod <- rpa$x
head(in.c\[, 1:4\])

# 个人的Cos2
#:::::::::::::::::::::::::::::::::
# 1.个体与#PCA重心之间距离的平方
# PCA重心的平方
ceer<- center
scle<- scale
d <- apply(decaive,1,gnce, center, scale)
# 2. 计算cos2。每一行的总和为1
is2 <- apply(inrd, 2, cs2, d2)
head(is2\[, 1:4\])

# 个人的贡献
#:::::::::::::::::::::::::::::::
inib <- t(apply(iord, 1, conib, 
                       sdev, nrow))
head(inib\[, 1:4\])

相关文章
|
Java 测试技术
血的教训--如何正确使用线程池submit和execute方法
血的教训--如何正确使用线程池submit和execute方法
172 1
|
存储 关系型数据库 MySQL
Golang 语言 Web 框架 beego v2 之写操作
Golang 语言 Web 框架 beego v2 之写操作
281 0
|
存储 人工智能 算法
AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)
AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)
1323 0
|
存储 负载均衡 调度
Docker 多主机部署:构建容器集群的最佳实践,助力高可用性与负载均衡
Docker 多主机部署:构建容器集群的最佳实践,助力高可用性与负载均衡
1139 0
|
9月前
|
人工智能 安全 DataX
【瓴羊数据荟】 Data x AI :大模型时代的数据治理创新实践 | 瓴羊数据Meet Up城市行第三期
第三期瓴羊数据Meetup 将于2025年1月3日在线上与大家见面,共同探讨AI时代的数据治理实践。
701 10
【瓴羊数据荟】 Data x  AI :大模型时代的数据治理创新实践 | 瓴羊数据Meet Up城市行第三期
|
10月前
|
前端开发 JavaScript 开发者
掌握 CSS 弹性布局(Flexbox):构建复杂页面布局的高效秘籍与实战案例
CSS弹性布局(Flexbox)是现代网页设计中构建复杂页面布局的高效工具。本文将深入浅出地介绍Flexbox的核心概念、使用技巧及实际应用案例,帮助读者快速掌握这一强大布局方法。
|
机器学习/深度学习 缓存 Java
javax异常: javax.imageio.IIOException: Can't create output stream解决方法
javax异常: javax.imageio.IIOException: Can't create output stream解决方法
|
机器学习/深度学习 边缘计算 PyTorch
PyTorch 与 ONNX:模型的跨平台部署策略
【8月更文第27天】深度学习模型的训练通常是在具有强大计算能力的平台上完成的,比如配备有高性能 GPU 的服务器。然而,为了将这些模型应用到实际产品中,往往需要将其部署到各种不同的设备上,包括移动设备、边缘计算设备甚至是嵌入式系统。这就需要一种能够在多种平台上运行的模型格式。ONNX(Open Neural Network Exchange)作为一种开放的标准,旨在解决模型的可移植性问题,使得开发者可以在不同的框架之间无缝迁移模型。本文将介绍如何使用 PyTorch 将训练好的模型导出为 ONNX 格式,并进一步探讨如何在不同平台上部署这些模型。
1182 2
|
Kubernetes 负载均衡 网络协议
在k8S中,Headless Service是什么?
在k8S中,Headless Service是什么?
|
缓存 中间件 数据库
中间件Write-Through Cache(直写缓存)策略
【5月更文挑战第7天】中间件Write-Through Cache(直写缓存)策略
269 4
中间件Write-Through Cache(直写缓存)策略